ratchet 0.3.0
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.
- data/gem_bin/ratchet +23 -0
- data/lib/ratchet.rb +613 -0
- data/lib/ratchet/aliases.rb +106 -0
- data/lib/ratchet/bufferparser.rb +409 -0
- data/lib/ratchet/commandbuffer.rb +66 -0
- data/lib/ratchet/commandparser.rb +668 -0
- data/lib/ratchet/configuration.rb +278 -0
- data/lib/ratchet/connections.rb +403 -0
- data/lib/ratchet/constants.rb +111 -0
- data/lib/ratchet/contrib/instance_exec.rb +21 -0
- data/lib/ratchet/eventparser.rb +486 -0
- data/lib/ratchet/gtk/bufferlistview.rb +514 -0
- data/lib/ratchet/gtk/bufferview.rb +167 -0
- data/lib/ratchet/gtk/configwindow.rb +229 -0
- data/lib/ratchet/gtk/connectionwindow.rb +218 -0
- data/lib/ratchet/gtk/keybinding.rb +356 -0
- data/lib/ratchet/gtk/linkwindow.rb +137 -0
- data/lib/ratchet/gtk/mainwindow.rb +504 -0
- data/lib/ratchet/gtk/networkpresenceconf.rb +567 -0
- data/lib/ratchet/gtk/pluginconfig.rb +94 -0
- data/lib/ratchet/gtk/pluginwindow.rb +146 -0
- data/lib/ratchet/gtk/userlistview.rb +161 -0
- data/lib/ratchet/help.rb +64 -0
- data/lib/ratchet/items.rb +271 -0
- data/lib/ratchet/lines.rb +63 -0
- data/lib/ratchet/networks.rb +652 -0
- data/lib/ratchet/plugins.rb +616 -0
- data/lib/ratchet/queue.rb +47 -0
- data/lib/ratchet/ratchet-version.rb +21 -0
- data/lib/ratchet/replies.rb +134 -0
- data/lib/ratchet/replyparser.rb +441 -0
- data/lib/ratchet/tabcomplete.rb +98 -0
- data/lib/ratchet/users.rb +237 -0
- data/lib/ratchet/utils.rb +178 -0
- data/share/defaults.yaml +169 -0
- data/share/glade/config.glade +2634 -0
- data/share/glade/connect.glade +950 -0
- data/share/glade/keybindings.glade +109 -0
- data/share/glade/linkwindow.glade +188 -0
- data/share/glade/mainwindow.glade +335 -0
- data/share/glade/network-presences.glade +1373 -0
- data/share/glade/pluginconf.glade +97 -0
- data/share/glade/plugins.glade +360 -0
- data/share/plugins/colorewrite.rb +193 -0
- data/share/plugins/highlighter.rb +115 -0
- data/share/plugins/mpdplay.rb +123 -0
- data/share/plugins/numberswitcher.rb +30 -0
- data/share/plugins/sysinfo.rb +82 -0
- metadata +96 -0
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
This file is part of the Ratchet project, a client for Icecap.
|
|
3
|
+
Copyright (C) 2005-6 Andrew Thompson
|
|
4
|
+
|
|
5
|
+
This program is free software; you can redistribute it and/or modify
|
|
6
|
+
it under the terms of the GNU General Public License as published by
|
|
7
|
+
the Free Software Foundation; either version 2 of the License, or
|
|
8
|
+
(at your option) any later version.
|
|
9
|
+
|
|
10
|
+
This program is distributed in the hope that it will be useful,
|
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
GNU General Public License for more details.
|
|
14
|
+
|
|
15
|
+
You should have received a copy of the GNU General Public License
|
|
16
|
+
along with this program; if not, write to the Free Software
|
|
17
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
18
|
+
=end
|
|
19
|
+
|
|
20
|
+
#### networkpresenceconf.rb ####
|
|
21
|
+
# The network/gateway/presence manager
|
|
22
|
+
####
|
|
23
|
+
|
|
24
|
+
#TODO: This is a bit complicated, maybe needs a UI redesign or a 'simple mode'?
|
|
25
|
+
|
|
26
|
+
module Ratchet
|
|
27
|
+
class NetworkPresenceConf < SingleWindow
|
|
28
|
+
def initialize(main, networks, protocols)
|
|
29
|
+
@main = main
|
|
30
|
+
@glade = GladeXML.new("#{DATADIR}/glade/network-presences.glade") {|handler| method(handler)}
|
|
31
|
+
@window = @glade['networkpresencewindow']
|
|
32
|
+
@networklist = Gtk::ListStore.new(String)
|
|
33
|
+
@renderer = Gtk::CellRendererText.new
|
|
34
|
+
@networkcolumn = Gtk::TreeViewColumn.new("Networks", @renderer, :text=>0)
|
|
35
|
+
@presencelist = Gtk::ListStore.new(String)
|
|
36
|
+
@presencecolumn = Gtk::TreeViewColumn.new("Presences", @renderer, :text=>0)
|
|
37
|
+
|
|
38
|
+
@gatewaylist = Gtk::ListStore.new(String)
|
|
39
|
+
@gatewaycolumn = Gtk::TreeViewColumn.new("Gateways", @renderer, :text=>0)
|
|
40
|
+
|
|
41
|
+
@glade['networktreeview'].model = @networklist
|
|
42
|
+
@glade['presencetreeview'].model = @presencelist
|
|
43
|
+
@glade['gatewaytreeview'].model = @gatewaylist
|
|
44
|
+
|
|
45
|
+
@glade['connect'].sensitive = false
|
|
46
|
+
|
|
47
|
+
@glade['networktreeview'].append_column(@networkcolumn)
|
|
48
|
+
@glade['presencetreeview'].append_column(@presencecolumn)
|
|
49
|
+
@glade['gatewaytreeview'].append_column(@gatewaycolumn)
|
|
50
|
+
|
|
51
|
+
@glade['networktreeview'].selection.signal_connect('changed') do |widget|
|
|
52
|
+
draw_presences
|
|
53
|
+
end
|
|
54
|
+
@glade['presencetreeview'].selection.signal_connect('changed') do |widget|
|
|
55
|
+
if iter = widget.selected and iter[0]
|
|
56
|
+
puts iter[0]
|
|
57
|
+
@glade['connect'].sensitive = true
|
|
58
|
+
@glade['editpresence'].sensitive = true
|
|
59
|
+
@glade['deletepresence'].sensitive = true
|
|
60
|
+
else
|
|
61
|
+
@glade['connect'].sensitive = false
|
|
62
|
+
@glade['editpresence'].sensitive = false
|
|
63
|
+
@glade['deletepresence'].sensitive = false
|
|
64
|
+
end
|
|
65
|
+
false
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
@orignetworks = networks
|
|
69
|
+
@networks = networks.deep_clone
|
|
70
|
+
@protocols = protocols
|
|
71
|
+
|
|
72
|
+
@tempgateways = ItemList.new(Gateway)
|
|
73
|
+
|
|
74
|
+
@presencehandler = 0
|
|
75
|
+
@networkhandler = 0
|
|
76
|
+
@gatewayhandler = 0
|
|
77
|
+
|
|
78
|
+
draw_networks
|
|
79
|
+
|
|
80
|
+
@open = true
|
|
81
|
+
|
|
82
|
+
@window.show_all
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def draw_networks
|
|
87
|
+
@networklist.clear
|
|
88
|
+
@networks.list.each do |network|
|
|
89
|
+
iter = @networklist.append
|
|
90
|
+
iter[0] = network.name
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def draw_presences
|
|
95
|
+
network = get_selected_network
|
|
96
|
+
unless network
|
|
97
|
+
puts 'clearing'
|
|
98
|
+
@presencelist.clear
|
|
99
|
+
#disable buttons the user shouldn't be clicking
|
|
100
|
+
@glade['editnetwork'].sensitive = false
|
|
101
|
+
@glade['addpresence'].sensitive = false
|
|
102
|
+
return
|
|
103
|
+
end
|
|
104
|
+
#reenable any disabled buttons
|
|
105
|
+
@glade['editnetwork'].sensitive = true
|
|
106
|
+
@glade['addpresence'].sensitive = true
|
|
107
|
+
network = network[0]
|
|
108
|
+
@presencelist.clear
|
|
109
|
+
return unless @networks[network]
|
|
110
|
+
@networks[network].presences.list.each do |presence|
|
|
111
|
+
iter = @presencelist.append
|
|
112
|
+
iter[0] = presence.name
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def fill_protocols(selected = nil)
|
|
117
|
+
@glade['network_protocol'].model.clear
|
|
118
|
+
match = false
|
|
119
|
+
i = 0
|
|
120
|
+
@protocols.list.each do |protocol|
|
|
121
|
+
@glade['network_protocol'].append_text(protocol.name)
|
|
122
|
+
if selected and selected.downcase == protocol.name.downcase
|
|
123
|
+
@glade['network_protocol'].active = i
|
|
124
|
+
match = true
|
|
125
|
+
end
|
|
126
|
+
i += 1
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
unless match
|
|
130
|
+
@glade['network_protocol'].active = 0
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def fill_gateways(gateways)
|
|
135
|
+
@gatewaylist.clear
|
|
136
|
+
return unless gateways
|
|
137
|
+
gateways.list.each do |gateway|
|
|
138
|
+
iter = @gatewaylist.append
|
|
139
|
+
iter[0] = gateway.name
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def fill_charsets(selected=nil)
|
|
144
|
+
@glade['network_charset'].model.clear
|
|
145
|
+
selected.downcase! if selected
|
|
146
|
+
charsets = ['utf-8', 'iso-8859-1', 'iso-8859-2', 'iso-8859-5', 'iso-8859-15']
|
|
147
|
+
unless index = charsets.index(selected)
|
|
148
|
+
charsets = [selected].concat(charsets) if selected
|
|
149
|
+
index = 0
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
charsets.each do |c|
|
|
153
|
+
@glade['network_charset'].append_text(c)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
@glade['network_charset'].active = index
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def get_selected_network
|
|
160
|
+
iter = @glade['networktreeview'].selection.selected
|
|
161
|
+
return nil unless iter
|
|
162
|
+
return iter
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def get_selected_presence
|
|
166
|
+
iter = @glade['presencetreeview'].selection.selected
|
|
167
|
+
return nil unless iter
|
|
168
|
+
return iter
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def get_selected_gateway
|
|
172
|
+
iter = @glade['gatewaytreeview'].selection.selected
|
|
173
|
+
return nil unless iter
|
|
174
|
+
return iter
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def add_network
|
|
178
|
+
@tempgateways = ItemList.new(Gateway)
|
|
179
|
+
@glade['network_protocol'].sensitive = true
|
|
180
|
+
@currentgateways = @tempgateways
|
|
181
|
+
if @glade['network_ok'].signal_handler_is_connected?(@networkhandler)
|
|
182
|
+
@glade['network_ok'].signal_handler_disconnect(@networkhandler)
|
|
183
|
+
end
|
|
184
|
+
@networkhandler = @glade['network_ok'].signal_connect('clicked') { insert_network}
|
|
185
|
+
puts @networkhandler
|
|
186
|
+
@glade['network_name'].text =''
|
|
187
|
+
@glade['network_name'].sensitive = true
|
|
188
|
+
fill_charsets
|
|
189
|
+
fill_protocols
|
|
190
|
+
@gatewaylist.clear
|
|
191
|
+
@window.modal = false
|
|
192
|
+
@glade['networkproperties'].show_all
|
|
193
|
+
@glade['networkproperties'].present
|
|
194
|
+
@glade['network_name'].grab_focus
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def edit_network
|
|
198
|
+
if @glade['network_ok'].signal_handler_is_connected?(@networkhandler)
|
|
199
|
+
@glade['network_ok'].signal_handler_disconnect(@networkhandler)
|
|
200
|
+
end
|
|
201
|
+
@networkhandler = @glade['network_ok'].signal_connect('clicked') { update_network}
|
|
202
|
+
network = get_selected_network
|
|
203
|
+
return unless network
|
|
204
|
+
network = @networks[network[0]]
|
|
205
|
+
return unless network
|
|
206
|
+
@currentgateways = network.gateways
|
|
207
|
+
@glade['network_name'].text = network.name
|
|
208
|
+
@glade['network_name'].sensitive = false
|
|
209
|
+
fill_protocols(network.protocol)
|
|
210
|
+
fill_gateways(network.gateways)
|
|
211
|
+
fill_charsets(network.charset)
|
|
212
|
+
@glade['network_protocol'].sensitive = false
|
|
213
|
+
@window.modal = false
|
|
214
|
+
@glade['networkproperties'].show_all
|
|
215
|
+
@glade['networkproperties'].present
|
|
216
|
+
@glade['network_name'].grab_focus
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def remove_network
|
|
220
|
+
network = get_selected_network
|
|
221
|
+
return unless network
|
|
222
|
+
puts network
|
|
223
|
+
nw = @networks[network[0]]
|
|
224
|
+
@networks.remove(nw)
|
|
225
|
+
@networklist.remove(network)
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def insert_network
|
|
229
|
+
charset, name, protocol = nil
|
|
230
|
+
charset = @glade['network_charset'].active_iter[0] if @glade['network_charset'].active_iter[0] != ''
|
|
231
|
+
name = @glade['network_name'].text if name = @glade['network_name'].text != ''
|
|
232
|
+
protocol = @glade['network_protocol'].active_iter[0] if @glade['network_protocol'].active_iter[0] != ''
|
|
233
|
+
nw = @networks.add(name, protocol) if name and protocol
|
|
234
|
+
if nw
|
|
235
|
+
nw.charset = charset
|
|
236
|
+
nw.gateways = @currentgateways
|
|
237
|
+
end
|
|
238
|
+
draw_networks
|
|
239
|
+
@glade['networkproperties'].hide
|
|
240
|
+
@window.modal = true
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def update_network
|
|
244
|
+
charset, name, protocol = nil
|
|
245
|
+
charset = @glade['network_charset'].active_iter[0] if @glade['network_charset'].active_iter
|
|
246
|
+
name = @glade['network_name'].text if name = @glade['network_name'].text != ''
|
|
247
|
+
protocol = @glade['network_protocol'].active_iter[0] if @glade['network_protocol'].active_iter
|
|
248
|
+
nw = @networks[name]
|
|
249
|
+
if nw
|
|
250
|
+
nw.charset = charset
|
|
251
|
+
#nw.protocol = protocol if protocol
|
|
252
|
+
nw.gateways = @currentgateways
|
|
253
|
+
end
|
|
254
|
+
draw_networks
|
|
255
|
+
@glade['networkproperties'].hide
|
|
256
|
+
@glade['networkpresencewindow'].modal = true
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def add_presence
|
|
260
|
+
network = get_selected_network
|
|
261
|
+
return unless network
|
|
262
|
+
if @glade['presence_ok'].signal_handler_is_connected?(@presencehandler)
|
|
263
|
+
@glade['presence_ok'].signal_handler_disconnect(@presencehandler)
|
|
264
|
+
end
|
|
265
|
+
@presencehandler = @glade['presence_ok'].signal_connect('clicked') { insert_presence}
|
|
266
|
+
@glade['presence_autoconnect'].active = false
|
|
267
|
+
@glade['presence_name'].sensitive = true
|
|
268
|
+
@glade['presence_name'].text = ''
|
|
269
|
+
@window.modal = false
|
|
270
|
+
@glade['presenceproperties'].show_all
|
|
271
|
+
@glade['presenceproperties'].present
|
|
272
|
+
@glade['presence_name'].grab_focus
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
def edit_presence
|
|
276
|
+
network = get_selected_network
|
|
277
|
+
return unless network
|
|
278
|
+
network = network[0]
|
|
279
|
+
presence= get_selected_presence
|
|
280
|
+
return unless presence
|
|
281
|
+
presence = @networks[network].presences[presence[0]]
|
|
282
|
+
return unless presence
|
|
283
|
+
if @glade['presence_ok'].signal_handler_is_connected?(@presencehandler)
|
|
284
|
+
@glade['presence_ok'].signal_handler_disconnect(@presencehandler)
|
|
285
|
+
end
|
|
286
|
+
@presencehandler = @glade['presence_ok'].signal_connect('clicked') { update_presence}
|
|
287
|
+
@glade['presence_autoconnect'].active = false
|
|
288
|
+
@glade['presence_name'].text = presence.name
|
|
289
|
+
@glade['presence_name'].sensitive = false
|
|
290
|
+
if presence.autoconnect
|
|
291
|
+
@glade['presence_autoconnect'].active = true
|
|
292
|
+
end
|
|
293
|
+
@window.modal = false
|
|
294
|
+
@glade['presenceproperties'].show_all
|
|
295
|
+
@glade['presenceproperties'].present
|
|
296
|
+
@glade['presence_name'].grab_focus
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def remove_presence
|
|
300
|
+
presence = get_selected_presence
|
|
301
|
+
network = get_selected_network
|
|
302
|
+
return unless presence
|
|
303
|
+
p = @networks[network[0]].presences[presence[0]]
|
|
304
|
+
@networks[network[0]].presences.remove(p)
|
|
305
|
+
@presencelist.remove(presence)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
def insert_presence
|
|
309
|
+
network = get_selected_network
|
|
310
|
+
return unless network
|
|
311
|
+
network = @networks[network[0]]
|
|
312
|
+
return unless network
|
|
313
|
+
|
|
314
|
+
name = @glade['presence_name'].text if @glade['presence_name'].text != ''
|
|
315
|
+
if name
|
|
316
|
+
ps = network.presences.add(name)
|
|
317
|
+
|
|
318
|
+
if ps
|
|
319
|
+
ps.autoconnect = true if @glade['presence_autoconnect'].active?
|
|
320
|
+
draw_presences
|
|
321
|
+
puts network.presences.list
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
@glade['presenceproperties'].hide
|
|
325
|
+
@window.modal = true
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def update_presence
|
|
329
|
+
network = get_selected_network
|
|
330
|
+
return unless network
|
|
331
|
+
network = @networks[network[0]]
|
|
332
|
+
return unless network
|
|
333
|
+
name, autoconnect = nil
|
|
334
|
+
name = @glade['presence_name'].text if @glade['presence_name'].text != ''
|
|
335
|
+
autoconnect = true if @glade['presence_autoconnect'].active?
|
|
336
|
+
|
|
337
|
+
presence = network.presences[name]
|
|
338
|
+
return unless presence
|
|
339
|
+
|
|
340
|
+
presence.autoconnect = autoconnect
|
|
341
|
+
|
|
342
|
+
@glade['presenceproperties'].hide
|
|
343
|
+
@glade['networkpresencewindow'].modal = true
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
def add_gateway
|
|
347
|
+
@glade['gateway_host'].text = ''
|
|
348
|
+
@glade['gateway_port'].text = ''
|
|
349
|
+
@glade['gateway_password'].text = ''
|
|
350
|
+
if @glade['network_ok'].signal_handler_is_connected?(@gatewayhandler)
|
|
351
|
+
@glade['network_ok'].signal_handler_disconnect(@gatewayhandler)
|
|
352
|
+
end
|
|
353
|
+
@gatewayhandler = @glade['gateway_ok'].signal_connect('clicked') { insert_gateway}
|
|
354
|
+
@glade['gatewayproperties'].show_all
|
|
355
|
+
@glade['networkproperties'].modal = false
|
|
356
|
+
@glade['gatewayproperties'].present
|
|
357
|
+
@glade['gateway_host'].grab_focus
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
def edit_gateway
|
|
361
|
+
network = get_selected_network
|
|
362
|
+
return unless network
|
|
363
|
+
network = network[0]
|
|
364
|
+
gateway = get_selected_gateway
|
|
365
|
+
return unless gateway
|
|
366
|
+
puts gateway[0]
|
|
367
|
+
gateway = @currentgateways[gateway[0]]
|
|
368
|
+
puts gateway
|
|
369
|
+
return unless gateway
|
|
370
|
+
@glade['gateway_host'].text = gateway.host
|
|
371
|
+
@glade['gateway_port'].text = gateway.port if gateway.port
|
|
372
|
+
@glade['gateway_password'].text = gateway.password if gateway.password
|
|
373
|
+
if @glade['gateway_ok'].signal_handler_is_connected?(@gatewayhandler)
|
|
374
|
+
@glade['gateway_ok'].signal_handler_disconnect(@gatewayhandler)
|
|
375
|
+
end
|
|
376
|
+
@gatewayhandler = @glade['gateway_ok'].signal_connect('clicked') { update_gateway(gateway)}
|
|
377
|
+
@glade['gatewayproperties'].show_all
|
|
378
|
+
@glade['networkproperties'].modal = false
|
|
379
|
+
@glade['gatewayproperties'].present
|
|
380
|
+
@glade['gateway_host'].grab_focus
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
def remove_gateway
|
|
384
|
+
network = get_selected_network
|
|
385
|
+
puts network[0]
|
|
386
|
+
return unless network
|
|
387
|
+
network = network[0]
|
|
388
|
+
gateway = get_selected_gateway
|
|
389
|
+
return unless gateway
|
|
390
|
+
gw = @currentgateways[gateway[0]]
|
|
391
|
+
@currentgateways.remove(gw)
|
|
392
|
+
@gatewaylist.remove(gateway)
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
def insert_gateway
|
|
396
|
+
#puts network
|
|
397
|
+
host, port, password = nil
|
|
398
|
+
host = @glade['gateway_host'].text if @glade['gateway_host'].text != ''
|
|
399
|
+
port = @glade['gateway_port'].text if @glade['gateway_port'].text != ''
|
|
400
|
+
password = @glade['gateway_password'].text if @glade['gateway_password'].text != ''
|
|
401
|
+
if port
|
|
402
|
+
gw = @currentgateways.add(host, port)
|
|
403
|
+
else
|
|
404
|
+
gw = @currentgateways.add(host)
|
|
405
|
+
end
|
|
406
|
+
puts gw
|
|
407
|
+
if gw
|
|
408
|
+
gw.password = password
|
|
409
|
+
fill_gateways(@currentgateways)
|
|
410
|
+
end
|
|
411
|
+
@glade['gatewayproperties'].hide
|
|
412
|
+
@glade['networkproperties'].modal = true
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
def update_gateway(gateway)
|
|
416
|
+
host, port, password = nil
|
|
417
|
+
host = @glade['gateway_host'].text if @glade['gateway_host'].text != ''
|
|
418
|
+
port = @glade['gateway_port'].text if @glade['gateway_port'].text != ''
|
|
419
|
+
password = @glade['gateway_password'].text if @glade['gateway_password'].text != ''
|
|
420
|
+
|
|
421
|
+
gateway.host = host
|
|
422
|
+
gateway.port = port
|
|
423
|
+
gateway.password = password
|
|
424
|
+
@glade['gatewayproperties'].hide
|
|
425
|
+
@glade['networkproperties'].modal = true
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
def cancel_networkproperties
|
|
429
|
+
@glade['networkproperties'].hide
|
|
430
|
+
@glade['networkpresencewindow'].modal = true
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
def cancel_presenceproperties
|
|
434
|
+
@glade['presenceproperties'].hide
|
|
435
|
+
@glade['networkpresencewindow'].modal = true
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
def cancel_gatewayproperties
|
|
439
|
+
@glade['gatewayproperties'].hide
|
|
440
|
+
@glade['networkproperties'].modal = true
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
def hide(widget, event)
|
|
444
|
+
widget.hide
|
|
445
|
+
return true
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
def connect
|
|
449
|
+
network = get_selected_network
|
|
450
|
+
return unless network
|
|
451
|
+
network = network[0]
|
|
452
|
+
presence = get_selected_presence
|
|
453
|
+
if presence
|
|
454
|
+
presence = presence[0]
|
|
455
|
+
return unless presence
|
|
456
|
+
apply
|
|
457
|
+
end
|
|
458
|
+
@main.send_command('connect', 'presence connect;mypresence='+presence+';network='+network)
|
|
459
|
+
#connect to network presence
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
def apply
|
|
463
|
+
destroy
|
|
464
|
+
diff_networks
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
def diff_networks
|
|
468
|
+
#~ i = 0
|
|
469
|
+
#~ @networks.sort!
|
|
470
|
+
#~ @orignetworks.sort!
|
|
471
|
+
|
|
472
|
+
#add and update
|
|
473
|
+
@networks.list.each do |network|
|
|
474
|
+
if @orignetworks.include?(network)
|
|
475
|
+
#puts 'network exists'
|
|
476
|
+
diff = network.diff(@orignetworks[network.name])
|
|
477
|
+
if diff
|
|
478
|
+
puts 'update network'
|
|
479
|
+
@main.send_command('editnetwork', 'network set;network='+network.name+';'+diff)
|
|
480
|
+
#@orignetworks[network.name] = network
|
|
481
|
+
end
|
|
482
|
+
origpresences = @orignetworks[network.name].presences
|
|
483
|
+
network.presences.list.each do |presence|
|
|
484
|
+
if origpresences.include?(presence)
|
|
485
|
+
#puts 'presence exists'
|
|
486
|
+
diff = presence.diff(origpresences[presence.name])
|
|
487
|
+
if diff
|
|
488
|
+
puts 'update presence'
|
|
489
|
+
@main.send_command('editpresence', 'presence set;network='+network.name+';mypresence='+presence.name+';'+diff)
|
|
490
|
+
#origpresences[presence.name] = presence
|
|
491
|
+
end
|
|
492
|
+
else
|
|
493
|
+
puts 'add presence '+presence.name
|
|
494
|
+
@main.send_command('addpresence', presence.create(network.name))
|
|
495
|
+
#origpresences.insert(presence)
|
|
496
|
+
end
|
|
497
|
+
end
|
|
498
|
+
origgateways = @orignetworks[network.name].gateways
|
|
499
|
+
network.gateways.list.each do |gateway|
|
|
500
|
+
if origgateways.include?(gateway)
|
|
501
|
+
#puts 'gateway exists'
|
|
502
|
+
diff = gateway.diff(origgateways[gateway.name])
|
|
503
|
+
if diff
|
|
504
|
+
puts 'update gateway'
|
|
505
|
+
@main.command_send('editgateway', 'gateway set;network='+gateway.name+';'+diff)
|
|
506
|
+
#origgateways[gateway.name] = gateway
|
|
507
|
+
end
|
|
508
|
+
else
|
|
509
|
+
puts 'add gateway '+gateway.name
|
|
510
|
+
@main.send_command('addgateway', gateway.create(network.name))
|
|
511
|
+
#origgateways.insert(gateway)
|
|
512
|
+
end
|
|
513
|
+
end
|
|
514
|
+
else
|
|
515
|
+
puts 'add network '+network.name
|
|
516
|
+
@main.send_command('addnetwork', network.create)
|
|
517
|
+
sleep 0.5
|
|
518
|
+
network.presences.list.each do |presence|
|
|
519
|
+
puts 'add presence '+presence.name
|
|
520
|
+
@main.send_command('addpresence', presence.create(network.name))
|
|
521
|
+
end
|
|
522
|
+
network.gateways.list.each do |gateway|
|
|
523
|
+
puts 'add gateway '+gateway.name
|
|
524
|
+
@main.send_command('addgateway', gateway.create(network.name))
|
|
525
|
+
end
|
|
526
|
+
#@orignetworks.insert(network)
|
|
527
|
+
end
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
#remove
|
|
531
|
+
@orignetworks.list.each do |network|
|
|
532
|
+
if @networks.include?(network)
|
|
533
|
+
newpresences = @networks[network.name].presences
|
|
534
|
+
network.presences.list.each do |presence|
|
|
535
|
+
if !newpresences.include?(presence)
|
|
536
|
+
#@orignetworks[network.name].presences.remove(presence)
|
|
537
|
+
puts 'remove presence '+presence.name
|
|
538
|
+
@main.send_command('removepresence', 'presence remove;network='+network.name+';mypresence='+presence.name)
|
|
539
|
+
end
|
|
540
|
+
end
|
|
541
|
+
newgateways = @networks[network.name].gateways
|
|
542
|
+
network.gateways.list.each do |gateway|
|
|
543
|
+
if !newgateways.include?(gateway)
|
|
544
|
+
#@orignetworks[network.name].gateways.remove(gateway)
|
|
545
|
+
puts 'remove gateway '+gateway.name
|
|
546
|
+
@main.send_command('removegateway', 'gateway remove;network='+network.name+';host='+gateway.host)
|
|
547
|
+
end
|
|
548
|
+
end
|
|
549
|
+
else
|
|
550
|
+
#need to iterate through and remove children I guess
|
|
551
|
+
#@orignetworks.remove(network)
|
|
552
|
+
puts '(unimplemented) remove network '+network.name
|
|
553
|
+
end
|
|
554
|
+
end
|
|
555
|
+
end
|
|
556
|
+
|
|
557
|
+
def destroy
|
|
558
|
+
@window.destroy
|
|
559
|
+
@glade['networkproperties'].destroy
|
|
560
|
+
@glade['presenceproperties'].destroy
|
|
561
|
+
@glade['gatewayproperties'].destroy
|
|
562
|
+
self.class.destroy
|
|
563
|
+
#Gtk.main_quit
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
end
|
|
567
|
+
end
|