nserver 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/History.txt +6 -0
  2. data/README.txt +11 -0
  3. data/lib/nserver.rb +30 -10
  4. metadata +2 -2
@@ -1,3 +1,9 @@
1
+ == 1.1.3 / 2007-11-10
2
+
3
+ * Minor updates
4
+ * Support for receiving message objects
5
+ * Support in client for sending message objects. Messy (sort of) but works.
6
+
1
7
  == 1.1.2 / 2007-11-09
2
8
 
3
9
  * Bugfix in RNotify require (server won't work for anybody. Ooops)
data/README.txt CHANGED
@@ -41,6 +41,16 @@ Assuming you have a NServer::Server instance running, you can use the client lik
41
41
 
42
42
  NServer::Client.notify("My test message goes here").
43
43
 
44
+ There is also support for building messages to send.
45
+
46
+ require 'nserver'
47
+
48
+ msg = NServer::Message.new
49
+ msg.text = "My text"
50
+ msg.title = "Test Message"
51
+
52
+ NServer::Client.notify( msg )
53
+
44
54
  Or, if you want a easy command line client:
45
55
 
46
56
  % nclient "Message"
@@ -58,6 +68,7 @@ If you're NServer is listening on another mahcine, you can:
58
68
  * daemons
59
69
  * rnotify
60
70
  * gtk
71
+ * yaml
61
72
 
62
73
  == INSTALL:
63
74
 
@@ -8,9 +8,10 @@ end
8
8
  require 'gserver'
9
9
  require 'socket'
10
10
  require 'ipaddr'
11
+ require 'yaml'
11
12
 
12
13
  module NServer
13
- VERSION = '1.1.2'
14
+ VERSION = '1.1.3'
14
15
  class Server < GServer
15
16
  # Create a NServer::Server instance
16
17
  #
@@ -52,17 +53,17 @@ module NServer
52
53
  @allowed_clients = opts[:allow]
53
54
 
54
55
  Notify.init("Notification Server")
55
- tray_icon = Gtk::StatusIcon.new
56
- tray_icon.icon_name = opts[:tray_icon]
56
+ @tray_icon = Gtk::StatusIcon.new
57
+ @tray_icon.icon_name = opts[:tray_icon]
57
58
  #tray_icon.file = File.join( File.dirname(__FILE__), 'icons', 'default.png')
58
- tray_icon.tooltip = "NServer"
59
+ @tray_icon.tooltip = "NServer"
59
60
 
60
- @notification = Notify::Notification::new("X", nil, nil, tray_icon)
61
+ @notification = Notify::Notification::new("X", nil, nil, @tray_icon)
61
62
  @notification.timeout = opts[:msg_timeout]
62
63
 
63
64
  Thread.new { Gtk.main }
64
65
  sleep 5
65
- tray_icon.embedded? || raise("Failed to setup tray icon.")
66
+ @tray_icon.embedded? || raise("Failed to setup tray icon.")
66
67
 
67
68
  ## Setup msg thread
68
69
  @msg_thread = Thread.new(self, @check_interval) do |server, intv|
@@ -75,8 +76,9 @@ module NServer
75
76
 
76
77
  # Display the message
77
78
  def notify(msg)
78
- @notification.update("Message Received", msg.text, nil)
79
+ @notification.update((msg.title or "Message Received"), msg.text, nil)
79
80
  @notification.urgency = msg.priority
81
+ #@tray_icon.tooltip = msg.title
80
82
  @notification.show
81
83
  end
82
84
 
@@ -85,6 +87,11 @@ module NServer
85
87
  @msg_list << Message.new(msg, priority)
86
88
  end
87
89
 
90
+ # Add an actual message object
91
+ def add_message_obj(msg)
92
+ @msg_list << msg
93
+ end
94
+
88
95
  # Display the next message, if any.
89
96
  def process
90
97
  if @msg_list.size > 0
@@ -113,6 +120,11 @@ module NServer
113
120
  if msg == "EXITNOW"
114
121
  notify("Shutting down.")
115
122
  self.shutdown
123
+ elsif msg =~ /^--- !ruby\/object:NServer::Message/
124
+ ## Yaml message?
125
+ m = YAML.load( msg )
126
+ add_message_obj(m)
127
+ io.puts "OK"
116
128
  else
117
129
  priority = :normal
118
130
  if msg =~ /^(.*?):/
@@ -150,12 +162,18 @@ module NServer
150
162
  @host_ip = ( opts[:host] or '127.0.0.1' )
151
163
  @host_port = ( opts[:port] or '10001' ).to_i
152
164
  end
153
-
165
+
166
+ # Send a notification. If `msg` is a Message object, send it, and ignore
167
+ # supplied priority
154
168
  def notify( msg, priority = :normal )
155
169
  begin
156
170
  sock = TCPSocket.new(@host_ip, @host_port)
157
171
  sleep(0.1) ## Needs delay, or wait until prompt.
158
- sock.write("#{priority.to_s.upcase}:#{msg}\n.\n")
172
+ if msg.is_a? NServer::Message
173
+ sock.write( msg.to_yaml + "\n.\n" )
174
+ else
175
+ sock.write("#{priority.to_s.upcase}:#{msg}\n.\n")
176
+ end
159
177
  sock.close
160
178
  rescue Errno::ECONNREFUSED
161
179
  raise NoServerAvailable.new
@@ -207,11 +225,13 @@ module NServer
207
225
  PRIORITIES = [:low, :normal, :critical]
208
226
 
209
227
  attr :text, :writable => true
228
+ attr :title, :writable => true
210
229
  attr :priority, :writable => true
211
230
 
212
- def initialize( text = "", priority = :normal )
231
+ def initialize( text = "", priority = :normal, title = nil )
213
232
  @text = text
214
233
  @priority = ( PRIORITIES.index( priority ) or 1 )
234
+ @title = title
215
235
  end
216
236
  end
217
237
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4.5
3
3
  specification_version: 2
4
4
  name: nserver
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.1.2
7
- date: 2007-11-09 00:00:00 -05:00
6
+ version: 1.1.3
7
+ date: 2007-11-10 00:00:00 -05:00
8
8
  summary: Notification server for ruby using libnotify
9
9
  require_paths:
10
10
  - lib