Update status/import label form code (#1308)
This commit is contained in:
@@ -26,8 +26,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
import logging
|
import logging
|
||||||
import novelwriter
|
import novelwriter
|
||||||
|
|
||||||
from PyQt5.QtGui import QIcon, QPixmap, QColor, QBrush
|
from PyQt5.QtGui import QIcon, QPixmap, QColor
|
||||||
from PyQt5.QtCore import Qt, QLocale
|
from PyQt5.QtCore import Qt, QLocale, pyqtSlot
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QColorDialog, QComboBox, QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit,
|
QColorDialog, QComboBox, QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit,
|
||||||
QPushButton, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget
|
QPushButton, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget
|
||||||
@@ -300,7 +300,7 @@ class GuiProjectEditStatus(QWidget):
|
|||||||
|
|
||||||
self.colDeleted = []
|
self.colDeleted = []
|
||||||
self.colChanged = False
|
self.colChanged = False
|
||||||
self.selColour = QColor(100, 100, 100)
|
self.selColour = QColor(100, 100, 100)
|
||||||
|
|
||||||
self.iPx = self.mainTheme.baseIconSize
|
self.iPx = self.mainTheme.baseIconSize
|
||||||
|
|
||||||
@@ -338,16 +338,18 @@ class GuiProjectEditStatus(QWidget):
|
|||||||
|
|
||||||
self.editName = QLineEdit()
|
self.editName = QLineEdit()
|
||||||
self.editName.setMaxLength(40)
|
self.editName.setMaxLength(40)
|
||||||
self.editName.setEnabled(False)
|
|
||||||
self.editName.setPlaceholderText(self.tr("Select item to edit"))
|
self.editName.setPlaceholderText(self.tr("Select item to edit"))
|
||||||
|
self.editName.setEnabled(False)
|
||||||
|
|
||||||
self.colPixmap = QPixmap(self.iPx, self.iPx)
|
self.colPixmap = QPixmap(self.iPx, self.iPx)
|
||||||
self.colPixmap.fill(QColor(100, 100, 100))
|
self.colPixmap.fill(QColor(100, 100, 100))
|
||||||
self.colButton = QPushButton(QIcon(self.colPixmap), self.tr("Colour"))
|
self.colButton = QPushButton(QIcon(self.colPixmap), self.tr("Colour"))
|
||||||
self.colButton.setIconSize(self.colPixmap.rect().size())
|
self.colButton.setIconSize(self.colPixmap.rect().size())
|
||||||
|
self.colButton.setEnabled(False)
|
||||||
self.colButton.clicked.connect(self._selectColour)
|
self.colButton.clicked.connect(self._selectColour)
|
||||||
|
|
||||||
self.saveButton = QPushButton(self.tr("Save"))
|
self.saveButton = QPushButton(self.tr("Save"))
|
||||||
|
self.saveButton.setEnabled(False)
|
||||||
self.saveButton.clicked.connect(self._saveItem)
|
self.saveButton.clicked.connect(self._saveItem)
|
||||||
|
|
||||||
# Assemble
|
# Assemble
|
||||||
@@ -399,9 +401,10 @@ class GuiProjectEditStatus(QWidget):
|
|||||||
return [], []
|
return [], []
|
||||||
|
|
||||||
##
|
##
|
||||||
# User Actions
|
# Private Slots
|
||||||
##
|
##
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
def _selectColour(self):
|
def _selectColour(self):
|
||||||
"""Open a dialog to select the status icon colour.
|
"""Open a dialog to select the status icon colour.
|
||||||
"""
|
"""
|
||||||
@@ -417,20 +420,20 @@ class GuiProjectEditStatus(QWidget):
|
|||||||
self.colButton.setIconSize(pixmap.rect().size())
|
self.colButton.setIconSize(pixmap.rect().size())
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
def _newItem(self):
|
def _newItem(self):
|
||||||
"""Create a new status item.
|
"""Create a new status item.
|
||||||
"""
|
"""
|
||||||
newItem = self._addItem(None, self.tr("New Item"), (100, 100, 100), 0)
|
self._addItem(None, self.tr("New Item"), (100, 100, 100), 0)
|
||||||
newItem.setBackground(self.COL_LABEL, QBrush(QColor(0, 255, 0, 70)))
|
|
||||||
newItem.setBackground(self.COL_USAGE, QBrush(QColor(0, 255, 0, 70)))
|
|
||||||
self.colChanged = True
|
self.colChanged = True
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
def _delItem(self):
|
def _delItem(self):
|
||||||
"""Delete a status item.
|
"""Delete a status item.
|
||||||
"""
|
"""
|
||||||
selItem = self._getSelectedItem()
|
selItem = self._getSelectedItem()
|
||||||
if selItem is not None:
|
if isinstance(selItem, QTreeWidgetItem):
|
||||||
iRow = self.listBox.indexOfTopLevelItem(selItem)
|
iRow = self.listBox.indexOfTopLevelItem(selItem)
|
||||||
if selItem.data(self.COL_LABEL, self.NUM_ROLE) > 0:
|
if selItem.data(self.COL_LABEL, self.NUM_ROLE) > 0:
|
||||||
self.mainGui.makeAlert(self.tr(
|
self.mainGui.makeAlert(self.tr(
|
||||||
@@ -442,21 +445,60 @@ class GuiProjectEditStatus(QWidget):
|
|||||||
self.colChanged = True
|
self.colChanged = True
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
def _saveItem(self):
|
def _saveItem(self):
|
||||||
"""Save changes made to a status item.
|
"""Save changes made to a status item.
|
||||||
"""
|
"""
|
||||||
selItem = self._getSelectedItem()
|
selItem = self._getSelectedItem()
|
||||||
if selItem is not None:
|
if isinstance(selItem, QTreeWidgetItem):
|
||||||
selItem.setText(self.COL_LABEL, simplified(self.editName.text()))
|
selItem.setText(self.COL_LABEL, simplified(self.editName.text()))
|
||||||
selItem.setIcon(self.COL_LABEL, self.colButton.icon())
|
selItem.setIcon(self.COL_LABEL, self.colButton.icon())
|
||||||
selItem.setData(self.COL_LABEL, self.COL_ROLE, (
|
selItem.setData(self.COL_LABEL, self.COL_ROLE, (
|
||||||
self.selColour.red(), self.selColour.green(), self.selColour.blue()
|
self.selColour.red(), self.selColour.green(), self.selColour.blue()
|
||||||
))
|
))
|
||||||
self.editName.setEnabled(False)
|
|
||||||
self.colChanged = True
|
self.colChanged = True
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def _selectedItem(self):
|
||||||
|
"""Extract the info of a selected item and populate the settings
|
||||||
|
boxes and button. If no item is selected, clear the form.
|
||||||
|
"""
|
||||||
|
selItem = self._getSelectedItem()
|
||||||
|
if isinstance(selItem, QTreeWidgetItem):
|
||||||
|
cols = selItem.data(self.COL_LABEL, self.COL_ROLE)
|
||||||
|
name = selItem.text(self.COL_LABEL)
|
||||||
|
|
||||||
|
pixmap = QPixmap(self.iPx, self.iPx)
|
||||||
|
pixmap.fill(QColor(*cols))
|
||||||
|
self.selColour = QColor(*cols)
|
||||||
|
self.editName.setText(name)
|
||||||
|
self.colButton.setIcon(QIcon(pixmap))
|
||||||
|
self.editName.selectAll()
|
||||||
|
self.editName.setFocus()
|
||||||
|
|
||||||
|
self.editName.setEnabled(True)
|
||||||
|
self.colButton.setEnabled(True)
|
||||||
|
self.saveButton.setEnabled(True)
|
||||||
|
|
||||||
|
else:
|
||||||
|
pixmap = QPixmap(self.iPx, self.iPx)
|
||||||
|
pixmap.fill(QColor(100, 100, 100))
|
||||||
|
self.selColour = QColor(100, 100, 100)
|
||||||
|
self.editName.setText("")
|
||||||
|
self.colButton.setIcon(QIcon(pixmap))
|
||||||
|
|
||||||
|
self.editName.setEnabled(False)
|
||||||
|
self.colButton.setEnabled(False)
|
||||||
|
self.saveButton.setEnabled(False)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
##
|
||||||
|
# Internal Functions
|
||||||
|
##
|
||||||
|
|
||||||
def _addItem(self, key, name, cols, count):
|
def _addItem(self, key, name, cols, count):
|
||||||
"""Add a status item to the list.
|
"""Add a status item to the list.
|
||||||
"""
|
"""
|
||||||
@@ -473,7 +515,7 @@ class GuiProjectEditStatus(QWidget):
|
|||||||
|
|
||||||
self.listBox.addTopLevelItem(item)
|
self.listBox.addTopLevelItem(item)
|
||||||
|
|
||||||
return item
|
return
|
||||||
|
|
||||||
def _moveItem(self, step):
|
def _moveItem(self, step):
|
||||||
"""Move and item up or down step.
|
"""Move and item up or down step.
|
||||||
@@ -498,32 +540,6 @@ class GuiProjectEditStatus(QWidget):
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def _selectedItem(self):
|
|
||||||
"""Extract the info of a selected item and populate the settings
|
|
||||||
boxes and button.
|
|
||||||
"""
|
|
||||||
selItem = self._getSelectedItem()
|
|
||||||
if selItem is None:
|
|
||||||
return
|
|
||||||
|
|
||||||
cols = selItem.data(self.COL_LABEL, self.COL_ROLE)
|
|
||||||
name = selItem.text(self.COL_LABEL)
|
|
||||||
|
|
||||||
pixmap = QPixmap(self.iPx, self.iPx)
|
|
||||||
pixmap.fill(QColor(*cols))
|
|
||||||
self.selColour = QColor(*cols)
|
|
||||||
self.editName.setText(name)
|
|
||||||
self.colButton.setIcon(QIcon(pixmap))
|
|
||||||
self.editName.setEnabled(True)
|
|
||||||
self.editName.selectAll()
|
|
||||||
self.editName.setFocus()
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
##
|
|
||||||
# Internal Functions
|
|
||||||
##
|
|
||||||
|
|
||||||
def _getSelectedItem(self):
|
def _getSelectedItem(self):
|
||||||
"""Get the currently selected item.
|
"""Get the currently selected item.
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user