Sat, 31 Dec 2022 16:27:58 +0100
Updated copyright for 2023.
# -*- coding: utf-8 -*- # Copyright (c) 2013 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing the Print Remover configuration page. """ import os from PyQt6.QtCore import pyqtSlot from PyQt6.QtWidgets import QInputDialog, QLineEdit, QListWidgetItem from eric7.EricWidgets.EricApplication import ericApp from eric7.Preferences.ConfigurationPages.ConfigurationPageBase import ( ConfigurationPageBase, ) from .Ui_PrintRemoverPage import Ui_PrintRemoverPage try: from eric7.EricGui import EricPixmapCache except ImportError: from UI import PixmapCache as EricPixmapCache class PrintRemoverPage(ConfigurationPageBase, Ui_PrintRemoverPage): """ Class implementing the Print Remover configuration page. """ def __init__(self, plugin): """ Constructor @param plugin reference to the plugin object @type PrintRemoverPlugin """ super().__init__() self.setupUi(self) self.setObjectName("PrintRemoverPage") usesDarkPalette = ericApp().usesDarkPalette() iconSuffix = "dark" if usesDarkPalette else "light" self.editButton.setIcon( EricPixmapCache.getIcon( os.path.join("PrintRemover", "icons", "edit-{0}".format(iconSuffix)) ) ) self.addButton.setIcon(EricPixmapCache.getIcon("plus")) self.addSeparatorButton.setIcon( EricPixmapCache.getIcon( os.path.join( "PrintRemover", "icons", "separatorAdd-{0}".format(iconSuffix) ) ) ) self.deleteButton.setIcon(EricPixmapCache.getIcon("minus")) self.upButton.setIcon(EricPixmapCache.getIcon("1uparrow")) self.downButton.setIcon(EricPixmapCache.getIcon("1downarrow")) self.editButton.setEnabled(False) self.deleteButton.setEnabled(False) self.upButton.setEnabled(False) self.downButton.setEnabled(False) self.__plugin = plugin # set initial values for pattern in self.__plugin.getPreferences("StartswithStrings"): if pattern == "--Separator--": pattern = self.tr("--Separator--") QListWidgetItem(pattern, self.patternList) def save(self): """ Public slot to save the Print Remover configuration. """ patterns = [] for row in range(self.patternList.count()): itm = self.patternList.item(row) pattern = itm.text() if pattern == self.tr("--Separator--"): pattern = "--Separator--" patterns.append(pattern) self.__plugin.setPreferences("StartswithStrings", patterns) @pyqtSlot() def on_patternList_itemSelectionChanged(self): """ Private slot to handle the selection of patterns. """ if len(self.patternList.selectedItems()) == 0: self.editButton.setEnabled(False) self.deleteButton.setEnabled(False) self.upButton.setEnabled(False) self.downButton.setEnabled(False) else: itm = self.patternList.selectedItems()[0] self.editButton.setEnabled(itm.text() != self.tr("--Separator--")) self.deleteButton.setEnabled(True) self.upButton.setEnabled(self.patternList.row(itm) > 0) self.downButton.setEnabled( self.patternList.row(itm) < self.patternList.count() - 1 ) @pyqtSlot() def on_editButton_clicked(self): """ Private slot to edit the selected entry. """ itm = self.patternList.selectedItems()[0] pattern, ok = QInputDialog.getText( self, self.tr("Line Start Pattern"), self.tr("Enter a line start pattern:"), QLineEdit.EchoMode.Normal, itm.text(), ) if ok and pattern: itm.setText(pattern) @pyqtSlot() def on_addButton_clicked(self): """ Private slot add a pattern to the list. """ pattern, ok = QInputDialog.getText( self, self.tr("Line Start Pattern"), self.tr("Enter a line start pattern:"), QLineEdit.EchoMode.Normal, ) if ok and pattern: itm = QListWidgetItem(pattern) if len(self.patternList.selectedItems()): row = self.patternList.row(self.patternList.selectedItems()[0]) + 1 self.patternList.insertItem(row, itm) for sitm in self.patternList.selectedItems(): sitm.setSelected(False) else: self.patternList.addItem(itm) itm.setSelected(True) @pyqtSlot() def on_addSeparatorButton_clicked(self): """ Private slot add a separator to the list. """ itm = QListWidgetItem(self.tr("--Separator--")) if len(self.patternList.selectedItems()): row = self.patternList.row(self.patternList.selectedItems()[0]) + 1 self.patternList.insertItem(row, itm) for sitm in self.patternList.selectedItems(): sitm.setSelected(False) else: self.patternList.addItem(itm) itm.setSelected(True) @pyqtSlot() def on_deleteButton_clicked(self): """ Private slot to delete the selected entry. """ itm = self.patternList.selectedItems()[0] self.patternList.takeItem(self.patternList.row(itm)) del itm @pyqtSlot() def on_upButton_clicked(self): """ Private slot to move an entry up. """ self.__moveSelectedEntry(True) @pyqtSlot() def on_downButton_clicked(self): """ Private slot to move an entry down. """ self.__moveSelectedEntry(False) def __moveSelectedEntry(self, moveUp): """ Private method to move the selected entry up or down. @param moveUp flag indicating to move the entry up @type bool """ itm = self.patternList.selectedItems()[0] row = self.patternList.row(itm) newRow = row - 1 if moveUp else row + 1 self.patternList.takeItem(row) self.patternList.insertItem(newRow, itm) for sitm in self.patternList.selectedItems(): sitm.setSelected(False) itm.setSelected(True)