mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-15 10:22:26 +12:00
00aca6a0e1
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
import locale
|
|
|
|
from PyQt5.QtGui import QIcon, QPixmap
|
|
from PyQt5.QtWidgets import QWidget
|
|
from PyQt5.QtCore import QTimer
|
|
|
|
from manuskript.enums import Outline
|
|
from manuskript.functions import appPath
|
|
from manuskript.ui.tools.targets_ui import Ui_targets
|
|
|
|
|
|
class TargetsDialog(QWidget, Ui_targets):
|
|
|
|
def __init__(self, parent=None, mw=None):
|
|
QWidget.__init__(self)
|
|
self.mw = parent
|
|
self.setupUi(self)
|
|
iconPic = appPath("icons/Manuskript/icon-64px.png")
|
|
self.setWindowIcon(QIcon(iconPic))
|
|
|
|
self.session_reset.clicked.connect(self.resetSession)
|
|
|
|
self.tick()
|
|
|
|
self.timer = QTimer()
|
|
self.timer.timeout.connect(self.tick)
|
|
self.timer.start(2000)
|
|
|
|
def getDraftStats(self):
|
|
item = self.mw.mdlOutline.rootItem
|
|
|
|
wc = item.data(Outline.wordCount)
|
|
goal = item.data(Outline.goal)
|
|
progress = item.data(Outline.goalPercentage)
|
|
|
|
return (
|
|
int(wc) if wc != "" else 0,
|
|
int(goal) if goal != "" else 0,
|
|
float(progress) if progress != "" else 0.0
|
|
)
|
|
|
|
def resetSession(self):
|
|
wc, _, _ = self.getDraftStats()
|
|
self.mw.sessionStartWordCount = wc
|
|
self.tick()
|
|
|
|
@staticmethod
|
|
def progress_bar_value(value):
|
|
return int(min(max(float(value) * 100, 0), 100))
|
|
|
|
def tick(self):
|
|
wc, goal, progress = self.getDraftStats()
|
|
|
|
self.draft_wc_label.setText(locale.format_string("%d", wc, grouping=True))
|
|
self.draft_goal_label.setText(locale.format_string("%d", goal, grouping=True))
|
|
# limit to 0-100 for display
|
|
self.draft_progress_bar.setValue(self.progress_bar_value(progress))
|
|
|
|
session_wc = wc - int(self.mw.sessionStartWordCount)
|
|
|
|
self.session_wc_label.setText(locale.format_string("%d", session_wc, grouping=True))
|
|
if self.session_target.value() == 0:
|
|
self.session_progress_bar.setValue(0)
|
|
else:
|
|
self.session_progress_bar.setValue(self.progress_bar_value(session_wc / self.session_target.value()))
|
|
|
|
def closeEvent(self, event):
|
|
self.timer = None
|