def login(self, widget, data = None):
		"""
		Login to the application.
		"""
		# first, create the nms_accessor
		self.nms_accessor = NMSAccessor(self.inputbox.get_text())
		# then, login
		self.nms_accessor.login(self.uname_box.get_text(),
				self.passwd_box.get_text())
		# then, set up the choice of devices to activate
		self.combobox = gtk.combo_box_new_text()
		combo_data = self.nms_accessor.get_devices()
		for data in combo_data:
			self.combobox.append_text(data)
		self.combobox.set_active(1)
		self.combobox.connect('changed', self.change_device)

		self.vbox.remove(self.login_box)
		self.vbox.pack_start(self.combobox, expand = False)

		self.change_device(None)

		self.show_all()
class Window(gtk.Window):
	"""
	Top-level window of the application.
	"""

	def delete_event(self, widget, event, data=None):
		"""
		Close the window and exit.
		"""
		gtk.main_quit()
		return False

	def __init__(self):
		"""
		Create the top-level window and add children to it.
		"""
		gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)

		self.scrolled = None
		self.scrolled_text = None
		self.treeview = None
		self.textview = None
		self.set_box = None

		self.set_title("Noname MIB 'Browser'")
		self.set_size_request(640, 480)
		self.connect('delete_event', self.delete_event)

		label = gtk.Label('Address: ')
		self.inputbox = gtk.Entry()
		self.hbox = gtk.HBox()
		self.hbox.pack_start(label, expand = False)
		self.hbox.pack_start(self.inputbox)

		self.login_box = gtk.HBox()
		label = gtk.Label('Username: '******'Password: '******'Login')
		button.connect('clicked', self.login)
		self.login_box.pack_start(button)

		self.vbox = gtk.VBox()
		self.vbox.pack_start(self.hbox, expand=False)
		self.vbox.pack_start(self.login_box, expand = False)

		self.add(self.vbox)

		self.show_all()

	def login(self, widget, data = None):
		"""
		Login to the application.
		"""
		# first, create the nms_accessor
		self.nms_accessor = NMSAccessor(self.inputbox.get_text())
		# then, login
		self.nms_accessor.login(self.uname_box.get_text(),
				self.passwd_box.get_text())
		# then, set up the choice of devices to activate
		self.combobox = gtk.combo_box_new_text()
		combo_data = self.nms_accessor.get_devices()
		for data in combo_data:
			self.combobox.append_text(data)
		self.combobox.set_active(1)
		self.combobox.connect('changed', self.change_device)

		self.vbox.remove(self.login_box)
		self.vbox.pack_start(self.combobox, expand = False)

		self.change_device(None)

		self.show_all()

	def change_device(self, widget, data = None):
		"""
		Change which device we're looking at.
		"""

		if self.set_box is None:
			self.set_box = gtk.HBox()
			label = gtk.Label('OID: ')
			self.set_box.pack_start(label, expand = False)
			self.set_entry_oid = gtk.Entry()
			self.set_box.pack_start(self.set_entry_oid)
			label = gtk.Label('Value: ')
			self.set_box.pack_start(label, expand = False)
			self.set_entry_value = gtk.Entry()
			self.set_box.pack_start(self.set_entry_value)
			button = gtk.Button('Set')
			button.connect('clicked', self.set_value)
			self.set_box.pack_start(button, expand = False)
			
			self.vbox.pack_start(self.set_box, expand = False)


		if self.scrolled is not None:
			self.vbox.remove(self.scrolled)
		if self.scrolled_text is not None:
			self.vbox.remove(self.scrolled_text)

		self.scrolled = gtk.ScrolledWindow()
		self.scrolled_text = gtk.ScrolledWindow()

		self.textview = TextView()

		self.treeview = TreeView(self.textview,
				self.nms_accessor, 
				self.combobox.get_active_text())

		if self.treeview is not None:
			self.scrolled.remove(self.treeview)
		self.scrolled.add_with_viewport(self.treeview)
		if self.textview is not None:
			self.scrolled_text.remove(self.textview)
		self.scrolled_text.add_with_viewport(self.textview)

		self.vbox.pack_start(self.scrolled)
		self.vbox.pack_start(self.scrolled_text)

		self.show_all()
	
	def set_value(self, widget, data = None):
		"""
		Set the value at the OID in self.set_entry_oid
		"""
		self.nms_accessor.set_value(self.combobox.get_active_text(),
				self.set_entry_oid.get_text(),
				self.set_entry_value.get_text())

	def run(self):
		"""
		Run the application.
		"""
		gtk.main()
		return