nserver 1.1.2 → 1.1.3

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.
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