from .Qt import QtWidgets, QtCore
from .arg import Arg
[docs]class Enum(Arg):
""" Enum argument widget. Enumerates choices.
:param default: The default value, defaults to ""
:type default: list of str, optional
:param enums: The list of choices, defaults to []
:type enums: list of str, optional
:param enumsDescriptions: The list of choices descriptions, defaults to []
:type enumsDescriptions: int, optional
:return: The new instance
:rtype: :class:`~qargparser.enum.Enum` instance
"""
def create(self):
#Widget
wdg = QtWidgets.QComboBox()
self.wdg = wdg
#Init
self._init()
#Connections
self._write = lambda x: wdg.setCurrentIndex(wdg.findText(x, QtCore.Qt.MatchExactly))
self._read = lambda: wdg.itemText(wdg.currentIndex())
wdg.currentIndexChanged.connect(lambda x: self.on_changed(wdg.itemText(x)))
return wdg
def _init(self):
self.wdg.addItems(self._data["enums"])
if (self._data['default'] is not None
and self._data['default'] in self._data["enums"]):
idx = self.wdg.findText(self._data['default'], QtCore.Qt.MatchExactly)
self.wdg.setCurrentIndex(idx)
else:
idx = self.wdg.currentIndex()
text = self.wdg.itemText(idx)
self._data['default'] = text
#Descriptions
descs = self._data['enumsDescriptions']
for i in range(len(self._data["enums"])):
if i < len(descs):
self.wdg.setItemData(i, descs[i], QtCore.Qt.ToolTipRole)
def reset(self):
self._write(self._data['default'])
def _update(self):
super(Enum, self)._update()
self.wdg.clear()
self._init()