class SettingsWin(QFrame): def __init__(self, parent = None, cenwid = None, status=None): QFrame.__init__(self, parent) self.title = translate('Settings', "Patterns") connect = lambda c, signal, s: self.connect(c, SIGNAL(signal), s) self.setFrameStyle(QFrame.Box) self.listbox = ListBox() self.listbox.setSelectionMode(self.listbox.ExtendedSelection) buttons = ListButtons() self.listbox.addItems(status['patterns']) hbox = QHBoxLayout() hbox.addWidget(self.listbox) self.setLayout(hbox) vbox = QVBoxLayout() sortlistbox = QPushButton(translate("Pattern Settings", '&Sort')) self._sortOrder = Qt.AscendingOrder connect(sortlistbox, 'clicked()', self._sortListBox) vbox.addWidget(sortlistbox) vbox.addLayout(buttons) vbox.addStretch() hbox.addLayout(vbox) connect(buttons, "add", self.addPattern) connect(buttons, "edit", self.editItem) buttons.duplicate.setVisible(False) self.listbox.connectToListButtons(buttons) self.listbox.editButton = buttons.edit connect(self.listbox, 'itemDoubleClicked(QListWidgetItem *)', self._doubleClicked) def _sortListBox(self): if self._sortOrder == Qt.AscendingOrder: self.listbox.sortItems(Qt.DescendingOrder) self._sortOrder = Qt.DescendingOrder else: self.listbox.sortItems(Qt.AscendingOrder) self._sortOrder = Qt.AscendingOrder def saveSettings(self): patterns = [unicode(self.listbox.item(row).text()) for row in xrange(self.listbox.count())] cparser = PuddleConfig() cparser.setSection('editor', 'patterns', patterns) def addPattern(self): l = self.listbox.item patterns = [unicode(l(z).text()) for z in range(self.listbox.count())] row = self.listbox.currentRow() if row < 0: row = 0 (text, ok) = QInputDialog().getItem(self, 'puddletag', translate("Pattern Settings", 'Enter a pattern'), patterns, row) if ok: self.listbox.clearSelection() self.listbox.addItem(text) self.listbox.setCurrentRow(self.listbox.count() - 1) def _doubleClicked(self, item): self.editItem() def editItem(self, row=None): if row is None: row = self.listbox.currentRow() l = self.listbox.item patterns = [unicode(l(z).text()) for z in range(self.listbox.count())] (text, ok) = QInputDialog().getItem (self, 'puddletag', translate("Pattern Settings", 'Enter a pattern'), patterns, row) if ok: item = l(row) item.setText(text) self.listbox.setItemSelected(item, True) def applySettings(self, control): item = self.listbox.item patterns = [item(row).text() for row in xrange(self.listbox.count())] control.setItems(patterns)
class SettingsWin(QFrame): def __init__(self, parent=None, cenwid=None, status=None): QFrame.__init__(self, parent) self.title = translate('Settings', "Patterns") connect = lambda c, signal, s: self.connect(c, SIGNAL(signal), s) self.setFrameStyle(QFrame.Box) self.listbox = ListBox() self.listbox.setSelectionMode(self.listbox.ExtendedSelection) buttons = ListButtons() self.listbox.addItems(status['patterns']) hbox = QHBoxLayout() hbox.addWidget(self.listbox) self.setLayout(hbox) vbox = QVBoxLayout() sortlistbox = QPushButton(translate("Pattern Settings", '&Sort')) self._sortOrder = Qt.AscendingOrder connect(sortlistbox, 'clicked()', self._sortListBox) vbox.addWidget(sortlistbox) vbox.addLayout(buttons) vbox.addStretch() hbox.addLayout(vbox) connect(buttons, "add", self.addPattern) connect(buttons, "edit", self.editItem) buttons.duplicate.setVisible(False) self.listbox.connectToListButtons(buttons) self.listbox.editButton = buttons.edit connect(self.listbox, 'itemDoubleClicked(QListWidgetItem *)', self._doubleClicked) def _sortListBox(self): if self._sortOrder == Qt.AscendingOrder: self.listbox.sortItems(Qt.DescendingOrder) self._sortOrder = Qt.DescendingOrder else: self.listbox.sortItems(Qt.AscendingOrder) self._sortOrder = Qt.AscendingOrder def saveSettings(self): patterns = [ unicode(self.listbox.item(row).text()) for row in xrange(self.listbox.count()) ] cparser = PuddleConfig() cparser.setSection('editor', 'patterns', patterns) def addPattern(self): l = self.listbox.item patterns = [unicode(l(z).text()) for z in range(self.listbox.count())] row = self.listbox.currentRow() if row < 0: row = 0 (text, ok) = QInputDialog().getItem( self, 'puddletag', translate("Pattern Settings", 'Enter a pattern'), patterns, row) if ok: self.listbox.clearSelection() self.listbox.addItem(text) self.listbox.setCurrentRow(self.listbox.count() - 1) def _doubleClicked(self, item): self.editItem() def editItem(self, row=None): if row is None: row = self.listbox.currentRow() l = self.listbox.item patterns = [unicode(l(z).text()) for z in range(self.listbox.count())] (text, ok) = QInputDialog().getItem( self, 'puddletag', translate("Pattern Settings", 'Enter a pattern'), patterns, row) if ok: item = l(row) item.setText(text) self.listbox.setItemSelected(item, True) def applySettings(self, control): item = self.listbox.item patterns = [item(row).text() for row in xrange(self.listbox.count())] control.setItems(patterns)
class ButtonsAndList(QFrame): def __init__(self, parent=None, title=u'', add_text=ADD_TEXT, help_text=u''): QFrame.__init__(self, parent) self.title = title connect = lambda c, signal, s: self.connect(c, SIGNAL(signal), s) self.setFrameStyle(QFrame.Box) self.listbox = ListBox() self.listbox.setSelectionMode(self.listbox.ExtendedSelection) buttons = ListButtons() hbox = QHBoxLayout() hbox.addWidget(self.listbox) vbox = QVBoxLayout() sortlistbox = QPushButton(translate("Defaults", '&Sort')) self._sortOrder = Qt.AscendingOrder connect(sortlistbox, 'clicked()', self._sortListBox) vbox.addWidget(sortlistbox) vbox.addLayout(buttons) vbox.addStretch() hbox.addLayout(vbox) if help_text: label = QLabel(help_text) layout = QVBoxLayout() layout.addWidget(label) layout.addLayout(hbox, 1) self.setLayout(layout) else: self.setLayout(hbox) connect(buttons, "add", self.addItem) connect(buttons, "edit", self.editItem) buttons.duplicate.setVisible(False) self.listbox.connectToListButtons(buttons) self.listbox.editButton = buttons.edit connect(self.listbox, 'itemDoubleClicked(QListWidgetItem *)', self._doubleClicked) self.addText = add_text def _doubleClicked(self, item): self.editItem() def _sortListBox(self): if self._sortOrder == Qt.AscendingOrder: self.listbox.sortItems(Qt.DescendingOrder) self._sortOrder = Qt.DescendingOrder else: self.listbox.sortItems(Qt.AscendingOrder) self._sortOrder = Qt.AscendingOrder def addItem(self): l = self.listbox.item patterns = [unicode(l(z).text()) for z in range(self.listbox.count())] row = self.listbox.currentRow() if row < 0: row = 0 (text, ok) = QInputDialog().getItem(self, 'puddletag', self.addText, patterns, row) if ok: self.listbox.clearSelection() self.listbox.addItem(text) self.listbox.setCurrentRow(self.listbox.count() - 1) def addItems(self, items): self.listbox.addItems(items) def editItem(self, row=None): if row is None: row = self.listbox.currentRow() l = self.listbox.item patterns = [unicode(l(z).text()) for z in range(self.listbox.count())] (text, ok) = QInputDialog().getItem(self, 'puddletag', self.addText, patterns, row) if ok: item = l(row) item.setText(text) self.listbox.setItemSelected(item, True) def getItems(self): return [item.text() for item in self.listbox.items()]
class ButtonsAndList(QFrame): def __init__(self, parent=None, title=u'', add_text=ADD_TEXT, help_text=u''): QFrame.__init__(self, parent) self.title = title connect = lambda c, signal, s: self.connect(c, SIGNAL(signal), s) self.setFrameStyle(QFrame.Box) self.listbox = ListBox() self.listbox.setSelectionMode(self.listbox.ExtendedSelection) buttons = ListButtons() hbox = QHBoxLayout() hbox.addWidget(self.listbox) vbox = QVBoxLayout() sortlistbox = QPushButton(translate("Defaults", '&Sort')) self._sortOrder = Qt.AscendingOrder connect(sortlistbox, 'clicked()', self._sortListBox) vbox.addWidget(sortlistbox) vbox.addLayout(buttons) vbox.addStretch() hbox.addLayout(vbox) if help_text: label = QLabel(help_text) layout = QVBoxLayout() layout.addWidget(label) layout.addLayout(hbox, 1) self.setLayout(layout) else: self.setLayout(hbox) connect(buttons, "add", self.addItem) connect(buttons, "edit", self.editItem) buttons.duplicate.setVisible(False) self.listbox.connectToListButtons(buttons) self.listbox.editButton = buttons.edit connect(self.listbox, 'itemDoubleClicked(QListWidgetItem *)', self._doubleClicked) self.addText = add_text def _doubleClicked(self, item): self.editItem() def _sortListBox(self): if self._sortOrder == Qt.AscendingOrder: self.listbox.sortItems(Qt.DescendingOrder) self._sortOrder = Qt.DescendingOrder else: self.listbox.sortItems(Qt.AscendingOrder) self._sortOrder = Qt.AscendingOrder def addItem(self): l = self.listbox.item patterns = [unicode(l(z).text()) for z in range(self.listbox.count())] row = self.listbox.currentRow() if row < 0: row = 0 (text, ok) = QInputDialog().getItem(self, 'puddletag', self.addText, patterns, row) if ok: self.listbox.clearSelection() self.listbox.addItem(text) self.listbox.setCurrentRow(self.listbox.count() - 1) def addItems(self, items): self.listbox.addItems(items) def editItem(self, row=None): if row is None: row = self.listbox.currentRow() l = self.listbox.item patterns = [unicode(l(z).text()) for z in range(self.listbox.count())] (text, ok) = QInputDialog().getItem (self, 'puddletag', self.addText, patterns, row) if ok: item = l(row) item.setText(text) self.listbox.setItemSelected(item, True) def getItems(self): return [item.text() for item in self.listbox.items()]