gnms 2.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of gnms might be problematic. Click here for more details.

Files changed (140) hide show
  1. data/LICENSE +459 -0
  2. data/README +29 -0
  3. data/bin/gnms +11 -0
  4. data/gnms.gemspec +70 -0
  5. data/lib/cmd_parse.rb +747 -0
  6. data/lib/config_global.rb +414 -0
  7. data/lib/contact.rb +171 -0
  8. data/lib/external/crypt/blowfish-tables.rb +190 -0
  9. data/lib/external/crypt/blowfish.rb +110 -0
  10. data/lib/external/crypt/cbc.rb +123 -0
  11. data/lib/external/crypt/stringxor.rb +27 -0
  12. data/lib/external/fog.rb +41 -0
  13. data/lib/external/jjmx.rb +45 -0
  14. data/lib/external/sms.rb +282 -0
  15. data/lib/external/xmpp4r-simple.rb +497 -0
  16. data/lib/format.rb +85 -0
  17. data/lib/gnms.rb +329 -0
  18. data/lib/gui/about_window.rb +177 -0
  19. data/lib/gui/adddelnode.rb +799 -0
  20. data/lib/gui/base_window.rb +789 -0
  21. data/lib/gui/canvas_map.rb +498 -0
  22. data/lib/gui/charts/gruff.rb +51 -0
  23. data/lib/gui/color_macro.rb +145 -0
  24. data/lib/gui/config_window.rb +2151 -0
  25. data/lib/gui/custom_plugin_window.rb +90 -0
  26. data/lib/gui/debug_window.rb +46 -0
  27. data/lib/gui/event_window.rb +469 -0
  28. data/lib/gui/find_node_window.rb +438 -0
  29. data/lib/gui/help_window.rb +47 -0
  30. data/lib/gui/ipcalculator.rb +147 -0
  31. data/lib/gui/jmx_ref_window.rb +309 -0
  32. data/lib/gui/link_view.rb +46 -0
  33. data/lib/gui/mib_browser.rb +585 -0
  34. data/lib/gui/node_host_property.rb +3712 -0
  35. data/lib/gui/node_host_view.rb +270 -0
  36. data/lib/gui/node_network_property.rb +1059 -0
  37. data/lib/gui/node_network_view.rb +186 -0
  38. data/lib/gui/node_view.rb +672 -0
  39. data/lib/gui/oid_ref_window.rb +288 -0
  40. data/lib/gui/snmptrap_ref_window.rb +288 -0
  41. data/lib/gui/sub/account_frame.rb +196 -0
  42. data/lib/gui/sub/contact_frame.rb +519 -0
  43. data/lib/gui/syslog_ref_window.rb +288 -0
  44. data/lib/gui/treenode_window.rb +320 -0
  45. data/lib/gui/update_window.rb +124 -0
  46. data/lib/gui/widgets.rb +169 -0
  47. data/lib/gui/wmi_ref_window.rb +286 -0
  48. data/lib/interface.rb +16 -0
  49. data/lib/ipcalc.rb +266 -0
  50. data/lib/link.rb +45 -0
  51. data/lib/main.rb +1091 -0
  52. data/lib/monitor/client/custom/custom_monitoring.rb +40 -0
  53. data/lib/monitor/client/jmx/jmx_attr_monitoring.rb +36 -0
  54. data/lib/monitor/client/jmx/jmx_monitoring.rb +83 -0
  55. data/lib/monitor/client/jmx/jmx_ref.rb +114 -0
  56. data/lib/monitor/client/snmp/mibs/SNMPv2-MIB.txt +854 -0
  57. data/lib/monitor/client/snmp/mibs/SNMPv2-SMI.txt +344 -0
  58. data/lib/monitor/client/snmp/oid_ref.rb +141 -0
  59. data/lib/monitor/client/snmp/snmp.rb +178 -0
  60. data/lib/monitor/client/snmp/snmp_monitoring.rb +58 -0
  61. data/lib/monitor/client/wmi/wmi.rb +139 -0
  62. data/lib/monitor/client/wmi/wmi_monitoring.rb +60 -0
  63. data/lib/monitor/client/wmi/wmi_ref.rb +141 -0
  64. data/lib/monitor/custom_plugin.rb +50 -0
  65. data/lib/monitor/server/msg_buffer.rb +39 -0
  66. data/lib/monitor/server/snmp/snmptrap_analyzer.rb +81 -0
  67. data/lib/monitor/server/snmp/snmptrap_capture.rb +26 -0
  68. data/lib/monitor/server/snmp/snmptrap_monitoring.rb +32 -0
  69. data/lib/monitor/server/snmp/snmptrap_ref.rb +135 -0
  70. data/lib/monitor/server/snmp/snmptrap_server.rb +50 -0
  71. data/lib/monitor/server/syslog/syslog_analyzer.rb +141 -0
  72. data/lib/monitor/server/syslog/syslog_capture.rb +28 -0
  73. data/lib/monitor/server/syslog/syslog_monitoring.rb +32 -0
  74. data/lib/monitor/server/syslog/syslog_ref.rb +136 -0
  75. data/lib/monitor/server/syslog/syslog_server.rb +43 -0
  76. data/lib/node.rb +1020 -0
  77. data/lib/node_db.rb +2668 -0
  78. data/lib/node_host.rb +215 -0
  79. data/lib/node_listener.rb +639 -0
  80. data/lib/node_network.rb +269 -0
  81. data/lib/node_property.rb +39 -0
  82. data/lib/notify/alarm.rb +247 -0
  83. data/lib/notify/irc_bot.rb +167 -0
  84. data/lib/notify/xmpp_bot.rb +107 -0
  85. data/lib/service.rb +36 -0
  86. data/lib/version.rb +8 -0
  87. data/pixmap/bg/map_bg.jpg +0 -0
  88. data/pixmap/bg/map_bg2.jpg +0 -0
  89. data/pixmap/logo.jpg +0 -0
  90. data/pixmap/logo_icon.png +0 -0
  91. data/pixmap/os/3com.png +0 -0
  92. data/pixmap/os/aix.gif +0 -0
  93. data/pixmap/os/amiga.png +0 -0
  94. data/pixmap/os/beos.png +0 -0
  95. data/pixmap/os/cisco.png +0 -0
  96. data/pixmap/os/freebsd.png +0 -0
  97. data/pixmap/os/hp.png +0 -0
  98. data/pixmap/os/hurd.gif +0 -0
  99. data/pixmap/os/irix.gif +0 -0
  100. data/pixmap/os/linux.png +0 -0
  101. data/pixmap/os/mac.png +0 -0
  102. data/pixmap/os/netbsd.gif +0 -0
  103. data/pixmap/os/netware.png +0 -0
  104. data/pixmap/os/openbsd.png +0 -0
  105. data/pixmap/os/os2warp.gif +0 -0
  106. data/pixmap/os/qnx.gif +0 -0
  107. data/pixmap/os/sco.gif +0 -0
  108. data/pixmap/os/sgi.xpm +111 -0
  109. data/pixmap/os/solaris.gif +0 -0
  110. data/pixmap/os/unix.gif +0 -0
  111. data/pixmap/os/unknown.png +0 -0
  112. data/pixmap/os/vms.xpm +345 -0
  113. data/pixmap/os/windows.png +0 -0
  114. data/pixmap/type/cloud.png +0 -0
  115. data/pixmap/type/device.png +0 -0
  116. data/pixmap/type/firewall.png +0 -0
  117. data/pixmap/type/gateway.png +0 -0
  118. data/pixmap/type/home.png +0 -0
  119. data/pixmap/type/host.png +0 -0
  120. data/pixmap/type/network.png +0 -0
  121. data/pixmap/type/printer.png +0 -0
  122. data/pixmap/type/router.png +0 -0
  123. data/pixmap/type/server.png +0 -0
  124. data/pixmap/type/switch.png +0 -0
  125. data/pixmap/type/vm.png +0 -0
  126. data/plugins/Defaultme.rb +7 -0
  127. data/plugins/DnsCheck.rb +46 -0
  128. data/plugins/FooMonitor.rb +26 -0
  129. data/plugins/HttpVirtualHostMonitor.rb +43 -0
  130. data/plugins/MysqlShowStatusMonitor.rb +64 -0
  131. data/plugins/PgsqlPercentConnectionMonitor.rb +72 -0
  132. data/plugins/SshCpuLoadMonitor.rb +85 -0
  133. data/plugins/SshDiskMonitor.rb +69 -0
  134. data/plugins/SshFgtAvExpiredMonitor.rb +75 -0
  135. data/plugins/SshPercentUsedRamMonitor.rb +74 -0
  136. data/plugins/TelnetCpuLoadMonitor.rb +69 -0
  137. data/plugins/example1.rb +15 -0
  138. data/plugins/example2.rb +7 -0
  139. data/sound/beep.wav +0 -0
  140. metadata +378 -0
