rb-notifu 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -16,10 +16,7 @@ There are three possible alternatives to Growl on windows:
16
16
  ```ruby
17
17
  require 'rb-notifu'
18
18
 
19
- RbNotifu::show({
20
- :message => "test",
21
- :type => :warn
22
- })
19
+ p RbNotifu::show :message => "test", :type => :warn
23
20
  ```
24
21
 
25
22
  ## Available options
@@ -37,8 +34,8 @@ RbNotifu::show({
37
34
  :nosound Do not play a sound when the tooltip is displayed
38
35
  :noquiet Show the tooltip even if the user is in the quiet period that follows his very first login (Windows 7 and up)
39
36
  :xp Use IUserNotification interface event when IUserNotification2 is available
40
- ```
41
37
 
42
38
  ## TODO
43
39
 
44
40
  - Use FFI instead of embedded executable file
41
+ - While showing message it blocks. Need to add thread and :noblock option
data/Rakefile CHANGED
@@ -1,2 +1,18 @@
1
1
  require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+ task :default => :spec
7
+
8
+ namespace(:spec) do
9
+ desc "Run all specs on multiple ruby versions (requires pik)"
10
+ task(:portability) do
11
+ %w[187 192 161].each do |version|
12
+ system "cmd /c echo -----------#{version}------------ & " +
13
+ "pik use #{version} & " +
14
+ "bundle install & " +
15
+ "rake spec"
16
+ end
17
+ end
18
+ end
@@ -1,61 +1,75 @@
1
- require 'pathname'
2
- module RbNotifu
3
-
4
- @executable = Pathname.new(__FILE__).parent.parent.realpath.to_s + '/bin/notifu.exe'
5
-
6
- @option_to_flag = {
7
- :type => "t",
8
- :display => "d",
9
- :title => "p",
10
- :message => "m",
11
- :icon => "i",
12
- :baloon => "e",
13
- :nosound => "q",
14
- :noquiet => "w",
15
- :xp => "xp"
16
- }
17
-
18
- @option_default = {
19
- :type => :info,
20
- :display => 3000,
21
- :title => "rb-notifu",
22
- :message => " ",
23
- :icon => false,
24
- :baloon => false,
25
- :nosound => false,
26
- :noquiet => false,
27
- :xp => false
28
- }
29
-
30
- #:type The type of message to display values are:
31
- # info The message is an informational message
32
- # warn The message is an warning message
33
- # error The message is an error message
34
- #:display The number of milliseconds to display (omit or 0 for infinit)
35
- #:title The title (or prompt) of the ballon
36
- #:message The message text
37
- #:icon Specify an icon to use ("parent" uses the icon of the parent process)
38
- #:baloon Enable ballon tips in the registry (for this user only)
39
- #:nosound Do not play a sound when the tooltip is displayed
40
- #:noquiet Show the tooltip even if the user is in the quiet period that follows his very first login (Windows 7 and up)
41
- #:xp Use IUserNotification interface event when IUserNotification2 is available
42
- def self.show(options = {})
43
- flags = ""
44
- @option_default.each do |key, value|
45
- flag = options.key?(key) ? options[key] : value
46
- if flag
47
- flags += "/" + @option_to_flag[key] + " " + self.escape(flag) + " "
48
- end
49
- end
50
- system "#{@executable} #{flags}"
51
- end
52
-
53
- def self.escape(value)
54
- if value
55
- return '"' + value.to_s.gsub('"','\"') + '"'
56
- else
57
- return ''
58
- end
59
- end
60
-
61
- end
1
+ require 'pathname'
2
+ module RbNotifu
3
+
4
+ @executable = Pathname.new(__FILE__).parent.parent.realpath.to_s + '/bin/notifu.exe'
5
+
6
+ @option_to_flag = {
7
+ :type => "t",
8
+ :display => "d",
9
+ :title => "p",
10
+ :message => "m",
11
+ :icon => "i",
12
+ :baloon => "e",
13
+ :nosound => "q",
14
+ :noquiet => "w",
15
+ :xp => "xp"
16
+ }
17
+
18
+ @option_default = {
19
+ :type => :info,
20
+ :display => 3000,
21
+ :title => "rb-notifu",
22
+ :message => " ",
23
+ :icon => false,
24
+ :baloon => false,
25
+ :nosound => false,
26
+ :noquiet => false,
27
+ :xp => false
28
+ }
29
+
30
+ #Params:
31
+ # :type The type of message to display values are:
32
+ # info The message is an informational message
33
+ # warn The message is an warning message
34
+ # error The message is an error message
35
+ # :display The number of milliseconds to display (omit or 0 for infinit)
36
+ # :title The title (or prompt) of the ballon
37
+ # :message The message text
38
+ # :icon Specify an icon to use ("parent" uses the icon of the parent process)
39
+ # :baloon Enable ballon tips in the registry (for this user only)
40
+ # :nosound Do not play a sound when the tooltip is displayed
41
+ # :noquiet Show the tooltip even if the user is in the quiet period that follows his very first login (Windows 7 and up)
42
+ # :xp Use IUserNotification interface event when IUserNotification2 is available
43
+ #
44
+ #Returns
45
+ # 0 Registry was succesfully edited. Only returned when /e is used with no other argument.
46
+ # 1 There was an error in one the argument or some required argument was missing.
47
+ # 2 The balloon timed out waiting. The user didn't click the close button or the balloon itself.
48
+ # 3 The user clicked the balloon.
49
+ # 4 The user closed the balloon using the X in the top right corner.
50
+ # 5 IUserNotification class object or interface is not supported on this version of Windows.
51
+ # 6 The user clicked with the right mouse button on the icon, in the system notification area (Vista and later)
52
+ # 7 The user clicked with the left mouse button on the icon, in the system notification area (Vista and later)
53
+ # 8 A new instance of Notifu dismissed a running instace
54
+ # 255 There was some unexpected error.
55
+ def self.show(options = {})
56
+ flags = ""
57
+ @option_default.each do |key, value|
58
+ flag = options.key?(key) ? options[key] : value
59
+ if flag
60
+ flags += "/" + @option_to_flag[key] + " " + self.escape(flag) + " "
61
+ end
62
+ end
63
+ system "#{@executable} #{flags}"
64
+ return $?.exitstatus
65
+ end
66
+
67
+ def self.escape(value)
68
+ if value
69
+ return '"' + value.to_s.gsub('"','\"') + '"'
70
+ else
71
+ return ''
72
+ end
73
+ end
74
+
75
+ end
@@ -1,3 +1,3 @@
1
1
  module RbNotifu
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -26,4 +26,7 @@ Gem::Specification.new do |s|
26
26
  ]
27
27
  #s.executables = ["notifu.exe", "notifu64.exe"]
28
28
  s.require_paths = ["lib"]
29
+ s.add_development_dependency 'bundler'
30
+ s.add_development_dependency 'rspec'
31
+
29
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb-notifu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,29 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2011-05-20 00:00:00.000000000 +03:00
13
13
  default_executable:
14
- dependencies: []
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: &2981976 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *2981976
26
+ - !ruby/object:Gem::Dependency
27
+ name: rspec
28
+ requirement: &1989096 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *1989096
15
37
  description: Notification system for windows. Trying to be Growl. Ruby wrapper around
16
38
  notifu (http://www.paralint.com/projects/notifu/index.html)
17
39
  email: