Sat, 26 Oct 2024 17:13:16 +0200
- changed to the new style header
- ensured proper parent relationship of modal dialogs
- included compiled form files
--- a/.hgignore Sat Jan 06 13:08:49 2024 +0100 +++ b/.hgignore Sat Oct 26 17:13:16 2024 +0200 @@ -1,5 +1,4 @@ glob:.eric7project -glob:.eric6project glob:.ropeproject glob:.directory glob:.jedi @@ -13,4 +12,3 @@ glob:tmp glob:__pycache__ glob:**.DS_Store -glob:Ui_*.py
--- a/ChangeLog Sat Jan 06 13:08:49 2024 +0100 +++ b/ChangeLog Sat Oct 26 17:13:16 2024 +0200 @@ -1,5 +1,10 @@ ChangeLog --------- +Version 10.3.1 +- changed to the new style header +- ensured proper parent relationship of modal dialogs +- included compiled form files + Version 10.3.0 - adapted code to eric 24.2 and newer
--- a/PKGLIST Sat Jan 06 13:08:49 2024 +0100 +++ b/PKGLIST Sat Oct 26 17:13:16 2024 +0200 @@ -1,6 +1,7 @@ PluginTimeTracker.py TimeTracker/ConfigurationPage/TimeTrackerPage.py TimeTracker/ConfigurationPage/TimeTrackerPage.ui +TimeTracker/ConfigurationPage/Ui_TimeTrackerPage.py TimeTracker/ConfigurationPage/__init__.py TimeTracker/Documentation/LICENSE.GPL3 TimeTracker/TimeTrackEntry.py @@ -9,6 +10,8 @@ TimeTracker/TimeTrackerEntryDialog.ui TimeTracker/TimeTrackerWidget.py TimeTracker/TimeTrackerWidget.ui +TimeTracker/Ui_TimeTrackerEntryDialog.py +TimeTracker/Ui_TimeTrackerWidget.py TimeTracker/__init__.py TimeTracker/i18n/timetracker_de.qm TimeTracker/i18n/timetracker_en.qm
--- a/PluginTimeTracker.epj Sat Jan 06 13:08:49 2024 +0100 +++ b/PluginTimeTracker.epj Sat Oct 26 17:13:16 2024 +0200 @@ -1,7 +1,7 @@ { "header": { "comment": "eric project file for project PluginTimeTracker", - "copyright": "Copyright (C) 2023 Detlev Offenbach, detlev@die-offenbachs.de" + "copyright": "Copyright (C) 2024 Detlev Offenbach, detlev@die-offenbachs.de" }, "project": { "AUTHOR": "Detlev Offenbach", @@ -188,7 +188,6 @@ "Makefile": "OTHERS", "README": "OTHERS", "README.*": "OTHERS", - "Ui_*.py": "__IGNORE__", "makefile": "OTHERS" }, "FORMS": [ @@ -225,6 +224,7 @@ "TimeTracker/Documentation/source", "TimeTracker/icons/clock-dark.svg", "TimeTracker/icons/clock-light.svg", + "TimeTracker/icons/sbTimeTracker96.svg", "pyproject.toml" ], "OTHERTOOLSPARMS": { @@ -278,11 +278,14 @@ "SOURCES": [ "PluginTimeTracker.py", "TimeTracker/ConfigurationPage/TimeTrackerPage.py", + "TimeTracker/ConfigurationPage/Ui_TimeTrackerPage.py", "TimeTracker/ConfigurationPage/__init__.py", "TimeTracker/TimeTrackEntry.py", "TimeTracker/TimeTracker.py", "TimeTracker/TimeTrackerEntryDialog.py", "TimeTracker/TimeTrackerWidget.py", + "TimeTracker/Ui_TimeTrackerEntryDialog.py", + "TimeTracker/Ui_TimeTrackerWidget.py", "TimeTracker/__init__.py", "__init__.py" ], @@ -354,4 +357,4 @@ "VCSOTHERDATA": {}, "VERSION": "" } -} \ No newline at end of file +}
--- a/PluginTimeTracker.py Sat Jan 06 13:08:49 2024 +0100 +++ b/PluginTimeTracker.py Sat Oct 26 17:13:16 2024 +0200 @@ -16,21 +16,24 @@ from TimeTracker.TimeTracker import TimeTracker # Start-Of-Header -name = "Time Tracker Plugin" -author = "Detlev Offenbach <detlev@die-offenbachs.de>" -autoactivate = True -deactivateable = True -version = "10.3.0" -className = "TimeTrackerPlugin" -packageName = "TimeTracker" -shortDescription = "Time Tracker to keep track of the project time." -longDescription = ( - """This plug-in implements a time tracker to keep track""" - """ of the time used for a project. The time can be subdivided""" - """ into tasks.""" -) -needsRestart = False -pyqtApi = 2 +__header__ = { + "name": "Time Tracker Plugin", + "author": "Detlev Offenbach <detlev@die-offenbachs.de>", + "autoactivate": True, + "deactivateable": True, + "version": "10.3.1", + "className": "TimeTrackerPlugin", + "packageName": "TimeTracker", + "shortDescription": "Time Tracker to keep track of the project time.", + "longDescription": ( + """This plug-in implements a time tracker to keep track""" + """ of the time used for a project. The time can be subdivided""" + """ into tasks.""" + ), + "needsRestart": False, + "hasCompiledForms": True, + "pyqtApi": 2, +} # End-Of-Header error = ""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TimeTracker/ConfigurationPage/Ui_TimeTrackerPage.py Sat Oct 26 17:13:16 2024 +0200 @@ -0,0 +1,71 @@ +# Form implementation generated from reading ui file '/home/detlev/Development/Python/Eric/eric7_plugins/Plugin_Time_Tracker/TimeTracker/ConfigurationPage/TimeTrackerPage.ui' +# +# Created by: PyQt6 UI code generator 6.4.0 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_TimeTrackerPage(object): + def setupUi(self, TimeTrackerPage): + TimeTrackerPage.setObjectName("TimeTrackerPage") + TimeTrackerPage.resize(495, 253) + self.verticalLayout = QtWidgets.QVBoxLayout(TimeTrackerPage) + self.verticalLayout.setObjectName("verticalLayout") + self.headerLabel = QtWidgets.QLabel(TimeTrackerPage) + self.headerLabel.setObjectName("headerLabel") + self.verticalLayout.addWidget(self.headerLabel) + self.line15 = QtWidgets.QFrame(TimeTrackerPage) + self.line15.setFrameShape(QtWidgets.QFrame.Shape.HLine) + self.line15.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) + self.line15.setFrameShape(QtWidgets.QFrame.Shape.HLine) + self.line15.setObjectName("line15") + self.verticalLayout.addWidget(self.line15) + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.label = QtWidgets.QLabel(TimeTrackerPage) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.durationSpinBox = QtWidgets.QSpinBox(TimeTrackerPage) + self.durationSpinBox.setMinimum(1) + self.durationSpinBox.setMaximum(9) + self.durationSpinBox.setObjectName("durationSpinBox") + self.gridLayout.addWidget(self.durationSpinBox, 0, 1, 1, 1) + spacerItem = QtWidgets.QSpacerItem(78, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.gridLayout.addItem(spacerItem, 0, 2, 1, 1) + self.autosaveCheckBox = QtWidgets.QCheckBox(TimeTrackerPage) + self.autosaveCheckBox.setObjectName("autosaveCheckBox") + self.gridLayout.addWidget(self.autosaveCheckBox, 1, 0, 1, 3) + self.duplicatesCheckBox = QtWidgets.QCheckBox(TimeTrackerPage) + self.duplicatesCheckBox.setObjectName("duplicatesCheckBox") + self.gridLayout.addWidget(self.duplicatesCheckBox, 2, 0, 1, 3) + self.verticalLayout.addLayout(self.gridLayout) + spacerItem1 = QtWidgets.QSpacerItem(20, 274, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) + self.verticalLayout.addItem(spacerItem1) + + self.retranslateUi(TimeTrackerPage) + QtCore.QMetaObject.connectSlotsByName(TimeTrackerPage) + + def retranslateUi(self, TimeTrackerPage): + _translate = QtCore.QCoreApplication.translate + self.headerLabel.setText(_translate("TimeTrackerPage", "<b>Configure Time Tracker</b>")) + self.label.setText(_translate("TimeTrackerPage", "Minimum Duration:")) + self.durationSpinBox.setToolTip(_translate("TimeTrackerPage", "Enter the value of the minimum duration for a valid tracker entry")) + self.durationSpinBox.setSuffix(_translate("TimeTrackerPage", " min")) + self.autosaveCheckBox.setToolTip(_translate("TimeTrackerPage", "Select to save automatically whenever a tracker is stopped")) + self.autosaveCheckBox.setText(_translate("TimeTrackerPage", "Auto Save Enabled")) + self.duplicatesCheckBox.setToolTip(_translate("TimeTrackerPage", "Select to allow multiple entries with the same start date and time")) + self.duplicatesCheckBox.setText(_translate("TimeTrackerPage", "Allow entries with identical start date and time")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + TimeTrackerPage = QtWidgets.QWidget() + ui = Ui_TimeTrackerPage() + ui.setupUi(TimeTrackerPage) + TimeTrackerPage.show() + sys.exit(app.exec())
--- a/TimeTracker/TimeTrackerWidget.py Sat Jan 06 13:08:49 2024 +0100 +++ b/TimeTracker/TimeTrackerWidget.py Sat Oct 26 17:13:16 2024 +0200 @@ -182,7 +182,7 @@ self.commentCombo.itemText(index) for index in range(self.commentCombo.count()) ] - dlg = TimeTrackerEntryDialog(self.__tracker, None, tasks, comments) + dlg = TimeTrackerEntryDialog(self.__tracker, None, tasks, comments, parent=self) if dlg.exec() == QDialog.DialogCode.Accepted: self.__tracker.addTrackerEntry(*dlg.getData()) @@ -206,7 +206,9 @@ self.commentCombo.itemText(index) for index in range(self.commentCombo.count()) ] - dlg = TimeTrackerEntryDialog(self.__tracker, entry, tasks, comments) + dlg = TimeTrackerEntryDialog( + self.__tracker, entry, tasks, comments, parent=self + ) if dlg.exec() == QDialog.DialogCode.Accepted: start, duration, task, comment = dlg.getData()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TimeTracker/Ui_TimeTrackerEntryDialog.py Sat Oct 26 17:13:16 2024 +0200 @@ -0,0 +1,98 @@ +# Form implementation generated from reading ui file '/home/detlev/Development/Python/Eric/eric7_plugins/Plugin_Time_Tracker/TimeTracker/TimeTrackerEntryDialog.ui' +# +# Created by: PyQt6 UI code generator 6.4.0 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_TimeTrackerEntryDialog(object): + def setupUi(self, TimeTrackerEntryDialog): + TimeTrackerEntryDialog.setObjectName("TimeTrackerEntryDialog") + TimeTrackerEntryDialog.resize(515, 147) + TimeTrackerEntryDialog.setSizeGripEnabled(True) + self.verticalLayout = QtWidgets.QVBoxLayout(TimeTrackerEntryDialog) + self.verticalLayout.setObjectName("verticalLayout") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.label = QtWidgets.QLabel(TimeTrackerEntryDialog) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.startDateTimeEdit = QtWidgets.QDateTimeEdit(TimeTrackerEntryDialog) + self.startDateTimeEdit.setCalendarPopup(True) + self.startDateTimeEdit.setObjectName("startDateTimeEdit") + self.gridLayout.addWidget(self.startDateTimeEdit, 0, 1, 1, 2) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.gridLayout.addItem(spacerItem, 0, 3, 1, 1) + self.label_2 = QtWidgets.QLabel(TimeTrackerEntryDialog) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + self.durationSpinBox = QtWidgets.QSpinBox(TimeTrackerEntryDialog) + self.durationSpinBox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter) + self.durationSpinBox.setMaximum(9999) + self.durationSpinBox.setObjectName("durationSpinBox") + self.gridLayout.addWidget(self.durationSpinBox, 1, 1, 1, 1) + spacerItem1 = QtWidgets.QSpacerItem(108, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.gridLayout.addItem(spacerItem1, 1, 2, 1, 2) + self.label_3 = QtWidgets.QLabel(TimeTrackerEntryDialog) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) + self.taskCombo = QtWidgets.QComboBox(TimeTrackerEntryDialog) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.taskCombo.sizePolicy().hasHeightForWidth()) + self.taskCombo.setSizePolicy(sizePolicy) + self.taskCombo.setEditable(True) + self.taskCombo.setObjectName("taskCombo") + self.gridLayout.addWidget(self.taskCombo, 2, 1, 1, 3) + self.label_4 = QtWidgets.QLabel(TimeTrackerEntryDialog) + self.label_4.setObjectName("label_4") + self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1) + self.commentCombo = QtWidgets.QComboBox(TimeTrackerEntryDialog) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.commentCombo.sizePolicy().hasHeightForWidth()) + self.commentCombo.setSizePolicy(sizePolicy) + self.commentCombo.setEditable(True) + self.commentCombo.setObjectName("commentCombo") + self.gridLayout.addWidget(self.commentCombo, 3, 1, 1, 3) + self.verticalLayout.addLayout(self.gridLayout) + self.buttonBox = QtWidgets.QDialogButtonBox(TimeTrackerEntryDialog) + self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) + self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok) + self.buttonBox.setObjectName("buttonBox") + self.verticalLayout.addWidget(self.buttonBox) + + self.retranslateUi(TimeTrackerEntryDialog) + self.buttonBox.accepted.connect(TimeTrackerEntryDialog.accept) # type: ignore + self.buttonBox.rejected.connect(TimeTrackerEntryDialog.reject) # type: ignore + QtCore.QMetaObject.connectSlotsByName(TimeTrackerEntryDialog) + + def retranslateUi(self, TimeTrackerEntryDialog): + _translate = QtCore.QCoreApplication.translate + TimeTrackerEntryDialog.setWindowTitle(_translate("TimeTrackerEntryDialog", "Edit Timer Entry")) + self.label.setText(_translate("TimeTrackerEntryDialog", "Start Date/Time:")) + self.startDateTimeEdit.setToolTip(_translate("TimeTrackerEntryDialog", "Edit the start date and time of the timer")) + self.startDateTimeEdit.setDisplayFormat(_translate("TimeTrackerEntryDialog", "yyyy-MM-dd HH:mm:ss")) + self.label_2.setText(_translate("TimeTrackerEntryDialog", "Duration:")) + self.durationSpinBox.setToolTip(_translate("TimeTrackerEntryDialog", "Edit the duration of the timer")) + self.durationSpinBox.setSuffix(_translate("TimeTrackerEntryDialog", " min")) + self.label_3.setText(_translate("TimeTrackerEntryDialog", "Task:")) + self.taskCombo.setToolTip(_translate("TimeTrackerEntryDialog", "Enter the task description for the timer")) + self.label_4.setText(_translate("TimeTrackerEntryDialog", "Comment:")) + self.commentCombo.setToolTip(_translate("TimeTrackerEntryDialog", "Enter a comment for the timer")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + TimeTrackerEntryDialog = QtWidgets.QDialog() + ui = Ui_TimeTrackerEntryDialog() + ui.setupUi(TimeTrackerEntryDialog) + TimeTrackerEntryDialog.show() + sys.exit(app.exec())
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TimeTracker/Ui_TimeTrackerWidget.py Sat Oct 26 17:13:16 2024 +0200 @@ -0,0 +1,122 @@ +# Form implementation generated from reading ui file '/home/detlev/Development/Python/Eric/eric7_plugins/Plugin_Time_Tracker/TimeTracker/TimeTrackerWidget.ui' +# +# Created by: PyQt6 UI code generator 6.4.0 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_TimeTrackerWidget(object): + def setupUi(self, TimeTrackerWidget): + TimeTrackerWidget.setObjectName("TimeTrackerWidget") + TimeTrackerWidget.resize(609, 185) + self.verticalLayout = QtWidgets.QVBoxLayout(TimeTrackerWidget) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setObjectName("verticalLayout") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.label = QtWidgets.QLabel(TimeTrackerWidget) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.label_2 = QtWidgets.QLabel(TimeTrackerWidget) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 0, 1, 1, 1) + self.label_3 = QtWidgets.QLabel(TimeTrackerWidget) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 0, 2, 1, 1) + self.label_4 = QtWidgets.QLabel(TimeTrackerWidget) + self.label_4.setObjectName("label_4") + self.gridLayout.addWidget(self.label_4, 0, 3, 1, 1) + self.startDateTimeEdit = QtWidgets.QDateTimeEdit(TimeTrackerWidget) + self.startDateTimeEdit.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.startDateTimeEdit.setReadOnly(True) + self.startDateTimeEdit.setCalendarPopup(True) + self.startDateTimeEdit.setObjectName("startDateTimeEdit") + self.gridLayout.addWidget(self.startDateTimeEdit, 1, 0, 1, 1) + self.durationSpinBox = QtWidgets.QSpinBox(TimeTrackerWidget) + self.durationSpinBox.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.durationSpinBox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter) + self.durationSpinBox.setReadOnly(True) + self.durationSpinBox.setMaximum(9999) + self.durationSpinBox.setObjectName("durationSpinBox") + self.gridLayout.addWidget(self.durationSpinBox, 1, 1, 1, 1) + self.taskCombo = QtWidgets.QComboBox(TimeTrackerWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.taskCombo.sizePolicy().hasHeightForWidth()) + self.taskCombo.setSizePolicy(sizePolicy) + self.taskCombo.setEditable(True) + self.taskCombo.setObjectName("taskCombo") + self.gridLayout.addWidget(self.taskCombo, 1, 2, 1, 1) + self.commentCombo = QtWidgets.QComboBox(TimeTrackerWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.commentCombo.sizePolicy().hasHeightForWidth()) + self.commentCombo.setSizePolicy(sizePolicy) + self.commentCombo.setEditable(True) + self.commentCombo.setObjectName("commentCombo") + self.gridLayout.addWidget(self.commentCombo, 1, 3, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.pauseButton = QtWidgets.QPushButton(TimeTrackerWidget) + self.pauseButton.setCheckable(True) + self.pauseButton.setObjectName("pauseButton") + self.horizontalLayout.addWidget(self.pauseButton) + self.newButton = QtWidgets.QPushButton(TimeTrackerWidget) + self.newButton.setObjectName("newButton") + self.horizontalLayout.addWidget(self.newButton) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout.addItem(spacerItem1) + self.verticalLayout.addLayout(self.horizontalLayout) + self.entriesList = QtWidgets.QTreeWidget(TimeTrackerWidget) + self.entriesList.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.CustomContextMenu) + self.entriesList.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers) + self.entriesList.setAlternatingRowColors(True) + self.entriesList.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.ExtendedSelection) + self.entriesList.setRootIsDecorated(False) + self.entriesList.setAllColumnsShowFocus(True) + self.entriesList.setObjectName("entriesList") + self.entriesList.header().setStretchLastSection(False) + self.verticalLayout.addWidget(self.entriesList) + + self.retranslateUi(TimeTrackerWidget) + QtCore.QMetaObject.connectSlotsByName(TimeTrackerWidget) + + def retranslateUi(self, TimeTrackerWidget): + _translate = QtCore.QCoreApplication.translate + self.label.setText(_translate("TimeTrackerWidget", "Start Date/Time:")) + self.label_2.setText(_translate("TimeTrackerWidget", "Duration:")) + self.label_3.setText(_translate("TimeTrackerWidget", "Task:")) + self.label_4.setText(_translate("TimeTrackerWidget", "Comment:")) + self.startDateTimeEdit.setToolTip(_translate("TimeTrackerWidget", "Shows the start date and time of the current timer")) + self.startDateTimeEdit.setDisplayFormat(_translate("TimeTrackerWidget", "yyyy-MM-dd HH:mm:ss")) + self.durationSpinBox.setToolTip(_translate("TimeTrackerWidget", "Shows the duration of the current timer")) + self.durationSpinBox.setSuffix(_translate("TimeTrackerWidget", " min")) + self.taskCombo.setToolTip(_translate("TimeTrackerWidget", "Enter the task description for the current timer")) + self.commentCombo.setToolTip(_translate("TimeTrackerWidget", "Enter a comment for the current timer")) + self.pauseButton.setToolTip(_translate("TimeTrackerWidget", "Press to pause the current timer")) + self.pauseButton.setText(_translate("TimeTrackerWidget", "Pause")) + self.newButton.setToolTip(_translate("TimeTrackerWidget", "Press to end the current timer and start a new one")) + self.newButton.setText(_translate("TimeTrackerWidget", "End Current Timer and Start a New Timer")) + self.entriesList.headerItem().setText(0, _translate("TimeTrackerWidget", "Start Date/Time")) + self.entriesList.headerItem().setText(1, _translate("TimeTrackerWidget", "Duration")) + self.entriesList.headerItem().setText(2, _translate("TimeTrackerWidget", "Task")) + self.entriesList.headerItem().setText(3, _translate("TimeTrackerWidget", "Comment")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + TimeTrackerWidget = QtWidgets.QWidget() + ui = Ui_TimeTrackerWidget() + ui.setupUi(TimeTrackerWidget) + TimeTrackerWidget.show() + sys.exit(app.exec())