Added histogram bars for relative word count in session log
This commit is contained in:
@@ -46,8 +46,11 @@ class OptionState():
|
|||||||
self.theState = {}
|
self.theState = {}
|
||||||
self.validMap = {
|
self.validMap = {
|
||||||
"GuiSessionLog": {
|
"GuiSessionLog": {
|
||||||
|
"winWidth",
|
||||||
|
"winHeight",
|
||||||
"widthCol0",
|
"widthCol0",
|
||||||
"widthCol1",
|
"widthCol1",
|
||||||
|
"widthCol2",
|
||||||
"sortCol",
|
"sortCol",
|
||||||
"sortOrder",
|
"sortOrder",
|
||||||
"hideZeros",
|
"hideZeros",
|
||||||
|
|||||||
+68
-9
@@ -31,11 +31,11 @@ import nw
|
|||||||
from os import path
|
from os import path
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt, QRect
|
||||||
from PyQt5.QtGui import QFont
|
from PyQt5.QtGui import QFont, QPixmap, QIcon, QColor, QPainter
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
qApp, QDialog, QTreeWidget, QTreeWidgetItem, QDialogButtonBox, QGridLayout,
|
qApp, QDialog, QTreeWidget, QTreeWidgetItem, QDialogButtonBox, QGridLayout,
|
||||||
QLabel, QGroupBox
|
QLabel, QGroupBox, QAbstractButton
|
||||||
)
|
)
|
||||||
|
|
||||||
from nw.constants import nwConst, nwFiles, nwAlert
|
from nw.constants import nwConst, nwFiles, nwAlert
|
||||||
@@ -48,6 +48,7 @@ class GuiSessionLog(QDialog):
|
|||||||
C_TIME = 0
|
C_TIME = 0
|
||||||
C_LENGTH = 1
|
C_LENGTH = 1
|
||||||
C_COUNT = 2
|
C_COUNT = 2
|
||||||
|
C_BAR = 3
|
||||||
|
|
||||||
def __init__(self, theParent, theProject):
|
def __init__(self, theParent, theProject):
|
||||||
QDialog.__init__(self, theParent)
|
QDialog.__init__(self, theParent)
|
||||||
@@ -68,6 +69,10 @@ class GuiSessionLog(QDialog):
|
|||||||
self.setWindowTitle("Session Log")
|
self.setWindowTitle("Session Log")
|
||||||
self.setMinimumWidth(self.mainConf.pxInt(420))
|
self.setMinimumWidth(self.mainConf.pxInt(420))
|
||||||
self.setMinimumHeight(self.mainConf.pxInt(400))
|
self.setMinimumHeight(self.mainConf.pxInt(400))
|
||||||
|
self.resize(
|
||||||
|
self.mainConf.pxInt(self.optState.getInt("GuiSessionLog", "winWidth", 550)),
|
||||||
|
self.mainConf.pxInt(self.optState.getInt("GuiSessionLog", "winHeight", 500))
|
||||||
|
)
|
||||||
|
|
||||||
# List Box
|
# List Box
|
||||||
wCol0 = self.mainConf.pxInt(
|
wCol0 = self.mainConf.pxInt(
|
||||||
@@ -76,12 +81,16 @@ class GuiSessionLog(QDialog):
|
|||||||
wCol1 = self.mainConf.pxInt(
|
wCol1 = self.mainConf.pxInt(
|
||||||
self.optState.getInt("GuiSessionLog", "widthCol1", 80)
|
self.optState.getInt("GuiSessionLog", "widthCol1", 80)
|
||||||
)
|
)
|
||||||
|
wCol2 = self.mainConf.pxInt(
|
||||||
|
self.optState.getInt("GuiSessionLog", "widthCol2", 80)
|
||||||
|
)
|
||||||
|
|
||||||
self.listBox = QTreeWidget()
|
self.listBox = QTreeWidget()
|
||||||
self.listBox.setHeaderLabels(["Session Start","Length","Words"])
|
self.listBox.setHeaderLabels(["Session Start","Length","Words","Histogram"])
|
||||||
self.listBox.setIndentation(0)
|
self.listBox.setIndentation(0)
|
||||||
self.listBox.setColumnWidth(self.C_TIME, wCol0)
|
self.listBox.setColumnWidth(self.C_TIME, wCol0)
|
||||||
self.listBox.setColumnWidth(self.C_LENGTH, wCol1)
|
self.listBox.setColumnWidth(self.C_LENGTH, wCol1)
|
||||||
|
self.listBox.setColumnWidth(self.C_COUNT, wCol2)
|
||||||
self.listBox.resizeColumnToContents(self.C_COUNT)
|
self.listBox.resizeColumnToContents(self.C_COUNT)
|
||||||
|
|
||||||
hHeader = self.listBox.headerItem()
|
hHeader = self.listBox.headerItem()
|
||||||
@@ -104,6 +113,11 @@ class GuiSessionLog(QDialog):
|
|||||||
self.listBox.sortByColumn(sortCol, sortOrder)
|
self.listBox.sortByColumn(sortCol, sortOrder)
|
||||||
self.listBox.setSortingEnabled(True)
|
self.listBox.setSortingEnabled(True)
|
||||||
|
|
||||||
|
# Word Bar
|
||||||
|
self.barHeight = int(round(0.5*self.theTheme.fontPixelSize))
|
||||||
|
self.barImage = QPixmap(self.barHeight, self.barHeight)
|
||||||
|
self.barImage.fill(self.palette().highlight().color())
|
||||||
|
|
||||||
# Session Info
|
# Session Info
|
||||||
self.infoBox = QGroupBox("Sum Total Time", self)
|
self.infoBox = QGroupBox("Sum Total Time", self)
|
||||||
self.infoForm = QGridLayout(self)
|
self.infoForm = QGridLayout(self)
|
||||||
@@ -178,18 +192,24 @@ class GuiSessionLog(QDialog):
|
|||||||
"""
|
"""
|
||||||
self.logData = []
|
self.logData = []
|
||||||
|
|
||||||
|
winWidth = self.mainConf.rpxInt(self.width())
|
||||||
|
winHeight = self.mainConf.rpxInt(self.height())
|
||||||
widthCol0 = self.mainConf.rpxInt(self.listBox.columnWidth(0))
|
widthCol0 = self.mainConf.rpxInt(self.listBox.columnWidth(0))
|
||||||
widthCol1 = self.mainConf.rpxInt(self.listBox.columnWidth(1))
|
widthCol1 = self.mainConf.rpxInt(self.listBox.columnWidth(1))
|
||||||
|
widthCol2 = self.mainConf.rpxInt(self.listBox.columnWidth(2))
|
||||||
sortCol = self.listBox.sortColumn()
|
sortCol = self.listBox.sortColumn()
|
||||||
sortOrder = self.listBox.header().sortIndicatorOrder()
|
sortOrder = self.listBox.header().sortIndicatorOrder()
|
||||||
hideZeros = self.hideZeros.isChecked()
|
hideZeros = self.hideZeros.isChecked()
|
||||||
hideNegative = self.hideNegative.isChecked()
|
hideNegative = self.hideNegative.isChecked()
|
||||||
|
|
||||||
self.optState.setValue("GuiSessionLog", "widthCol0", widthCol0)
|
self.optState.setValue("GuiSessionLog", "winWidth", winWidth)
|
||||||
self.optState.setValue("GuiSessionLog", "widthCol1", widthCol1)
|
self.optState.setValue("GuiSessionLog", "winHeight", winHeight)
|
||||||
self.optState.setValue("GuiSessionLog", "sortCol", sortCol)
|
self.optState.setValue("GuiSessionLog", "widthCol0", widthCol0)
|
||||||
self.optState.setValue("GuiSessionLog", "sortOrder", sortOrder)
|
self.optState.setValue("GuiSessionLog", "widthCol1", widthCol1)
|
||||||
self.optState.setValue("GuiSessionLog", "hideZeros", hideZeros)
|
self.optState.setValue("GuiSessionLog", "widthCol2", widthCol2)
|
||||||
|
self.optState.setValue("GuiSessionLog", "sortCol", sortCol)
|
||||||
|
self.optState.setValue("GuiSessionLog", "sortOrder", sortOrder)
|
||||||
|
self.optState.setValue("GuiSessionLog", "hideZeros", hideZeros)
|
||||||
self.optState.setValue("GuiSessionLog", "hideNegative", hideNegative)
|
self.optState.setValue("GuiSessionLog", "hideNegative", hideNegative)
|
||||||
|
|
||||||
self.optState.saveSettings()
|
self.optState.saveSettings()
|
||||||
@@ -276,8 +296,18 @@ class GuiSessionLog(QDialog):
|
|||||||
newItem.setText(self.C_LENGTH, self._formatTime(sDiff))
|
newItem.setText(self.C_LENGTH, self._formatTime(sDiff))
|
||||||
newItem.setText(self.C_COUNT, str(nWords))
|
newItem.setText(self.C_COUNT, str(nWords))
|
||||||
|
|
||||||
|
if nWords > 0:
|
||||||
|
theBar = self.barImage.scaled(
|
||||||
|
int(200*nWords/self.maxWords),
|
||||||
|
self.barHeight,
|
||||||
|
Qt.IgnoreAspectRatio,
|
||||||
|
Qt.FastTransformation
|
||||||
|
)
|
||||||
|
newItem.setData(self.C_BAR, Qt.DecorationRole, theBar)
|
||||||
|
|
||||||
newItem.setTextAlignment(self.C_LENGTH, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_LENGTH, Qt.AlignRight)
|
||||||
newItem.setTextAlignment(self.C_COUNT, Qt.AlignRight)
|
newItem.setTextAlignment(self.C_COUNT, Qt.AlignRight)
|
||||||
|
newItem.setTextAlignment(self.C_BAR, Qt.AlignLeft | Qt.AlignVCenter)
|
||||||
|
|
||||||
newItem.setFont(self.C_TIME, self.monoFont)
|
newItem.setFont(self.C_TIME, self.monoFont)
|
||||||
newItem.setFont(self.C_LENGTH, self.monoFont)
|
newItem.setFont(self.C_LENGTH, self.monoFont)
|
||||||
@@ -299,3 +329,32 @@ class GuiSessionLog(QDialog):
|
|||||||
return "%02d:%02d:%02d" % (tH,tM,tS)
|
return "%02d:%02d:%02d" % (tH,tM,tS)
|
||||||
|
|
||||||
# END Class GuiSessionLog
|
# END Class GuiSessionLog
|
||||||
|
|
||||||
|
# class WordBar(QAbstractButton):
|
||||||
|
|
||||||
|
# def __init__(self, sW, sH, parent=None):
|
||||||
|
# super().__init__(parent=parent)
|
||||||
|
|
||||||
|
# self._theCol = self.palette().highlight().color()
|
||||||
|
|
||||||
|
# self.setFixedWidth(sW)
|
||||||
|
# self.setFixedHeight(sH)
|
||||||
|
|
||||||
|
# return
|
||||||
|
|
||||||
|
# ##
|
||||||
|
# # Events
|
||||||
|
# ##
|
||||||
|
|
||||||
|
# def paintEvent(self, event):
|
||||||
|
# """Drawing the bar.
|
||||||
|
# """
|
||||||
|
# qPaint = QPainter(self)
|
||||||
|
# qPaint.setRenderHint(QPainter.Antialiasing, True)
|
||||||
|
# qPaint.setPen(self._theCol)
|
||||||
|
# qPaint.setBrush(self._theCol)
|
||||||
|
# qPaint.setOpacity(1.0)
|
||||||
|
# qPaint.drawRect(QRect(0, 0, self.width(), self.height()))
|
||||||
|
# return
|
||||||
|
|
||||||
|
# # END Class StatusLED
|
||||||
|
|||||||
Reference in New Issue
Block a user