#!/usr/bin/env python

from qt import *
import sys
from DeviceManager import *

class DeviceManagerMain(QApplication):
	
	def __init__(self, args):
		"""constrict QApplication, add widgets, exec"""
		QApplication.__init__(self, args)
		
		self.mainWindow = QMainWindow(None, "Device Manager")
		self.mainWidget = DeviceManagerWidget(self.mainWindow)
		self.mainWindow.setCentralWidget(self.mainWidget)
		self.setMainWidget(self.mainWindow)
		
		self.mainWindow.setIcon(QPixmap(Const.DATADIR + "/fdo-logo.png"))
		self.mainWindow.setCaption("Hal Device Manager")
		
		menuBar = self.mainWindow.menuBar()
		fileMenu = QPopupMenu(self.mainWindow)
		menuBar.insertItem("&File", fileMenu)
		quitAction = QAction("Quit", self.CTRL+self.Key_Q, fileMenu, "quit")
		self.connect(quitAction, SIGNAL("activated()"), self.quitSlot)
		quitAction.addTo(fileMenu)
		
		viewMenu = QPopupMenu(self.mainWindow)
		menuBar.insertItem("&View", viewMenu)
		virtualAction = QAction("Show Virtual Devices", self.CTRL+self.Key_V, viewMenu, "show")
		virtualAction.setToggleAction(True)
		self.connect(virtualAction, SIGNAL("toggled(bool)"), self.toggledSlot)
		virtualAction.addTo(viewMenu)
		
		reloadAction = QAction("Reload Devices", self.CTRL+self.Key_R, viewMenu, "reload")
		self.connect(virtualAction, SIGNAL("activated()"), self.reloadSlot)
		reloadAction.addTo(viewMenu)
		
		helpMenu = QPopupMenu(self.mainWindow)
		menuBar.insertItem("&Help", helpMenu)
		aboutAction = QAction("About", self.CTRL+self.Key_A, fileMenu, "about")
		self.connect(aboutAction, SIGNAL("activated()"), self.aboutSlot)
		aboutAction.addTo(helpMenu)
		
		self.mainWidget.show()
		self.mainWindow.show()
		self.exec_loop()
		
	def quitSlot(self):
		self.quit()
		
	def toggledSlot(self, on):
		print "on: " + str(on)
		self.mainWidget.setVirtual(on)
		
	def reloadSlot(self):
		self.mainWidget.update_device_list()
		
	def aboutSlot(self):
		QMessageBox.about(self.mainWindow, "About HAL Device Manager", "<b>" + Const.NAME_LONG + " " + Const.VERSION + "</b><br />" + Const.COPYRIGHT)

if __name__ == "__main__":
	app = DeviceManagerMain(sys.argv)