@@ -0,0 +1,147 @@
1
+ require "#{GNMSLIB}"+'/cmd_parse'
2
+
3
+ #
4
+ # window to get info from ip/mask
5
+ #
6
+ def netmask_calculator
7
+
8
+ if $win == nil
9
+ return
10
+ end
11
+
12
+ ipcalc=Gtk::Window.new
13
+
14
+ ipcalc.set_title("IP calculator")
15
+ ipcalc.set_size_request(340, 340)
16
+ ipcalc.set_modal(true)
17
+
18
+ ipcalc.signal_connect("key_press_event") {|w,e|
19
+ if e.keyval == Gdk::Keyval::GDK_Escape
20
+ ipcalc.destroy
21
+ end
22
+ }
23
+
24
+ vbox = Gtk::VBox.new
25
+ vbox.show
26
+ ipcalc.add vbox
27
+
28
+ frame=Gtk::Frame.new
29
+ frame.border_width=10
30
+ frame.show
31
+ vbox.add frame
32
+
33
+ table = Gtk::Table.new(3,2,false)
34
+ table.show
35
+
36
+ label_ip = Gtk::Label.new "IP"
37
+ label_ip.show
38
+ entry_ip = Gtk::Entry.new
39
+ entry_ip.set_text "0.0.0.0"
40
+ entry_ip.show
41
+ eval_button = Gtk::Button.new(Gtk::Stock::EXECUTE)
42
+ eval_button.show
43
+
44
+ hbox = Gtk::HBox.new
45
+ hbox.show
46
+
47
+ hbox.add entry_ip
48
+ hbox.add eval_button
49
+
50
+ table.attach(label_ip,0,1,0,1)
51
+ table.attach(hbox,1,2,0,1)
52
+
53
+ label_netmask = Gtk::Label.new "Netmask"
54
+ label_netmask.show
55
+
56
+ hbox = Gtk::HBox.new
57
+ hbox.show
58
+ entry_netmask = Gtk::Entry.new
59
+ entry_netmask.set_text "255.255.255.0"
60
+ entry_netmask.set_editable false
61
+ entry_netmask.show
62
+
63
+ adj = Gtk::Adjustment::new(0, 1.0, 32.0, 1.0, 5.0, 0.0)
64
+ compressnetmask = Gtk::SpinButton::new(adj, 0, 0)
65
+ compressnetmask.set_wrap(true)
66
+ compressnetmask.set_editable false
67
+ compressnetmask.set_value 24.0
68
+
69
+ compressnetmask.show
70
+ hbox.add entry_netmask
71
+ hbox.add compressnetmask
72
+ table.attach(label_netmask,0,1,1,2)
73
+ table.attach(hbox,1,2,1,2)
74
+ text = Gtk::TextView.new
75
+ text.cursor_visible=false
76
+ text.set_size_request(150,200)
77
+ text.set_editable(false)
78
+ text.show
79
+
80
+ bbox = Gtk::HButtonBox.new
81
+ bbox.set_layout_style(Gtk::ButtonBox::SPREAD)
82
+ bbox.set_size_request(50,30)
83
+ bbox.show
84
+
85
+ compressnetmask.signal_connect("value-changed") {
86
+ entry_netmask.set_text bit2netmask(compressnetmask.value_as_int)
87
+ }
88
+
89
+ eval_button.signal_connect("clicked") {
90
+ if isValidIPv4(entry_ip.text)
91
+ text.buffer.place_cursor(text.buffer.start_iter)
92
+ if compressnetmask.value == "0"
93
+ text.buffer.insert_at_cursor(IPCalc::ipcalc_detail(entry_ip.text))
94
+ else
95
+ text.buffer.insert_at_cursor(IPCalc::ipcalc_detail("#{entry_ip.text}/#{compressnetmask.text}"))
96
+ end
97
+ else
98
+ errorEntry(ipcalc, entry_ip.text)
99
+ end
100
+ }
101
+ entry_ip.signal_connect("key_press_event") {|w,e|
102
+ if e.keyval == 65293 || e.keyval == 65421 #Enter key
103
+ eval_button.clicked
104
+ end
105
+ }
106
+ entry_netmask.signal_connect("key_press_event") {|w,e|
107
+ if e.keyval == 65293 || e.keyval == 65421 #Enter key
108
+ eval_button.clicked
109
+ end
110
+ }
111
+ compressnetmask.signal_connect("key_press_event") {|w,e|
112
+ if e.keyval == 65293 || e.keyval == 65421 #Enter key
113
+ eval_button.clicked
114
+ end
115
+ }
116
+
117
+
118
+ clear_button = Gtk::Button.new(Gtk::Stock::CLEAR)
119
+ clear_button.show
120
+ clear_button.signal_connect("clicked") {
121
+ text.buffer.delete(text.buffer.start_iter,text.buffer.end_iter)
122
+ }
123
+
124
+ cancel_button = Gtk::Button.new(Gtk::Stock::CLOSE)
125
+ cancel_button.show
126
+ cancel_button.signal_connect("clicked") {
127
+ ipcalc.destroy
128
+ }
129
+
130
+ bbox.add clear_button
131
+ bbox.add cancel_button
132
+ frame.add table
133
+
134
+ scrolled_window = Gtk::ScrolledWindow.new(nil, nil)
135
+ scrolled_window.border_width=2
136
+ scrolled_window.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC)
137
+
138
+ vbox.add scrolled_window
139
+ scrolled_window.show
140
+ scrolled_window.add(text)
141
+
142
+ separator = Gtk::HSeparator::new()
143
+ separator.show
144
+ vbox.add separator
145
+ vbox.add bbox
146
+ ipcalc.show
147
+ end
@@ -0,0 +1,309 @@
1
+ class JMXRefWindow
2
+
3
+ def clear_ls()
4
+ @jmx_ref_ls.clear()
5
+ end
6
+ #populate listview with saved values
7
+ def populate_ls()
8
+ $jmx_refs.each_key do |name|
9
+ iter = @jmx_ref_ls.append
10
+ iter[0] = name
11
+ iter[1] = $jmx_refs[name].description
12
+ end
13
+ end
14
+
15
+ def initialize()
16
+ #save jmxref hash
17
+ @jmxrefs_backup=$jmx_refs.dup
18
+ @window=Gtk::Window.new
19
+ @window.set_title("JMX Ref configuration")
20
+ @window.set_size_request(300, 200)
21
+
22
+ @window.signal_connect("key_press_event") {|w,e|
23
+ if e.keyval == Gdk::Keyval::GDK_Escape
24
+ @window.destroy
25
+ end
26
+ }
27
+
28
+ frame = Gtk::Frame::new
29
+ frame.border_width=5
30
+ frame.show
31
+ vbox_root=Gtk::VBox::new
32
+ vbox_root.show
33
+ @window.add vbox_root
34
+ vbox_root.add frame
35
+
36
+ vbox = Gtk::VBox.new(false,0)
37
+ vbox.show
38
+ frame.add vbox
39
+
40
+ @jmx_ref_ls = Gtk::ListStore.new(String, String)
41
+ @jmx_ref_view = Gtk::TreeView.new(@jmx_ref_ls)
42
+ @jmx_ref_view.show
43
+ column1 = Gtk::TreeViewColumn.new("Name",
44
+ Gtk::CellRendererText.new, {:text => 0})
45
+ column1.set_sort_column_id(0)
46
+ column2 = Gtk::TreeViewColumn.new("Description",
47
+ Gtk::CellRendererText.new, {:text => 1})
48
+ column2.set_sort_column_id(1)
49
+
50
+ @jmx_ref_view.append_column(column1)
51
+ @jmx_ref_view.append_column(column2)
52
+
53
+ scroll = Gtk::ScrolledWindow.new(nil, nil)
54
+ scroll.border_width=2
55
+ scroll.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC)
56
+ scroll.add @jmx_ref_view
57
+ scroll.show
58
+
59
+ # Create a menu
60
+ menu = Gtk::Menu.new
61
+
62
+ item_add = Gtk::ImageMenuItem.new("Add jmx Ref")
63
+ image_item_add = Gtk::Image.new()
64
+ image_item_add.set_stock(Gtk::Stock::ADD)
65
+ item_add.set_image(image_item_add)
66
+ item_add.signal_connect("activate") { add_gui_jmx_ref() }
67
+ menu.append(item_add)
68
+ item_del = Gtk::ImageMenuItem.new("Delete selected jmx Ref")
69
+ image_item_del = Gtk::Image.new()
70
+ image_item_del.set_stock(Gtk::Stock::REMOVE)
71
+ item_del.set_image(image_item_del)
72
+ item_del.signal_connect("activate") {
73
+ if @jmx_ref_view.selection.selected!=nil
74
+ if JMXRef::del_jmx_ref(@jmx_ref_view.selection.selected[0])
75
+ @jmx_ref_view.model.remove(@jmx_ref_view.selection.selected)
76
+ else
77
+ dialog = Gtk::MessageDialog.new(@window, Gtk::Dialog::DESTROY_WITH_PARENT,
78
+ Gtk::MessageDialog::ERROR,
79
+ Gtk::MessageDialog::BUTTONS_OK,
80
+ "You can't delete! jmx Ref in use")
81
+ dialog.run
82
+ dialog.destroy
83
+ end
84
+ end
85
+ }
86
+ menu.append(item_del)
87
+ item_edit = Gtk::ImageMenuItem.new("Edit jmx Ref")
88
+ image_item_edit = Gtk::Image.new()
89
+ image_item_edit.set_stock(Gtk::Stock::EDIT)
90
+ item_edit.set_image(image_item_edit)
91
+ item_edit.signal_connect("activate") {
92
+ if @jmx_ref_view.selection.selected != nil
93
+ edit_jmx_ref(@jmx_ref_view.selection.selected[0])
94
+ end
95
+ }
96
+ menu.append(item_edit)
97
+
98
+ @jmx_ref_view.signal_connect("button_press_event") do |widget, event|
99
+ if event.kind_of? Gdk::EventButton and event.button == 3
100
+ if @jmx_ref_view.selection.selected == nil
101
+ item_del.set_sensitive(false)
102
+ item_edit.set_sensitive(false)
103
+ else
104
+ item_del.set_sensitive(true)
105
+ item_edit.set_sensitive(true)
106
+ end
107
+ menu.popup(nil, nil, event.button, event.time)
108
+ elsif (@jmx_ref_view.selection.selected != nil) && (event.event_type == Gdk::Event::BUTTON2_PRESS)
109
+ edit_jmx_ref(@jmx_ref_view.selection.selected[0])
110
+ end
111
+ end
112
+
113
+ menu.show_all
114
+
115
+ populate_ls()
116
+ vbox.add(scroll)
117
+
118
+ bbox = Gtk::HBox::new(FALSE, 10)
119
+ bbox.border_width=10
120
+ bbox.show
121
+
122
+ ok_button = Gtk::Button.new(Gtk::Stock::OK)
123
+ ok_button.show
124
+ ok_button.signal_connect("clicked") {
125
+ JMXRef::write_db_jmxref()
126
+ @window.destroy
127
+ }
128
+
129
+ cancel_button = Gtk::Button.new(Gtk::Stock::CANCEL)
130
+ cancel_button.show
131
+ cancel_button.signal_connect("clicked") {
132
+ $jmx_refs=@jmxrefs_backup
133
+ @window.destroy
134
+ }
135
+ ok_button.set_flags(Gtk::Widget::CAN_DEFAULT)
136
+ bbox.pack_start(ok_button, TRUE, TRUE, 0)
137
+ cancel_button.set_flags(Gtk::Widget::CAN_DEFAULT)
138
+ bbox.pack_start(cancel_button, TRUE, TRUE, 0)
139
+
140
+ separator = Gtk::HSeparator::new()
141
+ separator.show
142
+ vbox_root.pack_start(separator, FALSE, TRUE, 0)
143
+ vbox_root.pack_start(bbox, FALSE, TRUE, 0)
144
+
145
+ @window.show
146
+ end
147
+
148
+ def add_gui_jmx_ref()
149
+ add_modify_jmx_ref(true)
150
+ end
151
+
152
+ def edit_jmx_ref(jmx_ref_name)
153
+ add_modify_jmx_ref(false, jmx_ref_name)
154
+ end
155
+
156
+ def add_modify_jmx_ref(add_boolean, jmx_ref_name=nil)
157
+ window=Gtk::Window.new
158
+ window.set_modal(true)
159
+ lbl="Edit jmx Ref"
160
+ if add_boolean
161
+ lbl="Add jmx Ref"
162
+ end
163
+
164
+ window.set_title(lbl)
165
+ window.set_size_request(460, 200)
166
+
167
+ window.signal_connect("key_press_event") {|w,e|
168
+ if e.keyval == Gdk::Keyval::GDK_Escape
169
+ window.destroy
170
+ end
171
+ }
172
+
173
+ frame = Gtk::Frame::new
174
+ frame.border_width=10
175
+ frame.show
176
+ vbox_root=Gtk::VBox::new
177
+ vbox_root.show
178
+ window.add vbox_root
179
+ vbox_root.add frame
180
+
181
+ vbox = Gtk::VBox.new
182
+ vbox.show
183
+ frame.add vbox
184
+
185
+ table = Gtk::Table.new(4,2,false)
186
+ table.show
187
+
188
+ label_name = Gtk::Label.new "Name"
189
+ label_name.show
190
+ if add_boolean
191
+ entry_name = Gtk::Entry.new
192
+ else
193
+ entry_name = Gtk::Entry.new
194
+ entry_name.set_editable false
195
+ entry_name.set_text(jmx_ref_name)
196
+ end
197
+ entry_name.show
198
+
199
+ table.attach(label_name,0,1,0,1)
200
+ table.attach(entry_name,1,2,0,1)
201
+
202
+ entry_description = Gtk::Entry.new
203
+ if !add_boolean
204
+ entry_description.set_text($jmx_refs[entry_name.text()].description) unless entry_name.text() == ""
205
+ end
206
+ entry_description.show
207
+ label_description = Gtk::Label.new "Description"
208
+ label_description.show
209
+
210
+ table.attach(label_description,0,1,1,2)
211
+ table.attach(entry_description,1,2,1,2)
212
+
213
+ entry_mbean = Gtk::Entry.new
214
+ if !add_boolean
215
+ entry_mbean.set_text($jmx_refs[entry_name.text()].mbean) unless entry_name.text() == ""
216
+ end
217
+ entry_mbean.show
218
+ label_mbean = Gtk::Label.new "Object Name(s)"
219
+ label_mbean.show
220
+
221
+ table.attach(label_mbean,0,1,2,3)
222
+ table.attach(entry_mbean,1,2,2,3)
223
+ if !add_boolean
224
+ entry_name.signal_connect("changed") {|e|
225
+ if e.text() != ""
226
+ entry_description.set_text($jmx_refs[e.text()].description)
227
+ entry_mbean.set_text($jmx_refs[e.text()].mbean)
228
+ entry_attr.set_text($jmx_refs[e.text()].attribute)
229
+ end
230
+ }
231
+ end
232
+ entry_attr = Gtk::Entry.new
233
+ if !add_boolean
234
+ entry_attr.set_text($jmx_refs[entry_name.text()].attribute) unless entry_name.text() == ""
235
+ end
236
+ entry_attr.show
237
+ label_attr = Gtk::Label.new "Attribute Name(s)"
238
+ label_attr.show
239
+
240
+ table.attach(label_attr,0,1,3,4)
241
+ table.attach(entry_attr,1,2,3,4)
242
+
243
+
244
+ bbox =Gtk::HBox::new(FALSE, 10)
245
+ bbox.border_width=10
246
+ bbox.show
247
+
248
+ ok_button = Gtk::Button.new(Gtk::Stock::OK)
249
+ ok_button.show
250
+ ok_button.signal_connect("clicked") {
251
+ if entry_name.text == "" || entry_mbean.text == "" || entry_attr.text == ""
252
+ if entry_name.text == ""
253
+ entry_name.grab_focus
254
+ elsif entry_mbean.text == ""
255
+ entry_mbean.grab_focus
256
+ else entry_attr.grab_focus
257
+ end
258
+ else
259
+ if add_boolean
260
+ #new entry!
261
+ if $jmx_refs[entry_name.text()] == nil
262
+ JMXRef::add_jmx_ref(entry_name.text(),entry_description.text(),entry_mbean.text(),entry_attr.text())
263
+ iter = @jmx_ref_ls.append
264
+ iter[0] = entry_name.text()
265
+ iter[1] = entry_description.text()
266
+ window.destroy
267
+ else
268
+ dialog = Gtk::MessageDialog.new(window, Gtk::Dialog::DESTROY_WITH_PARENT,
269
+ Gtk::MessageDialog::ERROR,
270
+ Gtk::MessageDialog::BUTTONS_OK,
271
+ "jmx Ref '#{entry_name.text()}' already exists!")
272
+ dialog.run
273
+ dialog.destroy
274
+ end
275
+ else
276
+ #modify existing entry
277
+ $jmx_refs[entry_name.text()].description=entry_description.text()
278
+ $jmx_refs[entry_name.text()].mbean=entry_mbean.text()
279
+ $jmx_refs[entry_name.text()].attribute=entry_attr.text()
280
+ @jmx_ref_ls.each do |model,path,iter|
281
+ if iter[0] == entry_name.text()
282
+ iter[1]=entry_description.text()
283
+ break
284
+ end
285
+ end
286
+ window.destroy
287
+ end
288
+ end
289
+ }
290
+
291
+ cancel_button = Gtk::Button.new(Gtk::Stock::CANCEL)
292
+ cancel_button.show
293
+ cancel_button.signal_connect("clicked") {
294
+ window.destroy
295
+ }
296
+
297
+ ok_button.set_flags(Gtk::Widget::CAN_DEFAULT)
298
+ bbox.pack_start(ok_button, TRUE, TRUE, 0)
299
+ cancel_button.set_flags(Gtk::Widget::CAN_DEFAULT)
300
+ bbox.pack_start(cancel_button, TRUE, TRUE, 0)
301
+
302
+ vbox.add(table)
303
+ separator = Gtk::HSeparator::new()
304
+ separator.show
305
+ vbox_root.pack_start(separator, FALSE, TRUE, 0)
306
+ vbox_root.pack_start(bbox, FALSE, TRUE, 0)
307
+ window.show
308
+ end
309
+ end