def __init__(self, module, moduleparser, parent=None):
		"""Instantiate a ListItemWidget widget

		containing a option in category
		@param	self		A ListItemWidget instance
		@param	module		String containing module name
		@param	moduleparser	A LTCModuleParser instance
		@param	parent		Parent QtGui.QListWidget
		"""
		self.expanded = False
		self.module = module
		self.parent = parent
		self.moduleparser = moduleparser
		self.listItem = QtGui.QListWidgetItem(parent)

		QtGui.QWidget.__init__(self, parent)

		self.ui = Ui_listItemWidget()
		self.ui.setupUi(self)

		self.ui.prettyLabel.setText(moduleparser.getModulePrettyName(module))
		self.ui.prettyLabel_2.setText(moduleparser.getModulePrettyName(module))
		self.ui.descriptionText.setHtml(
			moduleparser.getModuleDescription(module))

		if not moduleparser.getModuleConfigurable(module):
			self.ui.configureButton.setEnabled(False)
		else:
			self.ui.configureButton.clicked.connect(self.config)

		self.parent.setItemWidget(self.listItem, self)
		self.setExpanded(False)
class ListItemWidget(QtGui.QWidget):
	"""Creates the QListWidgetItem widget of a module into cateogory"""
	def __init__(self, module, moduleparser, parent=None):
		"""Instantiate a ListItemWidget widget

		containing a option in category
		@param	self		A ListItemWidget instance
		@param	module		String containing module name
		@param	moduleparser	A LTCModuleParser instance
		@param	parent		Parent QtGui.QListWidget
		"""
		self.expanded = False
		self.module = module
		self.parent = parent
		self.moduleparser = moduleparser
		self.listItem = QtGui.QListWidgetItem(parent)

		QtGui.QWidget.__init__(self, parent)

		self.ui = Ui_listItemWidget()
		self.ui.setupUi(self)

		self.ui.prettyLabel.setText(moduleparser.getModulePrettyName(module))
		self.ui.prettyLabel_2.setText(moduleparser.getModulePrettyName(module))
		self.ui.descriptionText.setHtml(
			moduleparser.getModuleDescription(module))

		if not moduleparser.getModuleConfigurable(module):
			self.ui.configureButton.setEnabled(False)
		else:
			self.ui.configureButton.clicked.connect(self.config)

		self.parent.setItemWidget(self.listItem, self)
		self.setExpanded(False)

	def setActivated(self, activated=None):
		"""Set this module activated or not

		@param	self		A ListItemWidget instance
		@param	activated	Bool
		"""
		# if None, toggle
		if activated is None:
			activated = not self.activated

		self.activated = activated

		# Refresh description, that may contain current config infos
		self.ui.descriptionText.setHtml(
			self.moduleparser.getModuleDescription(self.module))

		self.ui.toggleButtonCol.setChecked(activated)
		self.ui.toggleButtonExp.setChecked(activated)
		if activated:
			self.ui.toggleButtonExp.setText(self.tr("Activated"))
			self.ui.toggleButtonExp.setIcon(QtGui.QIcon(":/edit_icon/ok.png"))
			self.ui.toggleButtonCol.setIcon(QtGui.QIcon(":/edit_icon/ok.png"))
		else:
			self.ui.toggleButtonExp.setText(self.tr("Deactivated"))
			self.ui.toggleButtonExp.setIcon(QtGui.QIcon(":/edit_icon/close.png"))
			self.ui.toggleButtonCol.setIcon(QtGui.QIcon(":/edit_icon/close.png"))

	def setExpanded(self, value=None):
		"""Set if a item is expanded or not

		Expand are set hiding self.ui.collapsedWid and showing
		self.ui.expandedWid. This widgets have fixed vertical sizePolicy set.
		@param	self		A ListItemWidget instance
		@param	value		Bool. If true, set item expanded
		"""
		# If None, toggle
		if value == None:
			value = not self.expanded

		if value:
			self.listItem.setSelected(True)
			self.ui.collapsedWid.hide()
			self.ui.expandedWid.show()
			self.listItem.setSizeHint(self.ui.expandedWid.size())
		else:
			self.ui.expandedWid.hide()
			self.ui.collapsedWid.show()
			self.listItem.setSizeHint(self.ui.collapsedWid.size())

		self.expanded = value

	def config(self):
		"""Show module's configuration dialog

		@param	self		A LTCModuleParser instance
		"""
		self.moduleparser.configModule(self.module, self.parent)
		self.setActivated(self.activated)