diff --git a/README.md b/README.md index b6d49b6..3e07c08 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ _TreeTime_'s data is stored in ._trt_ files. These are plain editable text files ### Using pre-compiled Binaries ### -- Windows, Linux: Go to [github.com/jkanev/treetime/releases/tag/2021.9](https://github.com/jkanev/treetime/releases/tag/2021.9) and download a zipped package for Windows 10, 64 bit, or for Linux 64 bit from there. Unzip it into your program directory and run _TreeTime_ or _TreeTime.exe_ from the new folder. Unzip the data package too. Add the program folder to your path. +- Windows, Linux: Go to [github.com/jkanev/treetime/releases/tag/2022.1](https://github.com/jkanev/treetime/releases/tag/2022.1) and download a zipped package for Windows 10, 64 bit, or for Linux 64 bit from there. Unzip it into your program directory and run _TreeTime_ or _TreeTime.exe_ from the new folder. Unzip the data package too. Add the program folder to your path. Executable bundles have been created with pyinstaller ([www.pyinstaller.org](http://www.pyinstaller.org)). @@ -192,10 +192,15 @@ Past - Done July 2021: Fixed broken application logo - Done July 2021: Implemented CSV export - Done August 2021: Released version 2021.8 -- Done September: Added new export option "Text to Clipboard" -- Done November: Added new export option "Html (List) to File" -- Done December: Added two primitive template files (a text-only single tree and dual tree mindmap) -- Done December: Released version 2021.9 +- Done September 2021: Added new export option "Text to Clipboard" +- Done November 2021: Added new export option "Html (List) to File" +- Done December 2021: Added two primitive template files (a text-only single tree and dual tree mindmap) +- Done December 2021: Released version 2021.9 +- Done March 2022: Fixed crash bug on non-export +- Done March 2022: Improved sorting and grouping in html export, changed to five columns. +- Done June 2022: Added a tutorial file. +- Done June 2022: Added first-use dialog when no file is loaded, instead of the file-open dialog. +- Done June 2022: Release 2022.1 Present - Running: Bugfixing diff --git a/data/Tutorial.trt b/data/Tutorial.trt index ecef0b1..15185e8 100644 --- a/data/Tutorial.trt +++ b/data/Tutorial.trt @@ -135,7 +135,7 @@ item 04. Tree Nodes trees [[1], [], [], []] item 03. Edit Item Fields - fields {"1. summary": {"content": "Edit data yourself", "type": "string"}, "2. read first": {"content": "There are five different possible field types:\n\u2022 String \u2014 a small text. Example: \"1. summary\".\n\u2022 Text \u2014 a larger text. Examples: \"2. read first\"\n\u2022 URL \u2014 an internet or file address. Can be edited or opened.\n\u2022 Value \u2014 a number. Example: \"5. amount\".\n\u2022 Stop Watch \u2014 counts seconds and lists them as hours in the item field and as time in the tree field (0.5 vs. \"00:30:00\").", "type": "text"}, "3. then try": {"content": "\u2022 Double click the title \"03. Edit Item Fields\". Make a small change.\n\u2022 Double click \"Edit data yourself\", then make a small change to the text.\n\u2022 Make a small change to the text above (next to \"read first\").\n\u2022 In this field, click and scroll down.\n\u2022 Click [Open] in the URL field. Then edit the address, and click [Open] again.\n\u2022 Double click next to \"5. amount\" and enter a value.\n\u2022 Hit the [Start] button. Switch to the [Progress] tree and back. Hit [Stop].\n\nAfter this, go to step 04.", "type": "text"}, "4. url": {"content": "www.tree-time.info", "type": "url"}, "5. amount": {"content": 0, "type": "integer"}, "6. stop watch": {"content": 0.0, "running_since": false, "type": "timer"}} + fields {"1. summary": {"content": "Edit data yourself", "type": "string"}, "2. read first": {"content": "There are five different possible field types:\n\u2022 String \u2014 a small text. Example: \"1. summary\".\n\u2022 Text \u2014 a larger text. Examples: \"2. read first\"\n\u2022 URL \u2014 an internet or file address. Can be edited or opened.\n\u2022 Value \u2014 a number. Example: \"5. amount\".\n\u2022 Stop Watch \u2014 counts seconds and lists them as hours in the item field and as time in the tree field (0.5 vs. \"00:30:00\").", "type": "text"}, "3. then try": {"content": "\u2022 Double click the title \"03. Edit Item Fields\" and change the text.\n\u2022 Double click each item field \"Edit data yourself\", then make a small change to the text.\n\u2022 Make a small change to the text above (next to \"read first\").\n\u2022 In this field, click and scroll down.\n\u2022 Click [Open] in the URL field. Then edit the address, and click [Open] again.\n\u2022 Double click next to \"5. amount\" and enter a value.\n\u2022 Hit the [Start] button. Switch to the [Progress] tree and back. Hit [Stop].\n\nAfter this, go to step 04.", "type": "text"}, "4. url": {"content": "www.tree-time.info", "type": "url"}, "5. amount": {"content": null, "type": "integer"}, "6. stop watch": {"content": 0.0, "running_since": false, "type": "timer"}} trees [[2], [], [], []] item 05. Create Items @@ -151,7 +151,7 @@ item 08. Remove Nodes and Branches trees [[5], [], [], []] item 09. Delete Items - fields {"1. summary": {"content": "The difference between removal and deletion", "type": "string"}, "2. read first": {"content": "There are two cases when items get actually deleted:\n\n\u2022 One of the [Delete...] buttons is chosen,\n\u2022 or during a [Remove...] operation an item is no node in any tree any more. This is to prevent orphaned items that would be invisible, but stay in the data file.\n\nDeleting an entire branch can be dangerous, that's why an additional dialog asks whether you're sure.", "type": "text"}, "3. then try": {"content": "\u2022 Hit the button [Copy Node as Child] four times, creating four cascaded children in this tree, and siblings in the [Area] and [Progress] trees. Rename them \"A\", \"B\", \"C\", \"D\".\n\n\u2022 Select \"A\" and hit [Delete Item].\n\u2192 A is deleted from all trees, B-C-D is now a child branch of this node.\n\n\u2022 Select \"B\" and hit [Delete Branch].\n\u2192 B, C and D are entirely deleted.\n\nProceed to 10.", "type": "text"}, "4. url": {"content": "", "type": "url"}, "5. amount": {"content": 0, "type": "integer"}, "6. stop watch": {"content": 0, "running_since": false, "type": "timer"}} + fields {"1. summary": {"content": "The difference between removal and deletion", "type": "string"}, "2. read first": {"content": "There are two cases when items get actually deleted:\n\n\u2022 One of the [Delete...] buttons is chosen\n\u2022 During a remove, an item is removed from all trees.\n\nItems can be deleted single ([Delete item]), or a whole branch. \nDeleting an entire branch can be dangerous, that's why an additional dialog asks whether you're sure.", "type": "text"}, "3. then try": {"content": "\u2022 Hit the button [Copy Node as Child] four times, creating four cascaded children in this tree, and siblings in the [Area] and [Progress] trees. Rename them \"A\", \"B\", \"C\", \"D\".\n\n\u2022 Select \"A\" and hit [Delete Item].\n\u2192 A is deleted from all trees, B-C-D is now a child branch of this node.\n\n\u2022 Select \"B\" and hit [Delete Branch].\n\u2192 B, C and D are entirely deleted.\n\nProceed to 10.", "type": "text"}, "4. url": {"content": "", "type": "url"}, "5. amount": {"content": 0, "type": "integer"}, "6. stop watch": {"content": 0, "running_since": false, "type": "timer"}} trees [[6], [], [], []] item 11. Data Analysis @@ -175,7 +175,7 @@ item 14. File Format trees [[11], [], [], []] item 01. The User Interface - fields {"1. summary": {"content": "Welcome to TreeTime", "type": "string"}, "2. read first": {"content": "The TreeTime Window consists of\n\u2022 a button area (on the very left),\n\u2022 an item area (you're reading here now), and\n\u2022 a tree area (to the right of this text).\n\nThe button area has three main sections: [File], [Edit], [View], and [Settings].\nThe Item area has several fields.\nThe tree area has several tabs, each with a tree list.", "type": "text"}, "3. then try": {"content": "Maximise the TreeTime window.\n\n\u2022 In the button area, click [File], then [Edit], then [Settings]. \u2192 You see different buttons.\n\u2022 In the tree area, click [Area], then [Progress], then click [Task]. \u2192 You see different trees.\n\nIn the tree area, select the next step, \"02. Data Items\".", "type": "text"}, "4. url": {"content": "", "type": "url"}, "5. amount": {"content": 0, "type": "integer"}, "6. stop watch": {"content": 0, "running_since": false, "type": "timer"}} + fields {"1. summary": {"content": "Welcome to TreeTime", "type": "string"}, "2. read first": {"content": "The TreeTime Window consists of\n\u2022 a button area (on the very left),\n\u2022 an item area (you're reading here now), and\n\u2022 a tree area (to the right of this text).\n\nThe button area has three main sections: [File], [Edit], [View], and [Settings].\nThe Item area has several fields.\nThe tree area has several tabs, each with a tree list.", "type": "text"}, "3. then try": {"content": "Maximise the TreeTime window.\n\n\u2022 In the button area, click [File], then [Edit], then [Settings]. Hover over each button and read the tool tip.\n\u2022 In the tree area, click [Area], then [Progress], then click [Task]. You see different trees.\n\nIn the tree area, select the next step, \"02. Data Items\".", "type": "text"}, "4. url": {"content": "", "type": "url"}, "5. amount": {"content": 0, "type": "integer"}, "6. stop watch": {"content": 0, "running_since": false, "type": "timer"}} trees [[12], [], [], []] item 06. Move Nodes in Trees diff --git a/docs/introduction.rst b/docs/introduction.rst index 5184169..888e9a7 100644 --- a/docs/introduction.rst +++ b/docs/introduction.rst @@ -106,7 +106,7 @@ Installation Using pre-compiled Binaries ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Windows, Linux: Go to [github.com/jkanev/treetime/releases/tag/2021.9](https://github.com/jkanev/treetime/releases/tag/2021.9) and download a zipped package for Windows 10, 64 bit, or for Linux 64 bit from there. Unzip it into your program directory and run *TreeTime* or *TreeTime.exe* from the new folder. Unzip the data package too. Add the program folder to your path. +- Windows, Linux: Go to [github.com/jkanev/treetime/releases/tag/2022.1](https://github.com/jkanev/treetime/releases/tag/2022.1) and download a zipped package for Windows 10, 64 bit, or for Linux 64 bit from there. Unzip it into your program directory and run *TreeTime* or *TreeTime.exe* from the new folder. Unzip the data package too. Add the program folder to your path. Executable bundles have been created with pyinstaller ([www.pyinstaller.org](http://www.pyinstaller.org)). diff --git a/docs/releases.rst b/docs/releases.rst index 7058165..6d78de1 100644 --- a/docs/releases.rst +++ b/docs/releases.rst @@ -75,6 +75,15 @@ Past * December: Added two primitive template files (a text-only single tree and dual tree mindmap) * December: Released **version 2021.9** +2022 +^^^^ + +* March: Fixed crash bug on non-export +* March 2022: Improved sorting and grouping in html export, changed to five columns +* June 2022: Added a tutorial file +* June 2022: Added first-use dialog when no file is loaded, instead of the file-open dialog +* June 2022: Released **version 2022.1** + Present ------- diff --git a/setup.py b/setup.py index 1dee35c..3d8e1b2 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ setup( name='TreeTime', - version='2021.9', + version='2022.1', description='TreeTime is a to-do list manager, test report tool, project manager, family ancestry editor,' 'mind-mapping tool, etc. Using TreeTime you can categorise and organise any data in tree structures.' 'You can define several trees, each with a different structure, on the same data. You can use functions' diff --git a/treetime/mainwindow.py b/treetime/mainwindow.py index dc45886..544d03f 100644 --- a/treetime/mainwindow.py +++ b/treetime/mainwindow.py @@ -35,7 +35,7 @@ def setupUi(self, MainWindow): self.toolBox.setToolTip("") self.toolBox.setObjectName("toolBox") self.pageFile = QtWidgets.QWidget() - self.pageFile.setGeometry(QtCore.QRect(0, 0, 250, 760)) + self.pageFile.setGeometry(QtCore.QRect(0, 0, 250, 792)) self.pageFile.setObjectName("pageFile") self.formLayout = QtWidgets.QFormLayout(self.pageFile) self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.ExpandingFieldsGrow) @@ -146,7 +146,7 @@ def setupUi(self, MainWindow): self.formLayout.setWidget(16, QtWidgets.QFormLayout.SpanningRole, self.pushButtonExportHtmlList) self.toolBox.addItem(self.pageFile, "") self.pageEdit = QtWidgets.QWidget() - self.pageEdit.setGeometry(QtCore.QRect(0, 0, 250, 760)) + self.pageEdit.setGeometry(QtCore.QRect(0, 0, 250, 792)) self.pageEdit.setMinimumSize(QtCore.QSize(200, 716)) self.pageEdit.setObjectName("pageEdit") self.formLayout1 = QtWidgets.QFormLayout(self.pageEdit) @@ -270,21 +270,13 @@ def setupUi(self, MainWindow): self.pushButtonDeleteBranch.setObjectName("pushButtonDeleteBranch") self.formLayout1.setWidget(24, QtWidgets.QFormLayout.SpanningRole, self.pushButtonDeleteBranch) self.toolBox.addItem(self.pageEdit, "") - self.pageView = QtWidgets.QWidget() - self.pageView.setGeometry(QtCore.QRect(0, 0, 250, 760)) - self.pageView.setObjectName("pageView") - self.gridLayout_3 = QtWidgets.QGridLayout(self.pageView) - self.gridLayout_3.setObjectName("gridLayout_3") - spacerItem10 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.gridLayout_3.addItem(spacerItem10, 0, 0, 1, 1) - self.toolBox.addItem(self.pageView, "") self.pageSettings = QtWidgets.QWidget() - self.pageSettings.setGeometry(QtCore.QRect(0, 0, 250, 760)) + self.pageSettings.setGeometry(QtCore.QRect(0, 0, 250, 792)) self.pageSettings.setObjectName("pageSettings") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.pageSettings) self.verticalLayout_2.setObjectName("verticalLayout_2") - spacerItem11 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_2.addItem(spacerItem11) + spacerItem10 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_2.addItem(spacerItem10) self.label_9 = QtWidgets.QLabel(self.pageSettings) font = QtGui.QFont() font.setBold(True) @@ -299,8 +291,8 @@ def setupUi(self, MainWindow): self.cboxColours = QtWidgets.QComboBox(self.pageSettings) self.cboxColours.setObjectName("cboxColours") self.verticalLayout_2.addWidget(self.cboxColours) - spacerItem12 = QtWidgets.QSpacerItem(20, 136, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_2.addItem(spacerItem12) + spacerItem11 = QtWidgets.QSpacerItem(20, 136, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_2.addItem(spacerItem11) self.label_10 = QtWidgets.QLabel(self.pageSettings) font = QtGui.QFont() font.setBold(True) @@ -312,8 +304,8 @@ def setupUi(self, MainWindow): self.label_7 = QtWidgets.QLabel(self.pageSettings) self.label_7.setObjectName("label_7") self.verticalLayout_2.addWidget(self.label_7) - spacerItem13 = QtWidgets.QSpacerItem(20, 136, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_2.addItem(spacerItem13) + spacerItem12 = QtWidgets.QSpacerItem(20, 136, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_2.addItem(spacerItem12) self.toolBox.addItem(self.pageSettings, "") self.horizontalLayout.addWidget(self.toolBox) self.tableWidget = QtWidgets.QTableWidget(self.centralwidget) @@ -430,14 +422,13 @@ def retranslateUi(self, MainWindow): self.pushButtonDeleteBranch.setToolTip(_translate("MainWindow", "Delete the entire branch from all trees

• All descendants (children, grandchildren, etc) in all trees are deleted.
• Children of a node are deleted recursively across trees.
• Please make sure there are no unwanted connections before use.")) self.pushButtonDeleteBranch.setText(_translate("MainWindow", "Delete Branch (all Trees)")) self.toolBox.setItemText(self.toolBox.indexOf(self.pageEdit), _translate("MainWindow", "Edit")) - self.toolBox.setItemText(self.toolBox.indexOf(self.pageView), _translate("MainWindow", "View")) self.label_9.setText(_translate("MainWindow", "Look and Feel")) self.label_10.setText(_translate("MainWindow", "About")) self.label_7.setText(_translate("MainWindow", "\n" "\n" -"

TreeTime 2021.9

\n" +"

TreeTime 2022.1

\n" "

Official website:
tree-time.info

\n" "

Updates and source code:
github.com/jkanev/treetime

\n" "

Documentation:
treetime-data-manager.
readthedocs.io

")) diff --git a/treetime/mainwindow.ui b/treetime/mainwindow.ui index 3b328f0..95eb761 100644 --- a/treetime/mainwindow.ui +++ b/treetime/mainwindow.ui @@ -53,7 +53,7 @@ 0 0 250 - 760 + 792 @@ -382,7 +382,7 @@ 0 0 250 - 760 + 792 @@ -765,41 +765,13 @@ - - - - 0 - 0 - 250 - 760 - - - - View - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - 0 0 250 - 760 + 792 @@ -877,7 +849,7 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> TreeTime 2021.9</p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> TreeTime 2022.1</p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Official website:<br /> <a href="https://github.com/jkanev/treetime"><span style=" text-decoration: underline; color:#2980b9;">tree-time.info</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Updates and source code:<br /> <a href="https://github.com/jkanev/treetime"><span style=" text-decoration: underline; color:#2980b9;">github.com/jkanev/treetime</span></a></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Documentation:<br /> <a href="https://treetime-data-manager.readthedocs.io"><span style=" text-decoration: underline; color:#2980b9;">treetime-data-manager.</span></a><br /> <a href="https://treetime-data-manager.readthedocs.io"><span style=" text-decoration: underline; color:#2980b9;">readthedocs.io</span></a></p></body></html>