{
"formats": [
{
"bullets": true,
"fields": [
{
"fieldname": "Name",
"fieldtype": "Text"
},
{
"fieldname": "Text",
"fieldtype": "Text",
"lines": 2
}
],
"formathtml": true,
"formatname": "BULLETS",
"icon": "bullet_1",
"outputlines": [
"{*Text*}"
],
"spacebetween": false,
"titleline": "{*Name*}"
},
{
"childtype": "BULLETS",
"fields": [
{
"fieldname": "Name",
"fieldtype": "Text"
}
],
"formathtml": true,
"formatname": "BULLET_HEADING",
"outputlines": [
"{*Name*}"
],
"spacebetween": false,
"titleline": "{*Name*}"
},
{
"fields": [
{
"fieldname": "Name",
"fieldtype": "Text"
}
],
"formathtml": true,
"formatname": "HEADINGS",
"outputlines": [
"{*Name*}"
],
"titleline": "{*Name*}"
},
{
"fields": [
{
"fieldname": "Name",
"fieldtype": "Text"
},
{
"fieldname": "Text",
"fieldtype": "Text",
"lines": 8
}
],
"formathtml": true,
"formatname": "HEAD_PARA",
"icon": "bullet_2",
"outputlines": [
"{*Name*} - {*Text*}"
],
"titleline": "{*Name*}"
},
{
"fields": [
{
"fieldname": "Name",
"fieldtype": "Text"
},
{
"fieldname": "Text",
"fieldtype": "Text",
"lines": 8
}
],
"formatname": "PARAGRAPH",
"icon": "bullet_2",
"outputlines": [
"{*Text*}"
],
"titleline": "{*Name*}"
}
],
"nodes": [
{
"children": [],
"data": {
"Name": "Minimize to system tray option",
"Text": "A minimize to system tray option was added to General Options (under Features Available). If enabled, it adds a TreeLine system tray icon to toggle application display and hides the taskbar entry when TreeLine is minimized."
},
"format": "BULLETS",
"uid": "014e1392305b11e9ab99a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Minimize to tray",
"Text": "A problem with the option to minimize to the system tray was fixed."
},
"format": "BULLETS",
"uid": "01d807fc9b0d11f091375847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Automatic clone creation",
"Text": "Cloned nodes can be created automatically from all identical nodes by using the \"Data > Clone All Matched Nodes\" command."
},
"format": "BULLETS",
"uid": "04a868f4bb0611e7aea13417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Multiple top-level nodes",
"Text": "Multiple top-level (root) nodes are now permitted. When no nodes are selected in the tree (by clicking on a blank area or Ctrl clicking to unselect), the right-hand view will show information about all of the top-level nodes."
},
"format": "BULLETS",
"uid": "04da8386ba4811e7b3de3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Updating multiple windows",
"Text": "Properly update multiple windows after drag and drop tree changes."
},
"format": "BULLETS",
"uid": "0906c05bdc8f11ea94fbac675dac20af"
},
{
"children": [],
"data": {
"Name": "Reduce windows install size",
"Text": "Some unnecessary libraries were eliminated from the Windows installer to reduce download sizes and installed space requirements."
},
"format": "BULLETS",
"uid": "10c539e2305c11e9a392a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Right view update",
"Text": "Properly update the right-hand views after using a new window command."
},
"format": "BULLETS",
"uid": "145bd91a334c11e896b1d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Avoid unfocused title edit",
"Text": "A click on a tree node to restore tree focus no longer starts editing the node title."
},
"format": "BULLETS",
"uid": "15da7fde786a11e881c8a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Remove redundant newlines in files",
"Text": "Some redundant newline characters were removed from text storage in TreeLine files."
},
"format": "BULLETS",
"uid": "192373c6305511e9ab21a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Restore data editor cursor & scroll positions",
"Text": "Restore the cursor and scroll positions of data editors when the editors are re-created after focus changes."
},
"format": "BULLETS",
"uid": "194b052fe5d811e9a0d1a44cc8e97404"
},
{
"children": [
"3e749de3e5d811e98227a44cc8e97404",
"194b0537e5d811e989a1a44cc8e97404",
"194b0534e5d811e985f6a44cc8e97404"
],
"data": {
"Name": "October 6, 2019 - Release 3.1.2 (stable release)"
},
"format": "HEADINGS",
"uid": "194b0533e5d811e9b5fea44cc8e97404"
},
{
"children": [
"8cdb2406e5df11e9a06da44cc8e97404",
"8e8e418ae5dc11e98404a44cc8e97404",
"9139627ee5db11e98a21a44cc8e97404",
"194b0536e5d811e991b3a44cc8e97404",
"fcc1b718e5df11e9a7f9a44cc8e97404"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "194b0534e5d811e985f6a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Treepad import",
"Text": "Fix error due to character encoding when importing files from Treepad."
},
"format": "BULLETS",
"uid": "194b0536e5d811e991b3a44cc8e97404"
},
{
"children": [
"194b052fe5d811e9a0d1a44cc8e97404",
"ea0c9b24e79911e98abe7054d2175f18",
"4212597ee5e011e99b51a44cc8e97404"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "194b0537e5d811e989a1a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Enable evaluate HTML tags option",
"Text": "The Evaluate HTML tags control was enabled for date, time, boolean and math fields.  This allows HTML tags to be evaluated or ignored in more field types."
},
"format": "BULLETS",
"uid": "1b73aaf4305811e98bb7a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Remove unique ID",
"Text": "To improve efficiency, user visible node unique IDs that depend on the node's data have been removed."
},
"format": "BULLETS",
"uid": "1d015318bb0511e7a2ac3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Config dialog state",
"Text": "Preserve the modified status of the config dialog when switching between windows displaying different files."
},
"format": "BULLETS",
"uid": "1db7e950fe8011edbb2654b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Reuse TreeLine windows",
"Text": "When a file is opened in an existing window, the window is now reused (not just replaced) to eliminate flashing."
},
"format": "BULLETS",
"uid": "1e3a82e4bb0411e7b7f33417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Child type limits",
"Text": "Fix a bug that prevented child type limits from being set back to all types."
},
"format": "BULLETS",
"uid": "1e7004a8fe8111edbb2654b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Current date/time math field references",
"Text": "Added support for current date and time references to math fields. Special field names ({*Now_Date*}, {*Now_Time*} and {*Now_Date_Time*}) must be manually typed in equations."
},
"format": "BULLETS",
"uid": "221ca8f0305911e99f3fa44cc8e97404"
},
{
"children": [],
"data": {
"Name": "German outline nuimbering",
"Text": "Add support for German outline numbering using double letters in some levels (thanks to Teresa M)."
},
"format": "BULLETS",
"uid": "228fa647dc8c11eab28aac675dac20af"
},
{
"children": [],
"data": {
"Name": "Empty data edit views",
"Text": "Fix a bug in Data Edit views when no fields are visible due to hidden numbering or math fields."
},
"format": "BULLETS",
"uid": "23b9a763dc8b11ea9dafac675dac20af"
},
{
"children": [],
"data": {
"Name": "Save as without filename",
"Text": "Fix a minor bug affecting default directories for save-as and export commands when there is not already a file name set."
},
"format": "BULLETS",
"uid": "25ab9320482011e989f27054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field crash",
"Text": "Avoid a crash when bad field name modifiers are in a math field equation."
},
"format": "BULLETS",
"uid": "273a36a82ca911eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Limit installer deletions",
"Text": "In the Windows installer, improve the deletion of files from older versions and avoid problems if installing into a directory shared with other applications."
},
"format": "BULLETS",
"uid": "2767e530e80411e8aec9a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Math field restrictions",
"Text": "Update math field equation restrictions to work with Python 3.8."
},
"format": "BULLETS",
"uid": "27950877dc8a11ea8902ac675dac20af"
},
{
"children": [],
"data": {
"Name": "Fallback character encoding",
"Text": "Add fallbacks to UTF-8 encoding if the OS encoding fails on import and export."
},
"format": "BULLETS",
"uid": "280fe9c42ca911eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Option to keep inaccessible recent files",
"Text": "A new general option controls whether inaccessible files are removed from the recent file list at startup. The files are removed by default, but this can be changed to avoid losing listings of files stored on removable drives."
},
"format": "BULLETS",
"uid": "283565ba334211e8a34bd66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Breadcrumb View",
"Text": "The top pane shows the parent and ancestors of the selected node. It is blank if no nodes or multiple nodes are selected. Ancestors with blue text can be clicked to select those nodes."
},
"format": "HEAD_PARA",
"uid": "28f8844ab58711e79d173417ebd53aeb"
},
{
"children": [
"f8ed5904813411f0b43b5847ca7850fa"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "293d508c813511f0b43b5847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Conditional type copy/paste & drag/drop",
"Text": "Fixed problems with copy / paste and drag / drop on nodes with conditional type settings."
},
"format": "BULLETS",
"uid": "299ba9e4334a11e881a6d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Type structure visualization",
"Text": "A new Show Configuration Structure command was added to the Data menu. This opens a read-only visualization of complex type structures as another TreeLine file."
},
"format": "BULLETS",
"uid": "2c9ba0c832ed11e9bf7f7054d2175f18"
},
{
"children": [],
"data": {
"Name": "Pretty print output",
"Text": "An indent (pretty print) output option was added to General Options (under Features Available). This makes saved TreeLine JSON files easier for humans to read at the expense of somewhat larger file sizes."
},
"format": "BULLETS",
"uid": "2d4430dc305711e9a33aa44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Open with bad references",
"Text": "TreeLine files with invalid child references can now be opened. A warning message is given about the missing child nodes in the corrupt file."
},
"format": "BULLETS",
"uid": "2df5b030bbf711e88a1ca44cc8e97404"
},
{
"children": [],
"data": {
"Name": "MacPorts",
"Text": "See MacPorts for a third-party port to macOS."
},
"format": "PARAGRAPH",
"uid": "2fa1be1fdc9511eaa00dac675dac20af"
},
{
"children": [],
"data": {
"Name": "Live HTML Export",
"Text": "A live tree HTML export creates an interactive view with expandable nodes and a descendant output pane."
},
"format": "BULLETS",
"uid": "31304c06792b11e888cfa44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Restoring window geometry",
"Text": "Fix issues with restoring window geometry with multiple monitors and changing configurations."
},
"format": "BULLETS",
"uid": "35d0914edc8911eab202ac675dac20af"
},
{
"children": [],
"data": {
"Name": "Multiple paste commands",
"Text": "New paste commands have been added for adding nodes before and after siblings.  There are also multiple paste commands for adding clones of nodes."
},
"format": "BULLETS",
"uid": "39c001f0bb0311e79e793417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Major rewrite",
"Text": "This is a major rewrite of TreeLine. Once it becomes more stable, it will be released as TreeLine version 3.0.0. The 2.1.x unstable series is being discontinued (no stable 2.2.0 release is planned)."
},
"format": "BULLETS",
"uid": "3d2bb12eba3c11e79b223417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Chinese translation",
"Text": "Add a simplified Chinese GUI translation (thanks to Qu Ray for translating)."
},
"format": "BULLETS",
"uid": "3e749de1e5d811e9a22ba44cc8e97404"
},
{
"children": [
"3e749de1e5d811e9a22ba44cc8e97404",
"cef1d9fee5de11e998dea44cc8e97404"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "3e749de3e5d811e98227a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Time field AM/PM",
"Text": "Now forces references to AM/PM in time field formats to be output regardless of system locale settings."
},
"format": "BULLETS",
"uid": "40ec6d5cbbf711e8bb93a44cc8e97404"
},
{
"children": [
"8062dece813311f0b43b5847ca7850fa",
"293d508c813511f0b43b5847ca7850fa",
"8062dd2a813311f0b43b5847ca7850fa"
],
"data": {
"Name": "August 30, 2025 - Release 3.2.0 (stable release)"
},
"format": "HEADINGS",
"uid": "414f6662813311f0b43b5847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Outline numbering",
"Text": "Change lettered outline numbering sequences to match standards. The sequences change from ...Y, Z, AA, AB, AC... to ...Y, Z, AA, BB, CC..."
},
"format": "BULLETS",
"uid": "4212597ee5e011e99b51a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Title list select in tree command",
"Text": "A Select in Tree command was added to the Title List's right-click context menu. It selects the node corresponding to the current line in the Title List editor. This makes it easier to edit or add children to an item."
},
"format": "BULLETS",
"uid": "42fb4166305a11e99fd7a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Title edit mouse move",
"Text": "Fixed node title editing errors caused by moving the mouse to a data edit box with the title edit still active."
},
"format": "BULLETS",
"uid": "45491730786a11e8b8e2a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Enter key selects current node",
"Text": "The enter key now selects a tree node after the first title letter(s) are typed to make it current (shown with a box around the title)."
},
"format": "BULLETS",
"uid": "456aa5ca793111e89a30a44cc8e97404"
},
{
"children": [
"66faed8adc9411ea965eac675dac20af",
"d8a76c1fdc9411eaab2dac675dac20af"
],
"data": {
"Name": "macOS"
},
"format": "BULLET_HEADING",
"uid": "460699ebdc9411ea89afac675dac20af"
},
{
"children": [],
"data": {
"Name": "Dark theme option",
"Text": "An optional dark color theme was added to General Options (under Appearances)."
},
"format": "BULLETS",
"uid": "46f3d0a4305e11e9892fa44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Relative paths",
"Text": "Avoid issues resolving relative paths between different Windows drive letters in external link fields."
},
"format": "BULLETS",
"uid": "46fc4054334b11e89299d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Major rewrite",
"Text": "This is a major rewrite of TreeLine. Once it becomes fully stable, it will be released as TreeLine version 3.0.0."
},
"format": "BULLETS",
"uid": "4bc47247786711e88b26a44cc8e97404"
},
{
"children": [
"4bc47249786711e8a3d5a44cc8e97404",
"4bc4724c786711e8a8d9a44cc8e97404",
"4bc4724f786711e89bdca44cc8e97404"
],
"data": {
"Name": "June 30, 2018 - Release 2.9.2 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "4bc47248786711e8a8bfa44cc8e97404"
},
{
"children": [
"4bc4724a786711e8a4dda44cc8e97404",
"4bc47247786711e88b26a44cc8e97404",
"4bc4724b786711e895e2a44cc8e97404"
],
"data": {
"Name": "Notes"
},
"format": "BULLET_HEADING",
"uid": "4bc47249786711e8a3d5a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Development snapshot",
"Text": "This is a development snapshot of TreeLine that should be considered a release candidate for an upcoming stable release. Many bugs have been fixed. User testing and bug reports are appreciated."
},
"format": "BULLETS",
"uid": "4bc4724a786711e8a4dda44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "A GUI translations is available in German.  All other translations are out of date and have not been included. Volunteers are needed to update translations in several languages."
},
"format": "BULLETS",
"uid": "4bc4724b786711e895e2a44cc8e97404"
},
{
"children": [
"57c4de74786911e89c3fa44cc8e97404",
"71b708ac786911e88d64a44cc8e97404",
"a7d7f61e786911e89bbca44cc8e97404",
"15da7fde786a11e881c8a44cc8e97404",
"456aa5ca793111e89a30a44cc8e97404"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "4bc4724c786711e8a8d9a44cc8e97404"
},
{
"children": [
"e4fc680a786911e899d3a44cc8e97404",
"45491730786a11e8b8e2a44cc8e97404",
"f011a5d8786911e8ace3a44cc8e97404"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "4bc4724f786711e89bdca44cc8e97404"
},
{
"children": [
"97cd921c2ca811eda95c54b2039ee1f3",
"97cd914a2ca811eda95c54b2039ee1f3",
"4f1367d62ca811eda95c54b2039ee1f3"
],
"data": {
"Name": "September 10, 2022 - Release 3.1.5 (stable release)"
},
"format": "HEADINGS",
"uid": "4f1366fa2ca811eda95c54b2039ee1f3"
},
{
"children": [
"4f136a742ca811eda95c54b2039ee1f3",
"280fe9c42ca911eda95c54b2039ee1f3",
"273a36a82ca911eda95c54b2039ee1f3"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "4f1367d62ca811eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Encrypted password",
"Text": "Fix a bug preventing a second-try password entry from opening an encrypted file."
},
"format": "BULLETS",
"uid": "4f136a742ca811eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Print preview",
"Text": "Fixed the appearance of the print preview when a dark theme is being used."
},
"format": "BULLETS",
"uid": "513e664c9b0d11f091375847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Multi-session controls",
"Text": "Fix problems detecting existing TreeLine sessions when opening files (mostly in Linux)."
},
"format": "BULLETS",
"uid": "5337587ddc8811eaaaedac675dac20af"
},
{
"children": [],
"data": {
"Name": "Clone removal",
"Text": "The new \"Data > Detach Clones\" command converts cloned nodes in selected branches back into independent nodes."
},
"format": "BULLETS",
"uid": "5647bc8cbb0611e783853417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "German translation",
"Text": "The German GUI translation was updated (thanks to Maria Seliger)."
},
"format": "BULLETS",
"uid": "57c4de74786911e89c3fa44cc8e97404"
},
{
"children": [
"57d4af20fe7f11edbb2654b2039ee1f3",
"57d4acd2fe7f11edbb2654b2039ee1f3"
],
"data": {
"Name": "June 3, 2023 - Release 3.1.6 (stable release)"
},
"format": "HEADINGS",
"uid": "57d4ac00fe7f11edbb2654b2039ee1f3"
},
{
"children": [
"1e7004a8fe8111edbb2654b2039ee1f3",
"1db7e950fe8011edbb2654b2039ee1f3",
"57d4ad9afe7f11edbb2654b2039ee1f3",
"df7baad6fe8011edbb2654b2039ee1f3",
"67cea5cefe8011edbb2654b2039ee1f3"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "57d4acd2fe7f11edbb2654b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Close dialogs with escape key",
"Text": "Fix problems occurring when the escape key is used to close various non-modal dialogs."
},
"format": "BULLETS",
"uid": "57d4ad9afe7f11edbb2654b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "External file modification",
"Text": "Detect external file modifications by checking the file's last modified time just prior to saving."
},
"format": "BULLETS",
"uid": "57d4ae62fe7f11edbb2654b2039ee1f3"
},
{
"children": [
"57d4ae62fe7f11edbb2654b2039ee1f3",
"a4ab733cfe8011edbb2654b2039ee1f3"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "57d4af20fe7f11edbb2654b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Linux menus",
"Text": "Added a desktop specification file to the Linux installer for desktop environment menu support."
},
"format": "BULLETS",
"uid": "58dddee4010f11e88925d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Setting types",
"Text": "Each tree node can be set to a type format independently."
},
"format": "BULLETS",
"uid": "5c1d58ac792a11e8b78ca44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Category level swap",
"Text": "A new \"Swap Category Levels\" command swaps child and grandchild nodes beneath a selected node. A child node with multiple nodes under it will become cloned under each one. Any existing grandchild clones will become individual nodes with multiple children."
},
"format": "BULLETS",
"uid": "5c90e0b0bb0611e78e443417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Cloned nodes",
"Text": "Cloned nodes (the same nodes with multiple parents/locations) can be created using special paste commands or by automatically matching identical nodes."
},
"format": "BULLETS",
"uid": "5f12f768b32c11e7a41a3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Library updates",
"Text": "Update the libraries used to build the Windows binaries to Python 3.8 and Qt/PyQt 5.14."
},
"format": "BULLETS",
"uid": "603e11fadf2011eaa12e7054d2175f18"
},
{
"children": [
"2fa1be1fdc9511eaa00dac675dac20af"
],
"data": {
"Name": "macOS"
},
"format": "BULLET_HEADING",
"uid": "611e03ffdc9411ea930eac675dac20af"
},
{
"children": [
"6515826e9b0c11f091375847ca7850fa"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "65157efe9b0c11f091375847ca7850fa"
},
{
"children": [
"65157efe9b0c11f091375847ca7850fa",
"651580529b0c11f091375847ca7850fa"
],
"data": {
"Name": "September 27, 2025 - Release 3.2.1 (stable release)"
},
"format": "HEADINGS",
"uid": "65157f8a9b0c11f091375847ca7850fa"
},
{
"children": [
"78f991de9b0d11f091375847ca7850fa",
"651580ac9b0c11f091375847ca7850fa",
"513e664c9b0d11f091375847ca7850fa",
"a5a948289b0d11f091375847ca7850fa",
"01d807fc9b0d11f091375847ca7850fa"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "651580529b0c11f091375847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Print page sizes",
"Text": "An error setting some page sizes for printing was fixed."
},
"format": "BULLETS",
"uid": "651580ac9b0c11f091375847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Color themes",
"Text": "Added an easily selectable light-colored theme option."
},
"format": "BULLETS",
"uid": "6515826e9b0c11f091375847ca7850fa"
},
{
"children": [],
"data": {
"Name": "TreeLine Export",
"Text": "Files can be exported that are compatible with older versions of TreeLine (1.x and 2.x), with a \".trl\" file extension.  Some newer features, such as cloned nodes and multiple root nodes may not be completely preserved.  TreeLine subtrees can also be exported to save just selected branches of the tree to a file using the current TreeLine version."
},
"format": "HEAD_PARA",
"uid": "65289b36b97611e783eb3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Custom time dialog",
"Text": "Added a custom time select dialog box for editing Time and TimeDate fields."
},
"format": "BULLETS",
"uid": "653f2f90334c11e8a7c9d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Printing long nodes",
"Text": "Multiple issues with printing long nodes were fixed."
},
"format": "BULLETS",
"uid": "6610203dd2c111e8a95ad66a6ab671cb"
},
{
"children": [
"66102040d2c111e8a210d66a6ab671cb",
"66102041d2c111e8bd85d66a6ab671cb"
],
"data": {
"Name": "October 20, 2018 - Release 3.0.2 (stable release)"
},
"format": "HEADINGS",
"uid": "6610203fd2c111e8b033d66a6ab671cb"
},
{
"children": [
"66102049d2c111e8bb55d66a6ab671cb"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "66102040d2c111e8a210d66a6ab671cb"
},
{
"children": [
"66102043d2c111e88d57d66a6ab671cb",
"6610203dd2c111e8a95ad66a6ab671cb",
"66102048d2c111e89f4cd66a6ab671cb"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "66102041d2c111e8bd85d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Windows printing",
"Text": "Fixed nonfunctional printing commands under Windows by building the Windows binary using PyInstaller rather than cx_Freeze."
},
"format": "BULLETS",
"uid": "66102043d2c111e88d57d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Blanks as zeros",
"Text": "Fixed problems saving files when the blanks as zeros property was changed for math fields."
},
"format": "BULLETS",
"uid": "66102048d2c111e89f4cd66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Python 3.7",
"Text": "Upgraded the Windows binary from Python 3.6 to Python 3.7."
},
"format": "BULLETS",
"uid": "66102049d2c111e8bb55d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Not supported",
"Text": "Due to a lack of Macs for testing, TreeLine on macOS is not formally supported."
},
"format": "BULLETS",
"uid": "66faed8adc9411ea965eac675dac20af"
},
{
"children": [],
"data": {
"Name": "Live HTML export",
"Text": "Fix a bug using child count fields in live HTML exports."
},
"format": "BULLETS",
"uid": "67cea5cefe8011edbb2654b2039ee1f3"
},
{
"children": [
"67e95a5fbbf611e8b8bda44cc8e97404",
"67e95a60bbf611e8a80ca44cc8e97404"
],
"data": {
"Name": "September 29, 2018 - Release 3.0.1 (stable release)"
},
"format": "HEADINGS",
"uid": "67e95a5bbbf611e891f7a44cc8e97404"
},
{
"children": [
"f966db0cc23f11e8b80fd66a6ab671cb",
"67e95a61bbf611e8989ca44cc8e97404"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "67e95a5fbbf611e8b8bda44cc8e97404"
},
{
"children": [
"67e95a64bbf611e8960fa44cc8e97404",
"2df5b030bbf711e88a1ca44cc8e97404",
"dc700fb4c24211e8b88dd66a6ab671cb",
"40ec6d5cbbf711e8bb93a44cc8e97404",
"9550a81ac24111e89029d66a6ab671cb",
"71e2f25cc24211e88524d66a6ab671cb",
"a757f64ac24211e8a95fd66a6ab671cb",
"bdc8628ec2bd11e889e57054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "67e95a60bbf611e8a80ca44cc8e97404"
},
{
"children": [],
"data": {
"Name": "About dialog text box",
"Text": "Added a read-only text box to the Help > About dialog to allow copying of the version and library information."
},
"format": "BULLETS",
"uid": "67e95a61bbf611e8989ca44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Old file import",
"Text": "Fixed a problem opening old TreeLine files that had format changes in File Info fields."
},
"format": "BULLETS",
"uid": "67e95a64bbf611e8960fa44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Data in config structure",
"Text": "Added many Show Configuration Structure data fields to show detailed settings for type formats and field formats.."
},
"format": "BULLETS",
"uid": "6a6067d4482011e989f27054d2175f18"
},
{
"children": [],
"data": {
"Name": "Select top node at open",
"Text": "The top root node is now selected at file open if there is not a recent selection state to restore.  Previously these files opened with no selection, which could cause confusion."
},
"format": "BULLETS",
"uid": "6a98186e305c11e99fbfa44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Insert date command",
"Text": "Add an Insert Date command that adds a timestamp to text field edit boxes."
},
"format": "BULLETS",
"uid": "6c916f15dc8c11ea9dbeac675dac20af"
},
{
"children": [],
"data": {
"Name": "Child type limits",
"Text": "Child node types that are available to be set can be limited. A new pull-down list of child type limits is in the \"Type Config\" tab of the configuration dialog if the advanced functions are shown."
},
"format": "BULLETS",
"uid": "6dc88226bb0711e7894d3417ebd53aeb"
},
{
"children": [
"6df9a0c6ba3b11e7925d3417ebd53aeb",
"6df9a0c9ba3b11e7a9793417ebd53aeb"
],
"data": {
"Name": "January 28, 2018 - Release 2.9.0 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "6df9a0c5ba3b11e78e7e3417ebd53aeb"
},
{
"children": [
"6df9a0c7ba3b11e7b7bd3417ebd53aeb",
"3d2bb12eba3c11e79b223417ebd53aeb",
"6df9a0c8ba3b11e78d783417ebd53aeb"
],
"data": {
"Name": "Notes"
},
"format": "BULLET_HEADING",
"uid": "6df9a0c6ba3b11e7925d3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Unstable snapshot",
"Text": "This is an unstable development snapshot of TreeLine. It could contain bugs. Testing and bug reports are appreciated, but the stable release (TreeLine 2.0.x) is recommended for critical work."
},
"format": "BULLETS",
"uid": "6df9a0c7ba3b11e7b7bd3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "The GUI and documentation translations are out of date and have not been included.  Volunteers are needed to update translations in several languages."
},
"format": "BULLETS",
"uid": "6df9a0c8ba3b11e78d783417ebd53aeb"
},
{
"children": [
"6df9a0caba3b11e78b283417ebd53aeb",
"d1d8e56eba4011e784ab3417ebd53aeb",
"04da8386ba4811e7b3de3417ebd53aeb",
"e6ad9f6eba4311e796bd3417ebd53aeb",
"cd28e024bb0211e79c553417ebd53aeb",
"1e3a82e4bb0411e7b7f33417ebd53aeb",
"98132868ba4511e7b7283417ebd53aeb",
"39c001f0bb0311e79e793417ebd53aeb",
"04a868f4bb0611e7aea13417ebd53aeb",
"5647bc8cbb0611e783853417ebd53aeb",
"5c90e0b0bb0611e78e443417ebd53aeb",
"6dc88226bb0711e7894d3417ebd53aeb",
"7697b826bb0411e788433417ebd53aeb",
"1d015318bb0511e7a2ac3417ebd53aeb",
"f5983b38bb0411e795e13417ebd53aeb",
"58dddee4010f11e88925d66a6ab671cb"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "6df9a0c9ba3b11e7a9793417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "New file format",
"Text": "TreeLine files now uses a new JSON format in place of the old XML format. This provides more flexibility for structuring new features like cloned nodes and multiple root nodes.  A new file extension (\".trln) helps to distinguish these files."
},
"format": "BULLETS",
"uid": "6df9a0caba3b11e78b283417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Maintain expanded nodes",
"Text": "The expand/collapse status of nearby nodes is maintained while editing the node structure.  This includes adding, deleting, moving and indenting nodes."
},
"format": "BULLETS",
"uid": "71b708ac786911e88d64a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Complex data menu commands",
"Text": "Fixed various errors when applying advanced clone and category commands from the Data menu to complex node structures."
},
"format": "BULLETS",
"uid": "71e2f25cc24211e88524d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Date and time formats",
"Text": "The Date, Time and DateTime fields  have new format strings that enable extra text to be added to the date output."
},
"format": "BULLETS",
"uid": "7697b826bb0411e788433417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Number field formatting",
"Text": "Fixed problems with number field formatting when using a \",\" radix with exponents."
},
"format": "BULLETS",
"uid": "7716c96e334a11e896bfd66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Drag and drop",
"Text": "Fixed errors that occurred when dragging and dropping nodes and files."
},
"format": "BULLETS",
"uid": "78f991de9b0d11f091375847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Math field expressions",
"Text": "Evaluate math expressions contained in fields that are referenced by math field equations. "
},
"format": "BULLETS",
"uid": "7a9ace43dc8a11ea9e9bac675dac20af"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "Translations of the TreeLine GUI are available in German and Spanish. The translation should load automatically if the OS locale is properly set. Alternatively, \"--lang xx\" can be appended to the command that starts TreeLine, where \"xx\" is the two-letter language code (\"en\", \"de\" or \"es\")."
},
"format": "HEAD_PARA",
"uid": "7e9b3b88c24511e896c7d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Word count equation",
"Text": "Added a word count function for math field types."
},
"format": "BULLETS",
"uid": "7f0da0fc813511f0b43b5847ca7850fa"
},
{
"children": [
"7ffeb672dc8711ea86ddac675dac20af",
"7ffeb670dc8711ea81aeac675dac20af",
"7ffeb66edc8711eaaa13ac675dac20af"
],
"data": {
"Name": "August 16, 2020 - Release 3.1.3 (stable release)"
},
"format": "HEADINGS",
"uid": "7ffeb66ddc8711ea9a87ac675dac20af"
},
{
"children": [
"d9119485dc8711ea92dcac675dac20af",
"8d9c1717dc8811ea9c40ac675dac20af",
"cf9c139fdc8e11ea8261ac675dac20af",
"88bb6300dc8e11ea9a73ac675dac20af",
"b6a4a6bddc8911ea8612ac675dac20af",
"23b9a763dc8b11ea9dafac675dac20af",
"0906c05bdc8f11ea94fbac675dac20af",
"35d0914edc8911eab202ac675dac20af",
"f2a0c0a1dc8d11ea8921ac675dac20af",
"5337587ddc8811eaaaedac675dac20af"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "7ffeb66edc8711eaaa13ac675dac20af"
},
{
"children": [
"27950877dc8a11ea8902ac675dac20af",
"c1f8dca5dc9511ea8f76ac675dac20af",
"603e11fadf2011eaa12e7054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "7ffeb670dc8711ea81aeac675dac20af"
},
{
"children": [
"dca5b84fdc8a11eab098ac675dac20af",
"6c916f15dc8c11ea9dbeac675dac20af",
"7a9ace43dc8a11ea9e9bac675dac20af",
"228fa647dc8c11eab28aac675dac20af"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "7ffeb672dc8711ea86ddac675dac20af"
},
{
"children": [
"800a0972305111e9a7fea44cc8e97404",
"f7bbd909305111e9be43a44cc8e97404",
"800a0975305111e9a018a44cc8e97404",
"800a0976305111e9bd43a44cc8e97404"
],
"data": {
"Name": "February 20, 2019 - Release 3.1.0 (beta release)"
},
"format": "HEADINGS",
"uid": "800a0971305111e991cda44cc8e97404"
},
{
"children": [
"800a0973305111e9b7b9a44cc8e97404",
"800a0974305111e99f0fa44cc8e97404"
],
"data": {
"Name": "Notes"
},
"format": "BULLET_HEADING",
"uid": "800a0972305111e9a7fea44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Beta release",
"Text": "This is a beta release of TreeLine. Some new features have not been extensively tested, but major bugs are unlikely. Testing and bug reports are appreciated, but those with very critical work should consider using the stable release (TreeLine 3.0.x)."
},
"format": "BULLETS",
"uid": "800a0973305111e9b7b9a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "GUI translations are available in German and Spanish, but they still require minor updates to cover recent changes. Volunteers are also needed to update or create translations in additional languages."
},
"format": "BULLETS",
"uid": "800a0974305111e99f0fa44cc8e97404"
},
{
"children": [
"6a98186e305c11e99fbfa44cc8e97404",
"800a0977305111e98c38a44cc8e97404",
"10c539e2305c11e9a392a44cc8e97404"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "800a0975305111e9a018a44cc8e97404"
},
{
"children": [
"800a097a305111e9950ba44cc8e97404",
"192373c6305511e9ab21a44cc8e97404"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "800a0976305111e9bd43a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Gray out data edit view math fields",
"Text": "Non-editable math fields in the Data Edit view show as gray when the mouse hovers over them."
},
"format": "BULLETS",
"uid": "800a0977305111e98c38a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Titles from HTML text fields",
"Text": "Fixed the truncation of node titles that are generated from the first line of HTML Text fields."
},
"format": "BULLETS",
"uid": "800a097a305111e9950ba44cc8e97404"
},
{
"children": [
"8062dd8e813311f0b43b5847ca7850fa",
"c31396d6813411f0b43b5847ca7850fa",
"9fdb2b84813411f0b43b5847ca7850fa"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "8062dd2a813311f0b43b5847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Closing windows",
"Text": "Fixed errors closing a window if the same file is open in another window."
},
"format": "BULLETS",
"uid": "8062dd8e813311f0b43b5847ca7850fa"
},
{
"children": [
"8062df28813311f0b43b5847ca7850fa",
"7f0da0fc813511f0b43b5847ca7850fa"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "8062dece813311f0b43b5847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Port to Qt6",
"Text": "Made extensive updates to port TreeLine to the Qt6 and PyQt6 libraries."
},
"format": "BULLETS",
"uid": "8062df28813311f0b43b5847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Numbering",
"Text": "Fix incorrect numbering updates in some situations with mixed node types."
},
"format": "BULLETS",
"uid": "84b24010482211e989f27054d2175f18"
},
{
"children": [],
"data": {
"Name": "Circular math errors",
"Text": "Fix problems opening files that contain circular reference errors in math fields."
},
"format": "BULLETS",
"uid": "88bb6300dc8e11ea9a73ac675dac20af"
},
{
"children": [],
"data": {
"Name": "Truncated text export",
"Text": "Fix a bug that truncated plain text exports after the first line."
},
"format": "BULLETS",
"uid": "8cdb2406e5df11e9a06da44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Find & replace error",
"Text": "Avoid an application error when a Find and Replace command causes fields to contain invalid data."
},
"format": "BULLETS",
"uid": "8d9c1717dc8811ea9c40ac675dac20af"
},
{
"children": [],
"data": {
"Name": "Title list select in tree",
"Text": "Enable the title list view's select in tree context menu to be used on new child nodes."
},
"format": "BULLETS",
"uid": "8e8e418ae5dc11e98404a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Copy command errors",
"Text": "Fix errors shown when using copy commands after closing TreeLine windows."
},
"format": "BULLETS",
"uid": "90dbc4e4334b11e892d0d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Dark mode tooltips",
"Text": "Modify dark mode colors to make tool tips visible."
},
"format": "BULLETS",
"uid": "9139627ee5db11e98a21a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Purge old field data",
"Text": "Data from fields that were removed from the configuration is now purged when a file is saved. This avoids missing matches in the Clone All Matched Nodes command."
},
"format": "BULLETS",
"uid": "9550a81ac24111e89029d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Old TreeLine Import",
"Text": "Files from older versions of TreeLine (1.x or 2.x) can be imported. These files are in XML format and generally have a \".trl\" file extension (current files are in JSON format with a \".trln\" file extension). Unlike other file imports, these older files will import without showing the import dialog box when using the \"File > Open\" command."
},
"format": "HEAD_PARA",
"uid": "95547c38b97411e7a42a3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Major rewrite",
"Text": "This is a major rewrite of TreeLine. Once it becomes more stable, it will be released as TreeLine version 3.0.0. The 2.1.x unstable series is being discontinued (no stable 2.2.0 release is planned)."
},
"format": "BULLETS",
"uid": "95a6e905333f11e886edd66a6ab671cb"
},
{
"children": [
"95a6e90b333f11e8976fd66a6ab671cb",
"95a6e90e333f11e88696d66a6ab671cb",
"b16866da333f11e88adbd66a6ab671cb"
],
"data": {
"Name": "March 31, 2018 - Release 2.9.1 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "95a6e90a333f11e89efed66a6ab671cb"
},
{
"children": [
"95a6e90c333f11e8b766d66a6ab671cb",
"95a6e905333f11e886edd66a6ab671cb",
"95a6e90d333f11e8b88ed66a6ab671cb"
],
"data": {
"Name": "Notes"
},
"format": "BULLET_HEADING",
"uid": "95a6e90b333f11e8976fd66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Unstable snapshot",
"Text": "This is an unstable development snapshot of TreeLine. It has improved but could still contain bugs. Testing and bug reports are appreciated, but those with very critical work should consider using the stable release (TreeLine 2.0.x)."
},
"format": "BULLETS",
"uid": "95a6e90c333f11e8b766d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "The GUI and documentation translations are out of date and have not been included.  Volunteers are needed to update translations in several languages."
},
"format": "BULLETS",
"uid": "95a6e90d333f11e8b88ed66a6ab671cb"
},
{
"children": [
"b1cd1f82334111e8b89ad66a6ab671cb",
"dd22e382334111e894e6d66a6ab671cb",
"653f2f90334c11e8a7c9d66a6ab671cb",
"283565ba334211e8a34bd66a6ab671cb"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "95a6e90e333f11e88696d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Child count equation references",
"Text": "Eliminate a problem defining math field equations that include child count references."
},
"format": "BULLETS",
"uid": "95d970aa481f11e989f27054d2175f18"
},
{
"children": [],
"data": {
"Name": "Printed line width",
"Text": "For better visibility, increase the width of tree structure lines in printed and PDF output files."
},
"format": "BULLETS",
"uid": "97cd8dda2ca811eda95c54b2039ee1f3"
},
{
"children": [
"97cd8dda2ca811eda95c54b2039ee1f3",
"c5c45e3e2d4411eda95c54b2039ee1f3",
"c771aa162ca911eda95c54b2039ee1f3",
"c8eb2e4e2ca911eda95c54b2039ee1f3"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "97cd914a2ca811eda95c54b2039ee1f3"
},
{
"children": [
"97cd93ac2ca811eda95c54b2039ee1f3"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "97cd921c2ca811eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Strike-through font",
"Text": "Add a command for strike-through font formatting."
},
"format": "BULLETS",
"uid": "97cd93ac2ca811eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Native cloned nodes",
"Text": "Cloned nodes now have a more native and efficient implementation.  This allows the same nodes to have multiple parents.  The new breadcrumb view shows a list of clones for the selected node that can be clicked to select the other instances."
},
"format": "BULLETS",
"uid": "98132868ba4511e7b7283417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Format Menu",
"Text": "The format menu has text formatting commands that are active when using edit boxes in the Data Edit view."
},
"format": "HEAD_PARA",
"uid": "997af664b58811e7ac243417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Ancestor field references",
"Text": "Fixed problems with advanced ancestor field output references in some tree locations."
},
"format": "BULLETS",
"uid": "9a8a1400334c11e89838d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Old TreeLine import/export",
"Text": "Files from older versions of TreeLine (2.x and 1.x) can be imported and exported."
},
"format": "BULLETS",
"uid": "9bd80f34b32b11e7be613417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Portable config",
"Text": "Problems with writing config files in Windows portable installations were fixed."
},
"format": "BULLETS",
"uid": "9c08f39de80311e8b791a44cc8e97404"
},
{
"children": [
"9c08f3a0e80311e8b2e0a44cc8e97404"
],
"data": {
"Name": "November 17, 2018 - Release 3.0.3 (stable release)"
},
"format": "HEADINGS",
"uid": "9c08f39ee80311e8a510a44cc8e97404"
},
{
"children": [
"9c08f3a1e80311e884dca44cc8e97404",
"9c08f39de80311e8b791a44cc8e97404",
"9c08f3a2e80311e88128a44cc8e97404",
"2767e530e80411e8aec9a44cc8e97404"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "9c08f3a0e80311e8b2e0a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Child count fields",
"Text": "Fixed an error when adding child count fields to the output format."
},
"format": "BULLETS",
"uid": "9c08f3a1e80311e884dca44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Config file error handling",
"Text": "Improved error handling after failing to read or write config files."
},
"format": "BULLETS",
"uid": "9c08f3a2e80311e88128a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Generic XML input",
"Text": "Improved the handling of multi-line text in generic XML import."
},
"format": "BULLETS",
"uid": "9fdb2b84813411f0b43b5847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Colors",
"Text": "The default GUI colors can be changed using the \"Tools > Customize Colors\" dialog. A dark theme is available, or individual colors can be selected."
},
"format": "HEAD_PARA",
"uid": "9ff09734dc9011ea887bac675dac20af"
},
{
"children": [],
"data": {
"Name": "Convert between Choice and Combination",
"Text": "Preserve the choices in the field format when switching between Choice and Combination field types."
},
"format": "BULLETS",
"uid": "a4ab733cfe8011edbb2654b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Time editor",
"Text": "Fixed the appearance of the time edit widget when used with a dark theme."
},
"format": "BULLETS",
"uid": "a5a948289b0d11f091375847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Complex undo operations",
"Text": "Fixed some problems with using the Undo command after complex operations."
},
"format": "BULLETS",
"uid": "a757f64ac24211e8a95fd66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Save state for discarded files",
"Text": "The expanded/collapsed and selected tree states are now saved even if changes were discarded in the previous session."
},
"format": "BULLETS",
"uid": "a7d7f61e786911e89bbca44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Pull-downs on repeated dialog boxes",
"Text": "Fixed issues on Windows with pull-down combo boxes not working after repeatedly showing some dialogs (mostly find and filter dialogs)."
},
"format": "BULLETS",
"uid": "a7fa190c334911e88d18d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Child Type Limits",
"Text": "In addition to setting the default child type, the child node types that are available to be set can be limited. There is a pull-down list of child type limits in the \"Type Config\" tab of the configuration dialog if the advanced functions are shown. Only checked types will show up in the type lists when using the \"Data > Set Node Type\" command on a child node."
},
"format": "HEAD_PARA",
"uid": "aa6f6ca4bb0711e7bbf43417ebd53aeb"
},
{
"children": [
"90dbc4e4334b11e892d0d66a6ab671cb",
"299ba9e4334a11e881a6d66a6ab671cb",
"e46163b4334b11e88512d66a6ab671cb",
"a7fa190c334911e88d18d66a6ab671cb",
"f817e5b6334a11e89349d66a6ab671cb",
"7716c96e334a11e896bfd66a6ab671cb",
"46fc4054334b11e89299d66a6ab671cb",
"9a8a1400334c11e89838d66a6ab671cb",
"145bd91a334c11e896b1d66a6ab671cb",
"edd50b80334c11e8b5f5d66a6ab671cb",
"b7ec7052334a11e88325d66a6ab671cb"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "b16866da333f11e88adbd66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Breadcrumb view",
"Text": "An upper breadcrumb view shows titles of the selected node's ancestors; the titles can be clicked to select them in the tree."
},
"format": "BULLETS",
"uid": "b1b5d434b32911e780fd3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Live tree HTML export",
"Text": "A new HTML export uses Javascript and CSS to create a live tree view. Nodes in the tree can be expanded and collapsed, and a separate pane shows the output for all descendants of the selected node. One form of this export creates separate files that are linked to the existing TreeLine file. These files are intended for use on a web server (browser security usually prevents local access). Only the TreeLine file needs to be replaced to update the data (re-export is not required). The second form creates a single file (with embedded data) that can be accessed from a local web browser."
},
"format": "BULLETS",
"uid": "b1cd1f82334111e8b89ad66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Search and replace",
"Text": "Added support for finding and replacing empty data fields using the search and replace command."
},
"format": "BULLETS",
"uid": "b398d8ee482211e989f27054d2175f18"
},
{
"children": [
"b5fe6aa030e111ebbc097054d2175f18"
],
"data": {
"Name": "November 27, 2020 - Release 3.1.4 (stable release)"
},
"format": "HEADINGS",
"uid": "b5fe698830e111ebbc097054d2175f18"
},
{
"children": [
"b5fe74c830e111ebbc097054d2175f18",
"b5fe6f0030e111ebbc097054d2175f18",
"b5fe737e30e111ebbc097054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "b5fe6aa030e111ebbc097054d2175f18"
},
{
"children": [],
"data": {
"Name": "Window closing error",
"Text": "Avoid an error message when a window is closed with the focus on a dialog box."
},
"format": "BULLETS",
"uid": "b5fe6f0030e111ebbc097054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field root reference",
"Text": "Fix a problem recalculating root references in field equations."
},
"format": "BULLETS",
"uid": "b5fe737e30e111ebbc097054d2175f18"
},
{
"children": [],
"data": {
"Name": "Python 3.9 compatible",
"Text": "Fix an incompatibility with the new Python 3.9 version under Linux or running from source."
},
"format": "BULLETS",
"uid": "b5fe74c830e111ebbc097054d2175f18"
},
{
"children": [],
"data": {
"Name": "Font dialog bug",
"Text": "Avoid problems with empty parameters in the font dialogs."
},
"format": "BULLETS",
"uid": "b6a4a6bddc8911ea8612ac675dac20af"
},
{
"children": [],
"data": {
"Name": "Output table spacing",
"Text": "Fixed minor spacing issues for tables shown in output views and HTML exports."
},
"format": "BULLETS",
"uid": "b7ec7052334a11e88325d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Math Fields",
"Text": "For more complex output formatting, the math field can be used to combine other fields using various mathematical, relational and string operators.  See the Math Type section for details."
},
"format": "HEAD_PARA",
"uid": "bbbf735ac24711e8b560d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Cut last node",
"Text": "Fix an error caused by attempting to use the Edit > Cut command when there is only one node."
},
"format": "BULLETS",
"uid": "bdc8628ec2bd11e889e57054d2175f18"
},
{
"children": [],
"data": {
"Name": "MacPorts reference",
"Text": "References to a macOS port on MacPorts were added to the System Requirements and Installation documentation."
},
"format": "BULLETS",
"uid": "c1f8dca5dc9511ea8f76ac675dac20af"
},
{
"children": [],
"data": {
"Name": "Filter view icon",
"Text": "Fixed a problem with the filter view when the tree icon is set to none."
},
"format": "BULLETS",
"uid": "c31396d6813411f0b43b5847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Windows binaries",
"Text": "Update the libraries used to build the Windows binaries to Python 3.10 and Qt/PyQt 5.15.  Note that this eliminates support for Windows 7."
},
"format": "BULLETS",
"uid": "c5c45e3e2d4411eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Russian translation",
"Text": "Add a Russian translation of the GUI and the help files (thanks to Andrew Trofimov)."
},
"format": "BULLETS",
"uid": "c771aa162ca911eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "German translation",
"Text": "Update the German GUI translation (thanks to Karsten)."
},
"format": "BULLETS",
"uid": "c8eb2e4e2ca911eda95c54b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Data editor hover",
"Text": "By default, the edit boxes in the data edit view now activate when the mouse hovers over them. This eliminates the need to click to activate them. This feature can be disabled in general options if desired."
},
"format": "BULLETS",
"uid": "cd28e024bb0211e79c553417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Unlimited data editor height option",
"Text": "Add a general option to extend the height of data editors with long text content. The default setting (limit the height to the window size) is unchanged. The new option uses the view scroll bars to access the full text length."
},
"format": "BULLETS",
"uid": "cef1d9fee5de11e998dea44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Math field recalculation",
"Text": "Perform a more complete recalculation of math fields after certain operations."
},
"format": "BULLETS",
"uid": "cf9c139fdc8e11ea8261ac675dac20af"
},
{
"children": [],
"data": {
"Name": "TreeLine 2 import / export",
"Text": "Import and export filters are provided for older TreeLine version 2.x and 1.x files. The older files can be opened using the standard \"File > Open\" command."
},
"format": "BULLETS",
"uid": "d1d8e56eba4011e784ab3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "MacPorts",
"Text": "There is a third-party port available on MacPorts."
},
"format": "BULLETS",
"uid": "d8a76c1fdc9411eaab2dac675dac20af"
},
{
"children": [],
"data": {
"Name": "Enable add child",
"Text": "Make the Add Child command available after filtering has ended."
},
"format": "BULLETS",
"uid": "d9119485dc8711ea92dcac675dac20af"
},
{
"children": [
"ff3f7c98481e11e989f27054d2175f18",
"db25ce66481e11e989f27054d2175f18"
],
"data": {
"Name": "March 17, 2019 - Release 3.1.1 (stable release)"
},
"format": "HEADINGS",
"uid": "db25cd62481e11e989f27054d2175f18"
},
{
"children": [
"e3690592481f11e989f27054d2175f18",
"84b24010482211e989f27054d2175f18",
"db25cf60481e11e989f27054d2175f18",
"95d970aa481f11e989f27054d2175f18",
"25ab9320482011e989f27054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "db25ce66481e11e989f27054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math equation with copied type",
"Text": "Fix problems defining a math field equation on a recently copied data type."
},
"format": "BULLETS",
"uid": "db25cf60481e11e989f27054d2175f18"
},
{
"children": [],
"data": {
"Name": "Sort root nodes",
"Text": "The Sort command now properly sorts multiple root nodes when sorting the entire tree."
},
"format": "BULLETS",
"uid": "dc700fb4c24211e8b88dd66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Customize colors",
"Text": "Add a more flexible tool for customizing GUI colors."
},
"format": "BULLETS",
"uid": "dca5b84fdc8a11eab098ac675dac20af"
},
{
"children": [],
"data": {
"Name": "Multi-level CSV import / export",
"Text": "New forms of CSV table text imports and exports can work with multiple levels of child nodes, preserving the tree structure.  The first column of the table includes a level number that is incremented for child relationships."
},
"format": "BULLETS",
"uid": "dd22e382334111e894e6d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "CSV import error",
"Text": "Avoid a traceback error message when attempting to import a CSV file with a bad header row."
},
"format": "BULLETS",
"uid": "df7baad6fe8011edbb2654b2039ee1f3"
},
{
"children": [],
"data": {
"Name": "Dark mode printing",
"Text": "Fix printing problems when using the dark theme."
},
"format": "BULLETS",
"uid": "e3690592481f11e989f27054d2175f18"
},
{
"children": [],
"data": {
"Name": "Error after empty filter",
"Text": "Avoid problems showing the tree view after closing a filter command that found no matches."
},
"format": "BULLETS",
"uid": "e46163b4334b11e88512d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Deletion errors",
"Text": "Several errors occurring when deleting or removing nodes have been fixed.  These include problems when the mouse is pre-highlighting descendant nodes and when nodes to be deleted are selected in a separate window."
},
"format": "BULLETS",
"uid": "e4fc680a786911e899d3a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Breadcrumb view",
"Text": "A new breadcrumb view pane above the other panes shows a sequence of ancestor titles for a selected node. The ancestors can be clicked to select them. For cloned nodes, multiple lines provide links to each instance's ancestor sequence."
},
"format": "BULLETS",
"uid": "e6ad9f6eba4311e796bd3417ebd53aeb"
},
{
"children": [],
"data": {
"Name": "Windows binary",
"Text": "The Windows binary is now built using updated libraries (Qt 5.11 and PyQt 5.11)."
},
"format": "BULLETS",
"uid": "e7776f4da14511e88aefa44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Major rewrite",
"Text": "This is the first stable release of a major TreeLine rewrite. It includes all of the new features shown below in the 2.1.x and 2.9.x development series."
},
"format": "BULLETS",
"uid": "e8e10d32a14311e8ab90a44cc8e97404"
},
{
"children": [
"e8e10d34a14311e899cca44cc8e97404",
"e8e10d38a14311e8a0c3a44cc8e97404",
"e8e10d37a14311e8b0b3a44cc8e97404"
],
"data": {
"Name": "August 19, 2018 - Release 3.0.0 (new stable release)"
},
"format": "HEADINGS",
"uid": "e8e10d33a14311e88e24a44cc8e97404"
},
{
"children": [
"e8e10d32a14311e8ab90a44cc8e97404",
"e8e10d35a14311e8aca9a44cc8e97404",
"e8e10d36a14311e8b832a44cc8e97404"
],
"data": {
"Name": "Notes"
},
"format": "BULLET_HEADING",
"uid": "e8e10d34a14311e899cca44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Compatibility",
"Text": "TreeLine files now use a JSON format in place of the old XML format. This provides more flexibility for structuring new features like cloned nodes and multiple root nodes. A new file extension (\".trln) helps to distinguish files with the new format. Import and export filters are provided for older TreeLine version 2.x and 1.x files. The older files can be opened using the standard \"File > Open\" command."
},
"format": "BULLETS",
"uid": "e8e10d35a14311e8aca9a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "A GUI translations is available in German.  All other translations are out of date and have not been included. Volunteers are needed to update translations in several languages."
},
"format": "BULLETS",
"uid": "e8e10d36a14311e8b832a44cc8e97404"
},
{
"children": [
"e7776f4da14511e88aefa44cc8e97404"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "e8e10d37a14311e8b0b3a44cc8e97404"
},
{
"children": [
"e8e10d3ca14311e8b71da44cc8e97404"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "e8e10d38a14311e8a0c3a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Default font",
"Text": "The default font for the application can now be set in Tools > Customize Fonts. This is useful for enlarging fonts on some systems with high screen resolutions. Options still exist to individually specify tree view, output view and editor fonts."
},
"format": "BULLETS",
"uid": "e8e10d3ca14311e8b71da44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Add modified flag",
"Text": "Add an asterisk after the file name in the title bar if a file has been modified."
},
"format": "BULLETS",
"uid": "ea0c9b24e79911e98abe7054d2175f18"
},
{
"children": [],
"data": {
"Name": "Category command disable",
"Text": "Avoid problems running data category-based commands on selections without any child nodes."
},
"format": "BULLETS",
"uid": "edd50b80334c11e8b5f5d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Initial field values",
"Text": "Fixed errors occurring when field types are changed after initial default values have been set."
},
"format": "BULLETS",
"uid": "f011a5d8786911e8ace3a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Cloned nodes",
"Text": "Nodes that are duplicated by cloning show up as separate clickable paths in the upper breadcrumb view."
},
"format": "BULLETS",
"uid": "f08b97be792b11e88588a44cc8e97404"
},
{
"children": [
"f16f7f70a25a11e7b7c67054d2175f18",
"f16f87b8a25a11e7b7c67054d2175f18",
"f16fbef4a25a11e7b7c67054d2175f18",
"f16fc7aaa25a11e7b7c67054d2175f18",
"f16fd236a25a11e7b7c67054d2175f18",
"f16fe6fea25a11e7b7c67054d2175f18",
"f1703d8ea25a11e7b7c67054d2175f18",
"f1713464a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "TreeLine Documentation"
},
"format": "HEADINGS",
"uid": "f16f7d90a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16f82aea25a11e7b7c67054d2175f18",
"f16f8498a25a11e7b7c67054d2175f18",
"f16f85b0a25a11e7b7c67054d2175f18",
"f16f86aaa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Introduction"
},
"format": "HEADINGS",
"uid": "f16f7f70a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Version",
"Text": "This document covers TreeLine, Version 3.2.1, a stable release, dated September 27, 2025 by Doug Bell."
},
"format": "PARAGRAPH",
"uid": "f16f82aea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Why TreeLine?",
"Text": "Do you have lots of sticky notes lying around with various useful information jotted down? Or many lists of books, movies, links, website logins, personal contacts, or things to do? Can you find them when you need them? Well, I often couldn't. So here's my answer."
},
"format": "PARAGRAPH",
"uid": "f16f8498a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Outliner vs. database",
"Text": "TreeLine is both an outliner and a small database. It stores almost any kind of information. A tree structure makes it easy to keep things organized. And each node in the tree can contain several fields, forming a database. The output format for each node can be defined, and the output can be shown on the screen, printed, or exported to HTML or text."
},
"format": "PARAGRAPH",
"uid": "f16f85b0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "License",
"Text": "Since I'm not in the software business, I'm making this program free for anyone to use, distribute and modify, as long as it stays non-proprietary.  TreeLine is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either Version 2 of the License, or (at your option) any later version.  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. See the LICENSE file provided with this program for more information."
},
"format": "PARAGRAPH",
"uid": "f16f86aaa25a11e7b7c67054d2175f18"
},
{
"children": [
"f16f8aeca25a11e7b7c67054d2175f18",
"f16f9654a25a11e7b7c67054d2175f18",
"f16f9c44a25a11e7b7c67054d2175f18",
"f16fa040a25a11e7b7c67054d2175f18",
"f16fa31aa25a11e7b7c67054d2175f18",
"f16fa806a25a11e7b7c67054d2175f18",
"f16fadf6a25a11e7b7c67054d2175f18",
"f16fb1dea25a11e7b7c67054d2175f18",
"f16fb90ea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Features"
},
"format": "HEADINGS",
"uid": "f16f87b8a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16f9050a25a11e7b7c67054d2175f18",
"f16f921ca25a11e7b7c67054d2175f18",
"f16f932aa25a11e7b7c67054d2175f18",
"f16f9424a25a11e7b7c67054d2175f18",
"f16f9550a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "General"
},
"format": "BULLET_HEADING",
"uid": "f16f8aeca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Store information",
"Text": "Stores almost any type of information, including plain text, rich text, HTML, numbers, dates, times, booleans, URLs, etc."
},
"format": "BULLETS",
"uid": "f16f9050a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Tree structure",
"Text": "The tree structure helps keep things organized."
},
"format": "BULLETS",
"uid": "f16f921ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Fields",
"Text": "Each node can have several fields that form a mini-database."
},
"format": "BULLETS",
"uid": "f16f932aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Node types",
"Text": "Several node types, with different sets of fields, can be included in one file."
},
"format": "BULLETS",
"uid": "f16f9424a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Output format",
"Text": "The node format, including fields, output lines, formatting and tree-view icon, can be defined for each node type."
},
"format": "BULLETS",
"uid": "f16f9550a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16f9744a25a11e7b7c67054d2175f18",
"f16f9834a25a11e7b7c67054d2175f18",
"f16f992ea25a11e7b7c67054d2175f18",
"f16f9a32a25a11e7b7c67054d2175f18",
"f16f9b36a25a11e7b7c67054d2175f18",
"b1b5d434b32911e780fd3417ebd53aeb"
],
"data": {
"Name": "Views"
},
"format": "BULLET_HEADING",
"uid": "f16f9654a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Tree view",
"Text": "The left-hand view shows an indented, expandable list of titles"
},
"format": "BULLETS",
"uid": "f16f9744a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Right-hand views",
"Text": "The right-hand view can show one of three views - for showing output, editing node data and editing node titles."
},
"format": "BULLETS",
"uid": "f16f9834a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Show parent and children",
"Text": "The right-hand view is normally split to show data from the parent node and its children."
},
"format": "BULLETS",
"uid": "f16f992ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Show multiple selection",
"Text": "If multiple nodes are selected, the right-hand view shows all of their data."
},
"format": "BULLETS",
"uid": "f16f9a32a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Show descendant output",
"Text": "The output view can be set to show indented output from all descendant nodes."
},
"format": "BULLETS",
"uid": "f16f9b36a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16f9d2aa25a11e7b7c67054d2175f18",
"f16f9e2ea25a11e7b7c67054d2175f18",
"f16f9f3ca25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Navigation"
},
"format": "BULLET_HEADING",
"uid": "f16f9c44a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Find commands",
"Text": "Find commands can search node data for text matches or for more specific rules."
},
"format": "BULLETS",
"uid": "f16f9d2aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Filtering",
"Text": "Filtering commands show only matching nodes in a flat left-hand view."
},
"format": "BULLETS",
"uid": "f16f9e2ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Toggle selections",
"Text": "Previous and next selection commands toggle selections to quickly move between parts of the tree."
},
"format": "BULLETS",
"uid": "f16f9f3ca25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fa130a25a11e7b7c67054d2175f18",
"5c1d58ac792a11e8b78ca44cc8e97404",
"f16fa220a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Formatting"
},
"format": "BULLET_HEADING",
"uid": "f16fa040a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Configuration dialog",
"Text": "The dialog for data type configuration has several tabs to easily set all type, field and output parameters."
},
"format": "BULLETS",
"uid": "f16fa130a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Format copies",
"Text": "Formatting information can be copied from another TreeLine file."
},
"format": "BULLETS",
"uid": "f16fa220a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fa40aa25a11e7b7c67054d2175f18",
"f16fa504a25a11e7b7c67054d2175f18",
"f16fa5fea25a11e7b7c67054d2175f18",
"f16fa70ca25a11e7b7c67054d2175f18"
],
"data": {
"Name": "File Handling"
},
"format": "BULLET_HEADING",
"uid": "f16fa31aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Undo/redo",
"Text": "Undo and redo commands are available for all modifying operations."
},
"format": "BULLETS",
"uid": "f16fa40aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File formats",
"Text": "TreeLine files use a JSON format, with options for automatically compressing or encrypting the files."
},
"format": "BULLETS",
"uid": "f16fa504a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Document templates",
"Text": "Document templates for new files are preformatted to cover basic needs."
},
"format": "BULLETS",
"uid": "f16fa5fea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Printing",
"Text": "The formatted output can be printed with parent/child lines, headers and footers."
},
"format": "BULLETS",
"uid": "f16fa70ca25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fa8f6a25a11e7b7c67054d2175f18",
"31304c06792b11e888cfa44cc8e97404",
"f16fa9f0a25a11e7b7c67054d2175f18",
"9bd80f34b32b11e7be613417ebd53aeb",
"f16faaf4a25a11e7b7c67054d2175f18",
"f16fabf8a25a11e7b7c67054d2175f18",
"f16facf2a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "File Import and Export"
},
"format": "BULLET_HEADING",
"uid": "f16fa806a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "HTML export",
"Text": "The data can be exported to single or multiple HTML files with optional navigation panes."
},
"format": "BULLETS",
"uid": "f16fa8f6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Text import/export",
"Text": "Plain text, tab-indented text and delimited table files can be imported and exported."
},
"format": "BULLETS",
"uid": "f16fa9f0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Bookmark import/export",
"Text": "Mozilla and XBEL format bookmark files can be imported and exported."
},
"format": "BULLETS",
"uid": "f16faaf4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Generic XML import/export",
"Text": "Generic XML files can be imported and exported, allowing TreeLine to function as a crude XML editor."
},
"format": "BULLETS",
"uid": "f16fabf8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "ODF import/export",
"Text": "ODF text documents can be imported and exported as outlines."
},
"format": "BULLETS",
"uid": "f16facf2a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16faee6a25a11e7b7c67054d2175f18",
"f16fafe0a25a11e7b7c67054d2175f18",
"f16fb0daa25a11e7b7c67054d2175f18",
"f08b97be792b11e88588a44cc8e97404"
],
"data": {
"Name": "Linking"
},
"format": "BULLET_HEADING",
"uid": "f16fadf6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Internal links",
"Text": "Internal link fields select a linked node when clicked."
},
"format": "BULLETS",
"uid": "f16faee6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "External links",
"Text": "External link fields can be used to open URLs in web browsers."
},
"format": "BULLETS",
"uid": "f16fafe0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Embedded links",
"Text": "Both internal and external links can be embedded into text fields."
},
"format": "BULLETS",
"uid": "f16fb0daa25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fb2cea25a11e7b7c67054d2175f18",
"f16fb3c8a25a11e7b7c67054d2175f18",
"f16fb4eaa25a11e7b7c67054d2175f18",
"f16fb5e4a25a11e7b7c67054d2175f18",
"5f12f768b32c11e7a41a3417ebd53aeb",
"f16fb6dea25a11e7b7c67054d2175f18",
"f16fb7f6a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Data Manipulation"
},
"format": "BULLET_HEADING",
"uid": "f16fb1dea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Sorting",
"Text": "Nodes can be sorted by title or by predefined key fields."
},
"format": "BULLETS",
"uid": "f16fb2cea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math Fields",
"Text": "Math fields can be defined that automatically calculate their contents based on numerical values in other nodes."
},
"format": "BULLETS",
"uid": "f16fb3c8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Numbering",
"Text": "Numbering fields can be defined and automatically updated."
},
"format": "BULLETS",
"uid": "f16fb4eaa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Conditional types",
"Text": "A node's icon and output format can be changed conditionally based on its data."
},
"format": "BULLETS",
"uid": "f16fb5e4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Spell check",
"Text": "Text data can be spell checked (requires an external program - see the System Requirements  section)."
},
"format": "BULLETS",
"uid": "f16fb6dea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Arranging data",
"Text": "Data can be automatically re-arranged using categories from data fields."
},
"format": "BULLETS",
"uid": "f16fb7f6a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fba08a25a11e7b7c67054d2175f18",
"f16fbb02a25a11e7b7c67054d2175f18",
"f16fbc06a25a11e7b7c67054d2175f18",
"f16fbd00a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Customization"
},
"format": "BULLET_HEADING",
"uid": "f16fb90ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Customization",
"Text": "There are many options for customizing both general and file-based attributes."
},
"format": "BULLETS",
"uid": "f16fba08a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Shortcuts and toolbars",
"Text": "There are editors for keyboard shortcuts and toolbar commands."
},
"format": "BULLETS",
"uid": "f16fbb02a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Fonts",
"Text": "Fonts used in the GUI, editors and output views can be customized."
},
"format": "BULLETS",
"uid": "f16fbc06a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Languages",
"Text": "The user interface is available in simplified Chinese, English, German, Russian and Spanish. Translations into other languages are TBD."
},
"format": "BULLETS",
"uid": "f16fbd00a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fbfeea25a11e7b7c67054d2175f18",
"f16fc4bca25a11e7b7c67054d2175f18",
"460699ebdc9411ea89afac675dac20af"
],
"data": {
"Name": "System Requirements"
},
"format": "HEADINGS",
"uid": "f16fbef4a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fc0d4a25a11e7b7c67054d2175f18",
"f16fc1cea25a11e7b7c67054d2175f18",
"f16fc2c8a25a11e7b7c67054d2175f18",
"f16fc3c2a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Linux"
},
"format": "BULLET_HEADING",
"uid": "f16fbfeea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Python",
"Text": "Python (Version 3.9 or higher)"
},
"format": "BULLETS",
"uid": "f16fc0d4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Qt",
"Text": "QT (Version 6.4 or higher)"
},
"format": "BULLETS",
"uid": "f16fc1cea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "PyQt",
"Text": "PyQt (Version 6.4 or higher)"
},
"format": "BULLETS",
"uid": "f16fc2c8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Spell check",
"Text": "If spell checking is desired, either aspell, ispell or hunspell are required"
},
"format": "BULLETS",
"uid": "f16fc3c2a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fc5aca25a11e7b7c67054d2175f18",
"f16fc6b0a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Windows"
},
"format": "BULLET_HEADING",
"uid": "f16fc4bca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Binary",
"Text": "Should run on any computer running Windows 10 or 11."
},
"format": "BULLETS",
"uid": "f16fc5aca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Spell check",
"Text": "If spell checking is desired, an external program is required. Either aspell, ispell or hunspell must be installed."
},
"format": "BULLETS",
"uid": "f16fc6b0a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fc89aa25a11e7b7c67054d2175f18",
"f16fcc96a25a11e7b7c67054d2175f18",
"611e03ffdc9411ea930eac675dac20af"
],
"data": {
"Name": "Installation"
},
"format": "HEADINGS",
"uid": "f16fc7aaa25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fc98aa25a11e7b7c67054d2175f18",
"f16fcaa2a25a11e7b7c67054d2175f18",
"f16fcb9ca25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Linux"
},
"format": "HEADINGS",
"uid": "f16fc89aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Basic installation",
"Text": "Extract the source files from the treeline tar file, then change to the TreeLine directory in a terminal. For a basic installation, simply execute the following command as root: \"python install.py\"."
},
"format": "PARAGRAPH",
"uid": "f16fc98aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Python 3",
"Text": "If your distribution defaults to Python 2.x, you may need to substitute \"python3\" for \"python\" in these commands."
},
"format": "PARAGRAPH",
"uid": "f16fcaa2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Install options",
"Text": "To see all install options, use: \"python install.py -h\". To install TreeLine with a different prefix (the default is /usr/local), use: \"python install.py -p /prefix/path\".  To skip dependency checks, use: \"python install.py -x\"."
},
"format": "PARAGRAPH",
"uid": "f16fcb9ca25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fcf3ea25a11e7b7c67054d2175f18",
"f16fd042a25a11e7b7c67054d2175f18",
"f16fd132a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Windows"
},
"format": "HEADINGS",
"uid": "f16fcc96a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "All users",
"Text": "To install for all users, execute the \"TreeLine-x.x.x-install-all.exe\" file.  Administrator permissions are required."
},
"format": "PARAGRAPH",
"uid": "f16fcf3ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Single user",
"Text": "To install for a single user (administrator rights are not required), execute the \"TreeLine-x.x.x-install-user.exe\" file."
},
"format": "PARAGRAPH",
"uid": "f16fd042a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Portable install",
"Text": "For a portable install, execute the \"TreeLine-x.x.x-install-user.exe\" file. The file association, shortcuts and uninstaller tasks should be unchecked. When TreeLine starts and prompts for the config file location, choose the program directory option."
},
"format": "PARAGRAPH",
"uid": "f16fd132a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fd326a25a11e7b7c67054d2175f18",
"f16fdccca25a11e7b7c67054d2175f18",
"f16fe0b4a25a11e7b7c67054d2175f18",
"f16fe3fca25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Basic Usage"
},
"format": "HEADINGS",
"uid": "f16fd236a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fd682a25a11e7b7c67054d2175f18",
"28f8844ab58711e79d173417ebd53aeb",
"f16fd858a25a11e7b7c67054d2175f18",
"f16fd9aca25a11e7b7c67054d2175f18",
"f16fdabaa25a11e7b7c67054d2175f18",
"f16fdbc8a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Views"
},
"format": "HEADINGS",
"uid": "f16fd326a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Tree View",
"Text": "The left-hand view shows a tree of node titles. Parent nodes can be opened and closed to display or hide their indented descendant nodes. Clicking on an already selected node allows the title to be edited.  Right-click context menus are available for commonly used functions."
},
"format": "HEAD_PARA",
"uid": "f16fd682a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Right-hand Views",
"Text": "The right pane is tabbed to show one of three different views of the data. The \"Data Output\" view shows the formatted text, the \"Data Edit\" view shows text edit boxes, and the \"Title List\" view shows an editable list of node titles.
\n
\nWhen a parent node is selected in the tree, the right view will default to showing information about the selected node in an upper pane and information about the selected node's children in a lower pane. The \"View > Show Child Pane\" command will toggle the display of the child nodes. If the selected node has no children, the view will show a single pane with information about the selected node only.
\n
\nWhen multiple nodes are selected in the tree (by holding down the shift or Ctrl keys while clicking), the right view will not display any child node information. It will instead show information about every selected node.
\n
\nWhen no nodes are selected in the tree (by clicking on a blank area or Ctrl clicking to unselect), the right view will show information about the top-level (root) nodes."
},
"format": "HEAD_PARA",
"uid": "f16fd858a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Data Output View",
"Text": "The \"Data Output\" view shows formatted output text. It cannot be edited from this view.
\n
\nWhen the \"View > Show Output Descendants\" command is toggled, the \"Data Output\" view will show an indented list with information about every descendant of a single selected node."
},
"format": "HEAD_PARA",
"uid": "f16fd9aca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Data Edit View",
"Text": "The \"Data Edit\" view shows a text edit box for each data field within a node.  It also shows the node types and the node titles.  The types of edit boxes vary based on the field type.  Some are just text editors, while others (such as choice fields, date fields, links, etc.) have pull-down menus or dialogs."
},
"format": "HEAD_PARA",
"uid": "f16fdabaa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Title List View",
"Text": "The \"Title List\" view shows a list of node titles that can be modified using typical text editor methods.  If a new line is typed, a new node is created with that title.  If a line is deleted, the corresponding node is removed from the tree."
},
"format": "HEAD_PARA",
"uid": "f16fdbc8a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fddbca25a11e7b7c67054d2175f18",
"f16fdeb6a25a11e7b7c67054d2175f18",
"997af664b58811e7ac243417ebd53aeb",
"f16fdfb0a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Editing"
},
"format": "HEADINGS",
"uid": "f16fdccca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Node Menu",
"Text": "The commands in the \"Node\" menu operate on the selected nodes in the left tree view. There are commands to add or insert nodes, rename node titles and delete nodes. There are also commands to rearrange the tree by changing indent levels or moving nodes up or down. For many of the commands, the descendants of the selected nodes are also affected."
},
"format": "HEAD_PARA",
"uid": "f16fddbca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Edit Menu",
"Text": "The edit menu includes undo and redo commands that can fix problems. Cut, copy and paste commands can operate either on text in the right-hand view (if selected or active) or to tree nodes."
},
"format": "HEAD_PARA",
"uid": "f16fdeb6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Shortcuts",
"Text": "There are several shortcuts for use in tree editing. Drag and drop will move (or copy if the Ctrl button is held) nodes. Clicking on a selected node will rename it. Pressing the delete key will remove the selected nodes. If desired, these shortcuts can be disabled in \"Tools > General Options\"."
},
"format": "HEAD_PARA",
"uid": "f16fdfb0a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fe1cca25a11e7b7c67054d2175f18",
"f16fe2c6a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Files"
},
"format": "HEADINGS",
"uid": "f16fe0b4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Templates",
"Text": "When starting a new file, a dialog box offers a choice of templates. The default has only a single text field for each node that contains the title. The Long Text template adds a second long text field for more output text. Other templates have various fields for contacts, book lists and to-do lists."
},
"format": "HEAD_PARA",
"uid": "f16fe1cca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Sample Files",
"Text": "Various TreeLine sample files can be opened by using the \"File > Open Sample\" command.  These have more detail and example content than the new file templates."
},
"format": "HEAD_PARA",
"uid": "f16fe2c6a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fe4eca25a11e7b7c67054d2175f18",
"f16fe5f0a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Data Types"
},
"format": "HEADINGS",
"uid": "f16fe3fca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Node Types",
"Text": "Multiple node data types can be defined in a TreeLine file. Each can contain different data fields and have different output formats. See the template and sample files for examples. Nodes can be set to a specific type using the \"Data > Set Node Type\" command."
},
"format": "HEAD_PARA",
"uid": "f16fe4eca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Type Config",
"Text": "The \"Data > Configure Data Types\" command is used to modify node data types, fields and output formatting.  Refer to the Detailed Usage section of the full documentation for details."
},
"format": "HEAD_PARA",
"uid": "f16fe5f0a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fe7e4a25a11e7b7c67054d2175f18",
"f16fed0ca25a11e7b7c67054d2175f18",
"f16ff2f2a25a11e7b7c67054d2175f18",
"f1700936a25a11e7b7c67054d2175f18",
"f1700f58a25a11e7b7c67054d2175f18",
"f170146ca25a11e7b7c67054d2175f18",
"f1701caaa25a11e7b7c67054d2175f18",
"f170207ea25a11e7b7c67054d2175f18",
"f170256aa25a11e7b7c67054d2175f18",
"f1702c4aa25a11e7b7c67054d2175f18",
"f170335ca25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Detailed Usage"
},
"format": "HEADINGS",
"uid": "f16fe6fea25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fe8dea25a11e7b7c67054d2175f18",
"f16fe9e2a25a11e7b7c67054d2175f18",
"f16feaf0a25a11e7b7c67054d2175f18",
"f16fec08a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Tree Navigation and Search"
},
"format": "HEADINGS",
"uid": "f16fe7e4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Keyboard Shortcuts",
"Text": "There are several keyboard commands that can be used for tree navigation. The up and down arrow keys move the selection. The left and right arrows open and close the current node. The \"Home\", \"End\", \"Page Up\" and \"Page Down\" keys can be used to move quickly through the tree.
\n
\nAnother way to move through the tree is to type the first letter of a visible node title. Hitting the letter again highlights to the next possibility."
},
"format": "HEAD_PARA",
"uid": "f16fe8dea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Selection",
"Text": "Multiple nodes can be selected by holding down the CTRL or the SHIFT key when changing the active node. Individual nodes are added or removed from the selection when the CTRL key is held. The selection of all nodes between the old and new active nodes are toggled when SHIFT is held. The active node can be changed by using the mouse or by using any of the keyboard navigation methods.
\n
\nThe \"View > Previous Selection\" and \"View > Next Selection\" commands can be used to toggle through a history of selections, allowing faster navigation through the tree."
},
"format": "HEAD_PARA",
"uid": "f16fe9e2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Searching",
"Text": "The \"Tools > Find Text\" command will search for text within the tree structure. The dialog box has options for searching all of the node data or only the node titles. There are also options for how to interpret the search text. Key words will match nodes with the search words found anywhere in the node. Key full words will only match complete words anywhere in the node. Full phrase will only match the complete phrase in the proper sequence. Finally, the regular expression option will search using Python regular expressions.
\n
\nThe \"Tools > Conditional Find\" command will search in particular node types and node fields. Various comparison operators can be selected to exactly match, to match a greater or lesser value, or part of the value. And the True/False operators give the same result regardless of the values. In general, the value is interpreted using the edit format for special field types. Multiple rules can be added, connected with logical \"and\" or \"or\" operators. The \"All Types\" option makes fields from every type are available, so that multiple node types to be part of the same search. The condition will be false for node types that do not contain that field name.
\n
\nThere is also a quick, incremental search of node titles. By default, it's bound to ctrl+/. Then, matching titles are found as the search string is typed. The F3 and shift+F3 keys can be used to go to the next or previous matches, respectively."
},
"format": "HEAD_PARA",
"uid": "f16feaf0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Filtering",
"Text": "There are two filtering commands, \"Tools > Text Filter\" and \"Tools > Conditional Filter\". They work like the corresponding search commands above, except that they show all of the matching nodes in a flat list that replaces the tree view. The nodes can be selected and edited from this view. Use the \"End Filter\" button to restore the full tree view.
\n
\nSearches for Conditional Find and Conditional Filter can be saved in the dialog boxes and loaded again at another time."
},
"format": "HEAD_PARA",
"uid": "f16fec08a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16fedfca25a11e7b7c67054d2175f18",
"f16feef6a25a11e7b7c67054d2175f18",
"f16feffaa25a11e7b7c67054d2175f18",
"f16ff0f4a25a11e7b7c67054d2175f18",
"f16ff1e4a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Defining Node Types"
},
"format": "HEADINGS",
"uid": "f16fed0ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Type List",
"Text": "The \"Type List\" is the first tab of the \"Data > Configure Types Dialog\". The list of data types can be modified by the buttons on the right. New types can be added, and existing types can be copied, renamed or deleted."
},
"format": "HEAD_PARA",
"uid": "f16fedfca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Type Config",
"Text": "\"Type Config\" is the second tab of the Configure Types Dialog. It contains a selection for the default child type. If set, this will be the initial type used for new children with this type of parent. If set to \"[None]\", children will default to either the type of their siblings or their parent.
\n
\nThe \"Change Icon\" button allows the selection of a custom tree icon for this data type. The \"Clear Select\" button on the icon dialog can be used to set the icon to \"None\", so that no icon will be displayed for this type. To avoid showing any tree icons, the \"Show icons in the tree view\" general option can be unset.
\n
\nThere are also options here for adding blanks lines between nodes, allowing HTML tags in the common format text, and changing the output to add bullets or tables."
},
"format": "HEAD_PARA",
"uid": "f16feef6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Field List",
"Text": "The \"Field List\" is the third tab of the Configure Types Dialog. The list of fields within a data type can be modified by using the buttons on the right. New fields can be added, and existing fields can be moved, renamed or deleted.  Sort keys can also be defined to specify the fields that are compared when nodes are sorted."
},
"format": "HEAD_PARA",
"uid": "f16feffaa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Field Config",
"Text": "\"Field Config\" is the fourth tab of the Configure Types Dialog. The field type and its output format string can be set, if applicable to the field. Extra prefix and suffix text to be output with the field can also be set, and a default field value for new nodes can be entered. The number of lines displayed in the editor for the field can also be specified. Finally, an option to evaluate HTML tags can be set to recognize HTML tags in Choice, AutoChoice, Combination, AutoCombination and RegularExpression fields. If this is set, special characters (angled brackets and quotation marks) will need to be manually escaped to show up in the field text."
},
"format": "HEAD_PARA",
"uid": "f16ff0f4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Output",
"Text": "\"Output\" is the last tab of the Configure Types Dialog. The left half of the dialog shows the fields. The right half shows the formatting for the title (used for the node text in the tree view) and the node output. The formatting consists of text lines with embedded fields. The fields are shown as \"{*field_name*}\". The fields that are selected in the list (multiple fields can be selected by holding Ctrl or Shift keys while clicking) can be added to a format at the cursor position with the \">>\" keys. The field reference at the cursor can be removed with the \"<<\" keys."
},
"format": "HEAD_PARA",
"uid": "f16ff1e4a25a11e7b7c67054d2175f18"
},
{
"children": [
"f16ff3e2a25a11e7b7c67054d2175f18",
"f16ff4dca25a11e7b7c67054d2175f18",
"f16ff5f4a25a11e7b7c67054d2175f18",
"f16ff7c0a25a11e7b7c67054d2175f18",
"f16ff8f6a25a11e7b7c67054d2175f18",
"f16ff9faa25a11e7b7c67054d2175f18",
"f17005f8a25a11e7b7c67054d2175f18",
"f1700710a25a11e7b7c67054d2175f18",
"f16ffc02a25a11e7b7c67054d2175f18",
"f16ffd06a25a11e7b7c67054d2175f18",
"f16ffe14a25a11e7b7c67054d2175f18",
"f16ffb08a25a11e7b7c67054d2175f18",
"f16fff18a25a11e7b7c67054d2175f18",
"f1700008a25a11e7b7c67054d2175f18",
"f1700102a25a11e7b7c67054d2175f18",
"f1700206a25a11e7b7c67054d2175f18",
"f1700300a25a11e7b7c67054d2175f18",
"f1700404a25a11e7b7c67054d2175f18",
"f17004fea25a11e7b7c67054d2175f18",
"f170081ea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Field Types"
},
"format": "HEADINGS",
"uid": "f16ff2f2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Field Options",
"Text": "The field type and options are set in the \"Field Config\" tab of the \"Data > Configure Types Dialog\". The many different field types are described in the paragraphs below.
\n
\nSeveral of the field types use a formatting string to define their output. For a list of available formatting characters, use the \"Format Help\" button. Entries in the data editor which do not match the format will cause a blue triangle to show in the upper left corner of the edit box, and the output for that field will be replaced with \"#####\"."
},
"format": "HEAD_PARA",
"uid": "f16ff3e2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Text Type",
"Text": "The default field type is a text field. It is the most commonly used field. These fields are edited using edit boxes in the data editor view. There are several commands in the Format menu (and also in the context menu) for setting the font style and adding external or internal links. The edit box height expands when re-displayed after adding several lines of text. The minimum edit box height can also be set explicitly in the \"Field Config\" tab."
},
"format": "HEAD_PARA",
"uid": "f16ff4dca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "HTML Text Type",
"Text": "This type allows simple HTML tags to be used in the text. Commonly used tags include \"<b>bold</b>\", \"<u>underline</u>\", \"line break<br/>\", \"horizontal line<hr/>\", and various font tags. Complex block tags should generally be avoided. Carriage returns are ignored, and non-escaped \"<\", \">\" and \"&\" symbols do not display. "
},
"format": "HEAD_PARA",
"uid": "f16ff5f4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "One Line Text Type",
"Text": "This type restricts the text length to a single line. It does not allow carriage returns but does not restrict line wrapping of a single long line."
},
"format": "HEAD_PARA",
"uid": "f16ff7c0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Spaced Text Type",
"Text": "This type holds plain text and preserves all spacing.  Other formatting of the text is not permitted.  It could be useful to use the \"Tools > Customize Fonts\" command to set the editor font to a mono-spaced font when using this field type."
},
"format": "HEAD_PARA",
"uid": "f16ff8f6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Number Type",
"Text": "In the number type, special characters in the format define the display of the numbers. The format uses a string of \"#\" (optional digit) and \"0\" (required digit) characters to define the output formatting. For example, pi formatted with \"#.#\" is \"3.1\" and formatted with \"00.00\" is \"03.14\". Regardless of the formatting, digits to the left of the decimal point are not truncated, since that would display an incorrect result. But use care to show enough decimal places (either optional or required) to avoid problems with round-off error.
\n
\nThe radix character can be specified as either \".\" or \",\" to handle internationalization. For use as a thousands separator, use \"\\,\" or \"\\.\". For example, a large number may be formatted as \"#\\,###\\,###.##\" or as \"#\\.###\\.###,##\". Press the \"Format Help\" button from the field format dialog for more formatting details. 
\n
\nUnlike most other formats, the number type also uses the output format for display in the Data Editor. Of course, any new entry with a reasonable format is correctly interpreted (but the correct radix character must be used)."
},
"format": "HEAD_PARA",
"uid": "f16ff9faa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Boolean Type",
"Text": "This type gives two choices corresponding to true/false values. The format help menu includes typical values such as \"yes/no\", \"true/false\" and \"1/0\", but users can also enter their own word pair. The data editor boxes will accept either the currently set format or any of the typical values."
},
"format": "HEAD_PARA",
"uid": "f16ffb08a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Date Type",
"Text": "In the date field type, special characters in the format (all starting with \"%\") are replaced by elements of the data, similar to number fields. Press the \"Format Help\" button from the field format dialog for formatting details.  Non-special characters will be output as themselves.
\n
\nThere is also an edit format under \"Tools > General Options > Data Editor Formats\". This controls how date fields are displayed in the Data Editor view. Generally, entries in the data editor with various formats will be correctly interpreted regardless of this setting, but dates must use the correct day-month-year sequence. Also note that the date editor format does not support days of the week.
\n
\nA default initial field value of \"Now\" can be used to enter the date of node creation."
},
"format": "HEAD_PARA",
"uid": "f16ffc02a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Time Type",
"Text": "In the time field type, special characters in the format (all starting with \"%\") are replaced by elements of the data, similar to number fields. Press the \"Format Help\" button from the field format dialog for formatting details. Non-special characters will be output as themselves. 
\n
\nThere is also an edit format under \"Tools > General Options > Data Editor Formats\". This controls how time fields are displayed in the Data Editor view. Generally, entries in the data editor with various formats will be correctly interpreted regardless of this setting.
\n
\nA default initial field value of \"Now\" can be used to enter the time of node creation."
},
"format": "HEAD_PARA",
"uid": "f16ffd06a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "DateTime Type",
"Text": "The DateTime field combines dates and times into a single field that is useful for timestamps. Special characters in the format (all starting with \"%\") are replaced by elements of the data, as in date and time fields. Press the \"Format Help\" button from the field format dialog for formatting details. Non-special characters will be output as themselves. 
\n
\nThe DateTime edit format is uses the date and time formats located in \"Tools > General Options > Data Editor Formats\". The date and time formats are combined, separated by a space character.
\n
\nA default initial field value of \"Now\" can be used to enter the date and time of node creation."
},
"format": "HEAD_PARA",
"uid": "f16ffe14a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Choice Type",
"Text": "The choice field type allows for the selection of text items from a pull-down edit list. The formatting strings for these types list the items separated with the \"/\" character (use \"//\" to get a literal \"/\" in an item).  Entries in the data editor which do not match the choices will cause a blue triangle to show in the upper left corner of the edit box, and the output for that field will be replaced with \"#####\"."
},
"format": "HEAD_PARA",
"uid": "f16fff18a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Auto Choice Type",
"Text": "This field type is similar to the choice type, but without a format string. The entries in the pull-down menu are automatically generated from all previously used entries. Any entries that are typed will be available in the pull-down menu for future use. "
},
"format": "HEAD_PARA",
"uid": "f1700008a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Combination Type",
"Text": "This is basically the equivalent of the choice type with multiple selection. The formatting string entries are separated by the \"/\" character. The pull-down menu shows check-boxes that are checked for currently selected nodes. By default, the selected entries are output separated by a comma and a space. This can be changed in the \"Type Config\" tab of the \"Data > Configure Types Dialog\". Click the \"Show Advanced\" button to see the separator setting."
},
"format": "HEAD_PARA",
"uid": "f1700102a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Auto Combination Type",
"Text": "This field type is similar to the combination type, but without a format string. The entries in the pull-down menu are automatically generated from all previously used entries. Any entries that are typed will be available in the pull-down menu for future use. "
},
"format": "HEAD_PARA",
"uid": "f1700206a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "External Link Type",
"Text": "This type can support various link protocols, including http and https for web pages, mailto for email addresses and file for local files.  A pull down dialog in the data editor allows the selection of the protocol type and the entry of an address and a display name.  In the edit boxes, the display name shows up in [brackets], and it is used as the text of the link in the output view.  The \"file\" protocol also provides a button to browse for a path and buttons to choose either absolute or relative path names.
\n
\nClicking on the link in the output view or choosing \"Open Link\" from the right-click context menu in the edit box will open the link in a web browser.   In Linux, setting the \"BROWSER\" environment variable to a string like \"mozilla %s\" will result in the desired browser being used."
},
"format": "HEAD_PARA",
"uid": "f1700300a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Internal Link Type",
"Text": "These links create shortcuts to select nodes elsewhere in the tree structure. To create a link, click the pull-down arrow and then select the target node in the tree view. The display name is shown in brackets. It is initially set to the target node title, but it can be edited. The right-click context menu can be used to clear the link or to select the target node.
\n
\nClicking the link in the output view will select the target node in the tree view."
},
"format": "HEAD_PARA",
"uid": "f1700404a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Picture Type",
"Text": "These links add referenced pictures to the output view. A pull down dialog in the data editor has a button to browse for picture files to be linked. It also allows absolute or relative paths to be used and has a small image preview."
},
"format": "HEAD_PARA",
"uid": "f17004fea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math Type",
"Text": "Math field types are configured by defining equations. The equations can reference number fields, date fields, time fields, boolean fields, text fields and/or other math fields. The resulting values of math fields are automatically calculated for each node. Various mathematical, relational and string operators are available. The results can be numbers, text, boolean, dates or times.

To define a math field equation, press the \"Define Equation\" button in the \"Field Config\" tab of the \"Data > Configure Types Dialog\". This brings up a dialog with fields to reference on the left and math operators on the right. The \"Reference Level\" pull-down determines whether the reference is from the same node, the node's parent, the root node, or the node's children. The \"Result Type\" pull-down allows arithmetic, date, time, boolean or text results to be chosen. The \"Operator Type\" pull-down allows numeric, comparison or text operators to be shown in the operator list. The down-arrow buttons below the references and operators add the selected item to the equation text below. Portions of equations can also be typed directly in the equation text line editor.

References to child nodes must be enclosed in a grouping function, such as sum, max, min, mean or join. A math field can contain a parent or child reference to itself, but not a same-level reference to itself (a circular reference). The references only contain the field name, so they will reference a parent or child field with that name even if it is a different node type.

In equations, date fields are represented by the number of days since January 1, 1970, and time fields are the number of seconds since midnight. So date fields can be subtracted to give the number of days elapsed, and numbers of days can be added to or subtracted from dates to result in new dates. Time fields can be subtracted to give the number of seconds elapsed, and numbers of seconds can be added to or subtracted from times to result in new times. Also, special field names ({*Now_Date*}, {*Now_Time*} and {*Now_Date_Time*}) can be manually typed in equations to represent current dates and times.  The \"Data->Regenerate References\" command may be needed to force re-evaluation of time-based references.

The \"if\" comparison operator can be used to make the result depend on the value of another field. The expression is written as \"true_value if condition else false_value\". Of course, the \"true_value\", \"condition\" and \"false_value\" strings must be replaced with valid fields or expressions. If this operator is inserted from the operator list (under comparisons), it will include parenthesis as placeholders. These parenthesis are optional in the equations.

The \"join\" text function is used to combine text from several other fields (or from child nodes). The first argument to the function is a separator string that is placed between each piece of text. The remaining argument(s) are the text to be joined.

By default, math fields are shown in the data edit view, but they are read-only. To hide them, uncheck the \"Show math fields in the Data Edit View\" box under \"Tools > General Options > Features Available\".

There is also an option under \"File > Properties\" that toggles whether blank fields are treated as zeros. If checked (the default), a blank field that is referenced by a math field has a value of zero (for numeric operations) or blank (for text operations). If unchecked, any blank references also cause equations that reference them to be blank.
"
},
"format": "HEAD_PARA",
"uid": "f17005f8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Numbering Type",
"Text": "This type (not to be confused with the number type above) provides fields that are automatically filled in with the \"Data > Update Numbering\" command. The \"Format Help\" button in the field format dialog shows the output format options. A single format level will result in a simple sequential numbering scheme. Use of the \"/\" level separator will result in an outline-type numbering with different sequences at different levels. Use of the \".\" section separator will result in a \"2.3.5\" type numbering scheme.
\n
\nSince numbering fields are automatically populated, by default they are not shown in the data edit view.  To show them, check the \"Show numbering fields in the Data Edit View\" box under \"Tools > General Options > Features Available\".  When they are shown in the data edit view, they show up in section numbering style, regardless of the output format."
},
"format": "HEAD_PARA",
"uid": "f1700710a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Regular Expression Type",
"Text": "This type allows arbitrary format strings to be matched that restrict the data to a particular format. It uses Python regular expression syntax. Entries in the data editor which do not match the format string expression will cause a blue triangle to show in the upper left corner of the edit box, and the output for that field will be replaced with \"#####\"."
},
"format": "HEAD_PARA",
"uid": "f170081ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f1700a26a25a11e7b7c67054d2175f18",
"f1700b34a25a11e7b7c67054d2175f18",
"f1700c38a25a11e7b7c67054d2175f18",
"f1700d3ca25a11e7b7c67054d2175f18",
"f1700e40a25a11e7b7c67054d2175f18",
"bbbf735ac24711e8b560d66a6ab671cb"
],
"data": {
"Name": "Output Formatting Details"
},
"format": "HEADINGS",
"uid": "f1700936a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Output Format Examples",
"Text": "Here is an example of output formatting for a book list:
\n
\n\"{*Title*}\"
\n(c) {*Copyright*}, Rating: {*Rating*}
\n{*PlotDescription*}
\n
\nEach of the field names in enclosed in {* *}, curly brackets and asterisks.  For more examples, see the sample files that can be opened using the \"File > Open Sample\" command."
},
"format": "HEAD_PARA",
"uid": "f1700a26a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Title Formats",
"Text": "When a node in the tree is renamed, the program attempts to match the title formatting pattern to set the appropriate fields (the same title matching occurs when editing lines in the \"Title List\" view). If the title formatting is too complex, it may not correctly guess the intent. Things like adjacent fields with no characters separating them should be avoided unless you do not wish to rename nodes from the tree.
\n
\nIf the text data used for a tree view title has multiple lines, only the first line will be used as the title."
},
"format": "HEAD_PARA",
"uid": "f1700b34a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Skipped Output Lines",
"Text": "If all of the fields in an output format line are empty for a given node, then the line is skipped. No blank line or embedded text will be output for that line. Note that this does not apply to a line without any fields (only embedded text). Also, when a line ending with a <br/> or an <hr/> tag is skipped, the ending tag is retained."
},
"format": "HEAD_PARA",
"uid": "f1700c38a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "HTML Tags",
"Text": "By default, the \"Allow HTML rich text in formats\" option is unchecked  in the \"Type Config\"  tab of the Configure Types Dialog.  So any HTML tags are treated as plain text.  If the option is enabled, simple HTML formatting tags can be used in node output formats.
\n
\nCommonly used tags include \"<b>bold</b>\", \"<u>underline</u>\", \"line break<br/>\", \"horizontal line<hr/>\", and various font tags. Complex block tags should generally be avoided."
},
"format": "HEAD_PARA",
"uid": "f1700d3ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Other Field References",
"Text": "References to fields that are not contained within the node can be added to the output. Pushing the \"Show Advanced\" button on the \"Output\" tab of the configure dialog makes a reference level selection become visible.
\n
\nIf the reference level is changed to \"File Info Reference\", fields containing file meta-data can be added to the output. These include the file name, path, size, modified date and modified time. These special fields are shown as \"{*!field_name*}\" in the title and output format editors.
\n
\nThere are field references to various ancestor nodes (parents, grandparents, etc.). These require the data type of the reference to be specified. This selection determines the field names that are available, but the data from any type with a matching field name will be shown in the output. References to fields from parent and grandparent nodes are shown as \"{**field_name*}\" and \"{***field_name*}\", respectively. There are also general ancestor references, shown as \"{*?field_name*}\", that take data from the closest ancestor with a matching field.
\n
\nReferences to child nodes can also be added, shown as \"{*&field_name*}\". These also require that the child data type be specified. The child data becomes embedded in the parent output. The child data is delimited with a separator string defined on the \"Type Config\" tab (with show advanced active). The separator defaults to a comma and a space, but can be set to <br/> or anything else.
\n
\nFinally, a \"Child Count\" reference can be added. This field will show the number of children (\"Level1\" field) or grandchildren (\"Level2\" field) of a node. These are shown as {*#Level1*} in the format editors.
\n
\nFor examples of these fields, see the \"sample_other_fields\" file (by using the \"File > Open Sample\" command)."
},
"format": "HEAD_PARA",
"uid": "f1700e40a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1701156a25a11e7b7c67054d2175f18",
"f170125aa25a11e7b7c67054d2175f18",
"f1701368a25a11e7b7c67054d2175f18",
"aa6f6ca4bb0711e7bbf43417ebd53aeb"
],
"data": {
"Name": "Type Format Details"
},
"format": "HEADINGS",
"uid": "f1700f58a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Generic and Derived Types",
"Text": "Data types can be set to derive their field settings from a generic type. This allows types with different output formatting to always use the same set of fields. Any changes to the generic's list of fields and field types are automatically reflected in the fields of all derived types. This does not apply to a field's output formatting, which can still be set independently.
\n
\nThere are two methods for creating derived types. First, a derived option can be selected when copying a type on the \"Type List\" tab of the \"Data > Configure Types Dialog\". Alternately, a generic type can be specified from the derived type's \"Type Config\" tab of the dialog if the advanced functions are shown."
},
"format": "HEAD_PARA",
"uid": "f1701156a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Conditional Types",
"Text": "Conditional expressions can be used to automatically assign a data type based on each node's content. Conditions can be assigned only to a generic type and its associated derived types. This allows the automatic assignment of different output formatting or different icons depending on each node's field data.

The conditional dialog box is accessed from a button on the \"Type Config\" tab of the \"Data->Configure Types Dialog\" if the advanced functions are shown. Each line of the condition includes a field, an operator and a comparison value. The operators include equality, greater than, less than, starts with, ends with, and contains. There are also True and False operators that will toggle the type of all nodes simultaneously.

For special field types such as dates, times, and booleans, the comparison value should be entered in the same format that is used in the Data Editor window. In general, the starts with, ends with, and contains operators should not be used for these special fields, since the comparison is done using an internal data representation. Dates and times also support a special comparison value of \"Now\", which is always interpreted as the current date and time. The \"Data->Regenerate References\" command may be needed to force re-evaluation of time-based references.

The \"Add New Rule\" button is used to add additional condition lines. The lines can be joined with \"and\" or \"or\" operators. The \"Remove Rule\" button deletes the last condition line. If only a single line is present, the \"Remove Rule\" button completely removes the condition.

Conditions do not have to be set for all types in a family. If no conditions are true for a node, the program will select a blank condition rather than a false one.

For an example, see the \"sample_conditional_todo\" file (by using the \"File > Open Sample\" command)."
},
"format": "HEAD_PARA",
"uid": "f170125aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Copying Formats",
"Text": "Another method for changing data type formatting is to copy the formats from another TreeLine file. This is done with the \"Data > Copy Types from File\" command. All types from the chosen file are copied. Any types in the current file with matching names are overwritten, but types with unique names are retained."
},
"format": "HEAD_PARA",
"uid": "f1701368a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170155ca25a11e7b7c67054d2175f18",
"f1701660a25a11e7b7c67054d2175f18",
"f1701764a25a11e7b7c67054d2175f18",
"f1701868a25a11e7b7c67054d2175f18",
"f170198aa25a11e7b7c67054d2175f18",
"f1701a8ea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Tree Data Operations"
},
"format": "HEADINGS",
"uid": "f170146ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Sorting",
"Text": "The \"Data > Sort Nodes\" command can sort nodes based on either node titles or key fields predefined in the node type configuration. The predefined sort fields can be changed in the \"Field Config\" tab of the Configure Types Dialog. The \"Sort Keys\" button brings up a list of fields that define a sort key sequence.  The fields higher in the sequence have a higher priority.  The direction for each key field can be flipped."
},
"format": "HEAD_PARA",
"uid": "f170155ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Numbering",
"Text": "The \"Data > Update Numbering\" command updates the contents of fields with a special numbering field type. The field's output format defines how the numbers are displayed in the output, including whether individual numbers, outline numbers or a section numbering scheme are shown. See the Numbering Field Type for more information.
\n
\nNote that numbering fields are not shown in the data edit view unless \"Show numbering fields in the Data Edit View\" is checked under \"Tools > General Options > Features Available\". When they are shown in the data edit view, they show up in section numbering style, regardless of the output format."
},
"format": "HEAD_PARA",
"uid": "f1701660a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Find and Replace",
"Text": "The \"Tools > Find and Replace\" command can be used to change the text in several nodes. The search text and replacement text are entered. Searching can be based on any match, full words only, or a Python regular expression. The operation can optionally be restricted to a particular node type and to a particular node field.
\n
\nReplacement using regular expressions is quite powerful. Searching for \".*\" will match all of the text in the field. The replacement string can contain back references that consist of a backslash and a number. The back references get replaced with the corresponding parenthesized group from the match. For example, \"\\2\" will be replaced with the text that matched the second group of parenthesis. The \"\\g<0>\" back-reference can be used to substitute the entire matching string."
},
"format": "HEAD_PARA",
"uid": "f1701764a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Spell Check",
"Text": "There is a spell check command in the \"Tools\" menu. Use of this command requires an external program to be installed (either aspell, ispell or hunspell- see the System Requirements section). If there are any misspelled words in the selected branch, a dialog will allow the word to be ignored, added to the dictionary, replaced with a suggestion or edited. This will spell check the text in all data fields of each node."
},
"format": "HEAD_PARA",
"uid": "f1701868a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Cloned Nodes",
"Text": "Cloned nodes are used to duplicate sections of the tree. Editing their data or child structure in one location changes all locations. When a cloned node is selected, multiple lines are shown in the Breadcrumb view, showing ancestor nodes that have multiple parents. The selected node will appear black (not a link), but its clones can be clicked to select their location in the tree view.
\n
\nCloned nodes are created by copying nodes or branches and then using the special paste clone commands found in the \"Edit\" menu to paste them elsewhere. The clone link can be removed by deleting the nodes or by using the \"Data > Detach Clones\" command to convert them back to regular nodes.
\n
\nCloned nodes can also be created automatically by using the \"Data > Clone All Matched Nodes\" command. This will convert all identical nodes in the tree structure into cloned nodes.
\n
\nFor an example of cloned nodes with multiple parents, see the \"sample_genealogy\" file (by using the \"File > Open Sample\" command)."
},
"format": "HEAD_PARA",
"uid": "f170198aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Category-Based Arrangement",
"Text": "The \"Data\" menu contains commands for arranging and flattening the data by category. These methods are used to automatically add and remove levels of nodes below the current node in the tree.
\n
\nThe \"Add Category Level\" command allows you to select one or more of the fields that the child nodes have in common. These fields are used to create new parent nodes for the children, grouping them by common categories. For example, in a list of books, picking the \"author_first_name\" and \"author_last_name\" fields will result in a tree with the books under new nodes for each unique author.
\n
\nThe \"Flatten by Category\" command is almost the opposite of \"Add Category Level\". It eliminates any descendant nodes with children, transferring their data fields to their children. It will rename fields instead of overwriting data with the same field names, but this command is most useful when the children and parents are different types with unique field names.
\n
\nThere is also a \"Swap Category Levels\" command that will swap the child and grandchild nodes beneath a selected node.  A child node with multiple nodes under it will become cloned under each one.  Any existing grandchild clones will become individual nodes with multiple children."
},
"format": "HEAD_PARA",
"uid": "f1701a8ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f1701d90a25a11e7b7c67054d2175f18",
"f1701e8aa25a11e7b7c67054d2175f18",
"f1701f84a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Printing"
},
"format": "HEADINGS",
"uid": "f1701caaa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Print Setup",
"Text": "The dialog for print setup contains four tabs. The first, General Options, includes settings for what part of the tree to print, whether to include lines to child nodes and whether to allow page breaks between a parent an its first child node. It also has place to set the printer queue, to make pagination and print previews more accurate.  The second tab, Page Setup, includes paper size, orientation, margins and columns. The third tab selects the font for printing. The last tab, Header/Footer, defines text and file data meta-fields for inclusion in headers and footers."
},
"format": "HEAD_PARA",
"uid": "f1701d90a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Print Preview",
"Text": "The Print Preview window shows how the printout will look with current print settings.  It can be dragged larger to show more detail, or the zoom settings can be changed.  It also includes buttons for the Print Setup dialog and for printing."
},
"format": "HEAD_PARA",
"uid": "f1701e8aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Print to PDF",
"Text": "This command prompts for a path and file name to export a PDF file.  It uses the current printer settings."
},
"format": "HEAD_PARA",
"uid": "f1701f84a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170216ea25a11e7b7c67054d2175f18",
"f1702272a25a11e7b7c67054d2175f18",
"f170236ca25a11e7b7c67054d2175f18",
"f1702470a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "File Handling"
},
"format": "HEADINGS",
"uid": "f170207ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File Compression",
"Text": "A TreeLine file is in a JSON text format. There are options to compress the files (gzip format) to save storage space. Individual files can be set to compressed mode from either \"File > Properties\" or from the file type pull-down in the save-as dialog."
},
"format": "HEAD_PARA",
"uid": "f170216ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File Encryption",
"Text": "There is a file encryption option to password protect TreeLine files. Individual files can be set to encrypted mode from either \"File > Properties\" or from the file type pull-down in the save-as dialog. The encryption uses an SHA hash function as a stream cipher - it should be fairly secure."
},
"format": "HEAD_PARA",
"uid": "f1702272a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Auto-Save",
"Text": "An auto-save feature can store unsaved files with a \"~\" appended to the file name. The backup files are automatically removed when the file is saved or TreeLine exits cleanly. The auto-save time interval is set in the general options. Setting the interval to zero disables this feature."
},
"format": "HEAD_PARA",
"uid": "f170236ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Saved Tree States",
"Text": "When opening a recently used file, TreeLine will restore the states of open and selected nodes. This information is stored in the user's TreeLine configuration files. If desired, this feature can be disabled with a general option."
},
"format": "HEAD_PARA",
"uid": "f1702470a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170265aa25a11e7b7c67054d2175f18",
"f170275ea25a11e7b7c67054d2175f18",
"f1702b46a25a11e7b7c67054d2175f18",
"95547c38b97411e7a42a3417ebd53aeb",
"f1702858a25a11e7b7c67054d2175f18",
"f1702952a25a11e7b7c67054d2175f18",
"f1702a42a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "File Import"
},
"format": "HEADINGS",
"uid": "f170256aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "General Information",
"Text": "A TreeLine file is in a specific JSON text format. Other types of files can be imported using the \"File > Import\" command, which will show a dialog box where the type of import can be selected. Alternatively, using the \"File > Open\" command with a non-TreeLine file will also show this dialog."
},
"format": "HEAD_PARA",
"uid": "f170265aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Text Import",
"Text": "Several different text formats can be selected for import. Tab indented text creates a node title from each line in the file, structured based on the number of tabs before each line.
\n
\nThe comma-delimited (CSV) and the tab delimited text tables use the first line as a header row to create field names, then each additional row becomes a node with field data taken from each column. The CSV import with level numbers creates a tree structure from level numbers in the first column that are incremented to show child relationships.
\n
\nThe plain text, one node per line import creates a flat tree of node titles. 
\n
\nFinally, the plain text paragraph import creates long text nodes from text separated by blank lines."
},
"format": "HEAD_PARA",
"uid": "f170275ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Treepad Import",
"Text": "Files from the Treepad shareware program can be imported. Only Treepad text nodes are supported."
},
"format": "HEAD_PARA",
"uid": "f1702858a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "XML Import",
"Text": "TreeLine will import and export generic XML files. These routines do not have much intelligence - each XML element becomes a node and each XML attribute becomes a field. XML text content become fields named \"Element_Data\". This lets TreeLine function as a crude XML editor."
},
"format": "HEAD_PARA",
"uid": "f1702952a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "ODF Import",
"Text": "TreeLine will import Open Document Format (ODF) text documents, from applications such as Apache OpenOffice and LibreOffice. The node structure is formed based on the heading styles assigned in the document. Any text under each heading is assigned to that heading's node. The import filter is intended for simple text outlines only. No formatting is maintained, and objects such as tables and pictures are not imported."
},
"format": "HEAD_PARA",
"uid": "f1702a42a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Bookmarks Import",
"Text": "TreeLine will import bookmark files in both the Mozilla HTML format (Firefox browser) and the XBEL format (Konqueror, Galeon and Elinks browsers). Each bookmark becomes a node with a name and a link field. Some information in the files, such as visited dates and icon references, is not imported. For an example, see the \"sample_bookmarks\" file (by using the \"File > Open Sample\" command).
\n"
},
"format": "HEAD_PARA",
"uid": "f1702b46a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1702d4ea25a11e7b7c67054d2175f18",
"f1702e52a25a11e7b7c67054d2175f18",
"f1702f60a25a11e7b7c67054d2175f18",
"65289b36b97611e783eb3417ebd53aeb",
"f1703064a25a11e7b7c67054d2175f18",
"f170315ea25a11e7b7c67054d2175f18",
"f1703262a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "File Export"
},
"format": "HEADINGS",
"uid": "f1702c4aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "General Information",
"Text": "Files are exported using the \"File > Export\" command. This will show a dialog box of available export types and options."
},
"format": "HEAD_PARA",
"uid": "f1702d4ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "HTML Export",
"Text": "The HTML export subtypes can export to a single page or to multiple pages. The single page export contains all of the indented output. A navigation pane on the left with links to anchors at node positions is optional.
\n
\nThe multiple HTML pages export has one web page per node. It includes a navigation pane on the left with links to the pages with sibling, parent and aunt/uncle nodes.
\n
\nMultiple HTML data tables export creates a table in each HTML file that contains the data for a set of siblings, as well as links to the parent and child pages.
\n
\nThe Live Tree HTML export uses Javascript and CSS to create an interactive view. Nodes in the tree can be expanded and collapsed, and a separate pane shows the output for all descendants of the selected node. The first form of this export creates separate files that are linked to the existing TreeLine file. These files are intended for use on a web server (browser security usually prevents local access). The HTML file stores the relative path from the TreeLine file to the initial export directory, so this relationship needs to be maintained on the web server. Only the TreeLine file needs to be replaced to update the data (re-export is not required).
\n
\nThe second form of Live Tree export creates a single file (with embedded data) that can be accessed from a local web browser.  It appears the same as the first form on the browser."
},
"format": "HEAD_PARA",
"uid": "f1702e52a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Text Export",
"Text": "Data can be exported to tabbed title text, comma-delimited (CSV) tables and tab-delimited tables. These formats are the same as the corresponding import formats. 
\n
\nThere is also an unformatted text export the dumps all of the output into a text file without preserving the tree structure."
},
"format": "HEAD_PARA",
"uid": "f1702f60a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "XML Export",
"Text": "TreeLine will import and export generic XML files. These routines do not have much intelligence - each node becomes an XML element and each field becomes an XML attribute, except for fields named \"Element_Data\" that become the element's text. This lets TreeLine function as a crude XML editor."
},
"format": "HEAD_PARA",
"uid": "f1703064a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "ODF Export",
"Text": "TreeLine will export an outline to an Open Document Format (ODF) text document, compatible with Apache OpenOffice and LibreOffice. The title of each node is assigned a heading style at the appropriate level. Any other text in the output of each node becomes normal text under the heading. The export filter is intended for simple text outlines only. Any HTML formatting is stripped, and objects such as tables and pictures are not supported."
},
"format": "HEAD_PARA",
"uid": "f170315ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Bookmarks Export",
"Text": "TreeLine will export bookmark files in both the Mozilla HTML format (Firefox browser) and the XBEL format (Konqueror, Galeon and Elinks browsers). TreeLine will look for a link field in each node that becomes the target of the bookmark."
},
"format": "HEAD_PARA",
"uid": "f1703262a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1703442a25a11e7b7c67054d2175f18",
"f1703546a25a11e7b7c67054d2175f18",
"f170364aa25a11e7b7c67054d2175f18",
"f1703744a25a11e7b7c67054d2175f18",
"9ff09734dc9011ea887bac675dac20af",
"f1703848a25a11e7b7c67054d2175f18",
"7e9b3b88c24511e896c7d66a6ab671cb"
],
"data": {
"Name": "Customizations"
},
"format": "HEADINGS",
"uid": "f170335ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Options",
"Text": "TreeLine's behavior can be modified with several settings available in \"Tools > General Options\". Most of these options are covered elsewhere in this document."
},
"format": "HEAD_PARA",
"uid": "f1703442a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Keyboard Shortcuts",
"Text": "Keyboard shortcuts can be customized by using the \"Tools > Set Keyboard Shortcuts\" command. Simply type the new key sequence with the appropriate field selected."
},
"format": "HEAD_PARA",
"uid": "f1703546a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Toolbars",
"Text": "An editor to customize the toolbars is available from \"Tools > Customize Toolbars\". The number of toolbars can be set, and the buttons on each can be defined."
},
"format": "HEAD_PARA",
"uid": "f170364aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Fonts",
"Text": "The default font used in the application  can be set using the \"Tools > Customize Fonts\" menu.  There are also options to specify fonts used in the tree views, the output view and the editor views."
},
"format": "HEAD_PARA",
"uid": "f1703744a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Tree Icons",
"Text": "There is an icons directory in the user configuration directory (\"~/.treeline-x.x/icons\" on Linux, \"Users\\<user>\\AppData\\roaming\\bellz\\treeline-x.x\\icons\" on Windows). Image files (PNG or BMP) placed into this directory are available for use as tree icons."
},
"format": "HEAD_PARA",
"uid": "f1703848a25a11e7b7c67054d2175f18"
},
{
"children": [
"65157f8a9b0c11f091375847ca7850fa",
"414f6662813311f0b43b5847ca7850fa",
"57d4ac00fe7f11edbb2654b2039ee1f3",
"4f1366fa2ca811eda95c54b2039ee1f3",
"b5fe698830e111ebbc097054d2175f18",
"7ffeb66ddc8711ea9a87ac675dac20af",
"194b0533e5d811e9b5fea44cc8e97404",
"db25cd62481e11e989f27054d2175f18",
"800a0971305111e991cda44cc8e97404",
"9c08f39ee80311e8a510a44cc8e97404",
"6610203fd2c111e8b033d66a6ab671cb",
"67e95a5bbbf611e891f7a44cc8e97404",
"e8e10d33a14311e88e24a44cc8e97404",
"4bc47248786711e8a8bfa44cc8e97404",
"95a6e90a333f11e89efed66a6ab671cb",
"6df9a0c5ba3b11e78e7e3417ebd53aeb",
"f1703e7ea25a11e7b7c67054d2175f18",
"f1704752a25a11e7b7c67054d2175f18",
"f170527ea25a11e7b7c67054d2175f18",
"f170652aa25a11e7b7c67054d2175f18",
"f1706be2a25a11e7b7c67054d2175f18",
"f170748ea25a11e7b7c67054d2175f18",
"f1708032a25a11e7b7c67054d2175f18",
"f1708ae6a25a11e7b7c67054d2175f18",
"f170ab34a25a11e7b7c67054d2175f18",
"f170c1aaa25a11e7b7c67054d2175f18",
"f170e900a25a11e7b7c67054d2175f18",
"f170fddca25a11e7b7c67054d2175f18",
"f1710e58a25a11e7b7c67054d2175f18",
"f1711f24a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Revision History"
},
"format": "HEADINGS",
"uid": "f1703d8ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f1703f8ca25a11e7b7c67054d2175f18",
"f170427aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "March 26, 2017 - Release 2.1.2 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f1703e7ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f170407ca25a11e7b7c67054d2175f18",
"f1704176a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Notes"
},
"format": "BULLET_HEADING",
"uid": "f1703f8ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Unstable snapshot",
"Text": "This is an unstable development snapshot of TreeLine. It may contains bugs. Testing and bug reports are appreciated, but the stable release (TreeLine 2.0.x) should probably be used for critical work."
},
"format": "BULLETS",
"uid": "f170407ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "The GUI and documentation translations have not yet been updated."
},
"format": "BULLETS",
"uid": "f1704176a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1704360a25a11e7b7c67054d2175f18",
"f170445aa25a11e7b7c67054d2175f18",
"f1704554a25a11e7b7c67054d2175f18",
"f170464ea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f170427aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "DateTime output",
"Text": "Fix problems formatting DateTime fields in output views."
},
"format": "BULLETS",
"uid": "f1704360a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Internal links",
"Text": "Fix dialog issues with clicking on targets when creating inline internal links."
},
"format": "BULLETS",
"uid": "f170445aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Data view tabbing",
"Text": "Fix a regression that prevented using the tab key to cycle between data edit view items."
},
"format": "BULLETS",
"uid": "f1704554a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Autosave restore",
"Text": "Avoid opening two windows when restoring an auto-saved backup file."
},
"format": "BULLETS",
"uid": "f170464ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f1704842a25a11e7b7c67054d2175f18",
"f1704b30a25a11e7b7c67054d2175f18",
"f1704d1aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "March 12, 2017 - Release 2.1.1 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f1704752a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1704928a25a11e7b7c67054d2175f18",
"f1704a2ca25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Notes"
},
"format": "BULLET_HEADING",
"uid": "f1704842a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Unstable snapshot",
"Text": "This is an unstable development snapshot of TreeLine. It may contains bugs. Testing and bug reports are appreciated, but the stable release (TreeLine 2.0.x) should probably be used for critical work."
},
"format": "BULLETS",
"uid": "f1704928a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "The GUI and documentation translations have not yet been updated."
},
"format": "BULLETS",
"uid": "f1704a2ca25a11e7b7c67054d2175f18"
},
{
"children": [
"f1704c20a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f1704b30a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Windows binary",
"Text": "The Windows binary is now built using Python 3.6 and PyQt 5.8."
},
"format": "BULLETS",
"uid": "f1704c20a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1704f54a25a11e7b7c67054d2175f18",
"f170506ca25a11e7b7c67054d2175f18",
"f1705166a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f1704d1aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Set icon crash",
"Text": "Fix a crash when changing the icon on the Type Config page of the Configure Data Types dialog box."
},
"format": "BULLETS",
"uid": "f1704f54a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Type list issues",
"Text": "Fix inconsistent type selections on the Type List page of the Configure Data Types dialog box."
},
"format": "BULLETS",
"uid": "f170506ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Window placement",
"Text": "Fix issues with restoring the placement of the TreeLine window in some multiple monitor setups."
},
"format": "BULLETS",
"uid": "f1705166a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170536ea25a11e7b7c67054d2175f18",
"f170565ca25a11e7b7c67054d2175f18",
"f170603ea25a11e7b7c67054d2175f18",
"f1706228a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "February 20, 2017 - Release 2.1.0 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f170527ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f170545ea25a11e7b7c67054d2175f18",
"f1705558a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Notes"
},
"format": "BULLET_HEADING",
"uid": "f170536ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Unstable snapshot",
"Text": "This is an unstable development snapshot of TreeLine. It probably contains bugs. Testing and bug reports are appreciated, but the stable release (TreeLine 2.0.x) should probably be used for critical work."
},
"format": "BULLETS",
"uid": "f170545ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "The GUI and documentation translations have not yet been updated."
},
"format": "BULLETS",
"uid": "f1705558a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170574ca25a11e7b7c67054d2175f18",
"f1705850a25a11e7b7c67054d2175f18",
"f1705954a25a11e7b7c67054d2175f18",
"f1705a4ea25a11e7b7c67054d2175f18",
"f1705b48a25a11e7b7c67054d2175f18",
"f1705c4ca25a11e7b7c67054d2175f18",
"f1705d46a25a11e7b7c67054d2175f18",
"f1705e40a25a11e7b7c67054d2175f18",
"f1705f3aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f170565ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Port to Qt5",
"Text": "TreeLine has been ported from the Qt4 library to the Qt5 library. The system requirements have been updated to Python 3.4 or higher, PyQt 5.4 or higher and Qt 5.4 or higher."
},
"format": "BULLETS",
"uid": "f170574ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Cloned nodes",
"Text": "Cloned nodes that can duplicate sections of the tree have been added. Editing their data or child structure in one location changes all locations. They are created by copying nodes and then using the \"Edit->Paste Cloned Node\" command to paste them elsewhere. The clone link can be removed by deleting the nodes or by cutting them and pasting them back using the regular paste command."
},
"format": "BULLETS",
"uid": "f1705850a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "DateTime field",
"Text": "Added a new DateTime field that combines dates and times into a single field that is useful for timestamps. The editor format is a combination of the date and time formats from the general options, separated by a space."
},
"format": "BULLETS",
"uid": "f1705954a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "HTML in choice fields",
"Text": "Added an option to allow HTML tags in Choice, AutoChoice, Combination, AutoCombination and RegularExpression fields. The control is in the Field Config tab of the Configure Data Types dialog. This option is disabled by default.  If enabled, special characters (angled brackets and quotation marks) will need to be escaped to show up in text."
},
"format": "BULLETS",
"uid": "f1705a4ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Saved conditional rules",
"Text": "Saved rules for Conditional Find and Conditional Filter commands are listed directly in the dialog boxes, making them easier to load and save."
},
"format": "BULLETS",
"uid": "f1705b48a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "CSV import/export",
"Text": "Added comma-delimited (CSV) table import and export, similar to existing tab-delimited table import and export. The export only handles data from a single level of child nodes."
},
"format": "BULLETS",
"uid": "f1705c4ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Incremental title search",
"Text": "Added a quick, incremental search of node titles.  By default, it's bound to ctrl+/.  Then, matching titles are found as the search string is typed.  The F3 and shift+F3 keys can be used to go to the next or previous matches, respectively."
},
"format": "BULLETS",
"uid": "f1705d46a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Multiple field selection",
"Text": "Multiple fields can now be selected in the Output page of the Configuration dialog, so several fields can be added to the formats simultaneously."
},
"format": "BULLETS",
"uid": "f1705e40a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Print settings",
"Text": "A pull-down selector for printers has been added to the Print Setup dialog.  This enables TreeLine to verify that the page size and margin settings are supported by the current printer."
},
"format": "BULLETS",
"uid": "f1705f3aa25a11e7b7c67054d2175f18"
},
{
"children": [
"f170612ea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f170603ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "SpacedText Field special characters",
"Text": "The SpacedText Field now allows special HTML characters (angled brackets and quotation marks) without requiring them to be manually escaped."
},
"format": "BULLETS",
"uid": "f170612ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f170630ea25a11e7b7c67054d2175f18",
"f1706426a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f1706228a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Printed page splits",
"Text": "The code that splits content into pages when printing has been improved.  It now handles very long nodes better."
},
"format": "BULLETS",
"uid": "f170630ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Formatted field title edits",
"Text": "When formatted fields (dates, times, etc.) are used in node titles, editing the titles in the tree or in the Title List pane will now work if the edit and output formats are similar."
},
"format": "BULLETS",
"uid": "f1706426a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1706610a25a11e7b7c67054d2175f18",
"f1706804a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "October 3, 2015 - Release 2.0.2 (new stable release)"
},
"format": "HEADINGS",
"uid": "f170652aa25a11e7b7c67054d2175f18"
},
{
"children": [
"f1706700a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f1706610a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Data edit regression",
"Text": "Fixed a major regression in 2.0.1 that broke data editors for most specialized field types (number, math, boolean, choice, etc.)"
},
"format": "BULLETS",
"uid": "f1706700a25a11e7b7c67054d2175f18"
},
{
"children": [
"f17068f4a25a11e7b7c67054d2175f18",
"f17069e4a25a11e7b7c67054d2175f18",
"f1706ae8a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Compatibility Notes"
},
"format": "BULLET_HEADING",
"uid": "f1706804a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File format",
"Text": "There are some file format changes between TreeLine 1.4.x and this version of TreeLine."
},
"format": "BULLETS",
"uid": "f17068f4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File conversion",
"Text": "Older files opened in this version are automatically converted when saved."
},
"format": "BULLETS",
"uid": "f17069e4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File compatibility",
"Text": "Files saved in this version may not be fully compatible with TreeLine 1.4.x."
},
"format": "BULLETS",
"uid": "f1706ae8a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1706cd2a25a11e7b7c67054d2175f18",
"f1706fb6a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "September 26, 2015 - Release 2.0.1 (new stable release)"
},
"format": "HEADINGS",
"uid": "f1706be2a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1706db8a25a11e7b7c67054d2175f18",
"f1706ebca25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f1706cd2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Plugin options",
"Text": "Added methods to the plugin interface that allow general program options to be queried and changed."
},
"format": "BULLETS",
"uid": "f1706db8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Table import errors",
"Text": "Improve text table import error messages by including the line number where the problem is found."
},
"format": "BULLETS",
"uid": "f1706ebca25a11e7b7c67054d2175f18"
},
{
"children": [
"f170709ca25a11e7b7c67054d2175f18",
"f1707196a25a11e7b7c67054d2175f18",
"f1707290a25a11e7b7c67054d2175f18",
"f1707380a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f1706fb6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Data edit undo",
"Text": "Reduce the amount of work that a single undo command removes from editors in the data edit view."
},
"format": "BULLETS",
"uid": "f170709ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Configuration changes",
"Text": "Fixed a bug that prevented setting the unique ID reference field on a newly created data type."
},
"format": "BULLETS",
"uid": "f1707196a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Legacy newline convert",
"Text": "Preserve hard newlines in text fields when converting TreeLine 1.4.x files to this version."
},
"format": "BULLETS",
"uid": "f1707290a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Indent expand status",
"Text": "Fix problems preserving expand/collapse node states when indenting and unindenting nodes."
},
"format": "BULLETS",
"uid": "f1707380a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1707592a25a11e7b7c67054d2175f18",
"f1707c5ea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "May 17, 2015 - Release 2.0.0 (new stable release)"
},
"format": "HEADINGS",
"uid": "f170748ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f1707682a25a11e7b7c67054d2175f18",
"f170777ca25a11e7b7c67054d2175f18",
"f1707876a25a11e7b7c67054d2175f18",
"f1707966a25a11e7b7c67054d2175f18",
"f1707a60a25a11e7b7c67054d2175f18",
"f1707b5aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f1707592a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Treepad import update",
"Text": "Modified the Treepad file import to use SpacedText fields to more closely match Treepad formatting."
},
"format": "BULLETS",
"uid": "f1707682a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Treepad export",
"Text": "An optional plugin was written that can export files to the Treepad text file format."
},
"format": "BULLETS",
"uid": "f170777ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "New icon",
"Text": "The TreeLine icon was replaced with a new one.  Thanks to David Reimer for contributing the artwork."
},
"format": "BULLETS",
"uid": "f1707876a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Translation updates",
"Text": "The German and Portuguese GUI translations were updated."
},
"format": "BULLETS",
"uid": "f1707966a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Sample file updates",
"Text": "Updated the long text sample file to include the SpacedText field type, and added a conditional equation to the math sample file."
},
"format": "BULLETS",
"uid": "f1707a60a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Documentation update",
"Text": "Updated the Math Field section of the documentation."
},
"format": "BULLETS",
"uid": "f1707b5aa25a11e7b7c67054d2175f18"
},
{
"children": [
"f1707d44a25a11e7b7c67054d2175f18",
"f1707e3ea25a11e7b7c67054d2175f18",
"f1707f38a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Compatibility Notes"
},
"format": "BULLET_HEADING",
"uid": "f1707c5ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File format",
"Text": "There are some file format changes between TreeLine 1.4.x and this version of TreeLine."
},
"format": "BULLETS",
"uid": "f1707d44a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File conversion",
"Text": "Older files opened in this version are automatically converted when saved."
},
"format": "BULLETS",
"uid": "f1707e3ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File compatibility",
"Text": "Files saved in this version may not be fully compatible with TreeLine 1.4.x."
},
"format": "BULLETS",
"uid": "f1707f38a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1708118a25a11e7b7c67054d2175f18",
"f17083fca25a11e7b7c67054d2175f18",
"f1708802a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "March 29, 2015 - Release 1.9.7 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f1708032a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1708208a25a11e7b7c67054d2175f18",
"f1708302a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f1708118a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field conditions",
"Text": "Added comparison operators and conditional if statements to math field equations. The operators can be used with a new boolean result type, or as a part of numeric, date, time or text expressions."
},
"format": "BULLETS",
"uid": "f1708208a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field text operations",
"Text": "Text operators were made available in math field equations, and the result type can be set to text. This allows math fields to combine text from other fields, replace sub-strings and change capitalization."
},
"format": "BULLETS",
"uid": "f1708302a25a11e7b7c67054d2175f18"
},
{
"children": [
"f17084eca25a11e7b7c67054d2175f18",
"f17085f0a25a11e7b7c67054d2175f18",
"f17086fea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f17083fca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Saved status bar message",
"Text": "Added a \"file saved\" status bar message."
},
"format": "BULLETS",
"uid": "f17084eca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "German translation",
"Text": "Added a German GUI translation."
},
"format": "BULLETS",
"uid": "f17085f0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Portuguese translation",
"Text": "Updated the Portuguese GUI translation."
},
"format": "BULLETS",
"uid": "f17086fea25a11e7b7c67054d2175f18"
},
{
"children": [
"f17088e8a25a11e7b7c67054d2175f18",
"f17089e2a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f1708802a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Combination editor",
"Text": "Fixed a focus problem that made Combination and AutoCombination field editor pull-downs unusable."
},
"format": "BULLETS",
"uid": "f17088e8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Choice editor",
"Text": "Fixed a focus problem that made the pull-downs in choice and boolean field editors unusable on Linux."
},
"format": "BULLETS",
"uid": "f17089e2a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1708bcca25a11e7b7c67054d2175f18",
"f17097aca25a11e7b7c67054d2175f18",
"f170a2eca25a11e7b7c67054d2175f18"
],
"data": {
"Name": "March 10, 2015 - Release 1.9.6 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f1708ae6a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1708cbca25a11e7b7c67054d2175f18",
"f1708db6a25a11e7b7c67054d2175f18",
"f1708ea6a25a11e7b7c67054d2175f18",
"f1708faaa25a11e7b7c67054d2175f18",
"f17090aea25a11e7b7c67054d2175f18",
"f17091e4a25a11e7b7c67054d2175f18",
"f17092dea25a11e7b7c67054d2175f18",
"f1709644a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f1708bcca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "OneLineText field",
"Text": "Added a new OneLineText field type that restricts the text length to a single line."
},
"format": "BULLETS",
"uid": "f1708cbca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "All Types conditional test",
"Text": "Added an All Types option to the conditional find and filter commands. This allows multiple node types to be found or filtered at the same time. The fields from every type are available for use in conditions. The conditions give a false result for all node types that do not contain that field name."
},
"format": "BULLETS",
"uid": "f1708db6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field dates and times",
"Text": "Added support for date and time calculations using math fields. Math equation result types can be set to numeric, date or time output. Date fields can be subtracted to give the number of days elapsed, and numbers of days can be added to or subtracted from dates, resulting in new dates. Time fields can be subtracted to give the number of seconds elapsed, and numbers of seconds can be added to or subtracted from times, resulting in new times."
},
"format": "BULLETS",
"uid": "f1708ea6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field root references",
"Text": "In math fields, added an equation reference level to reference fields in the root node. This provides a place for \"constant\" field values that can be referenced from any node but only need to be changed in one location."
},
"format": "BULLETS",
"uid": "f1708faaa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Plugin interface",
"Text": "Support was added for plugin extension modules. Most of the interface methods from TreeLine 1.4.x were duplicated to ease porting of old plugins. Of course, old plugins must be ported from Python 2.x to Python 3.x, and there are multi-window implementation differences. New interfaces allow the creation of new field types and the execution of any menu command. Sample plugins are available on the TreeLine download page."
},
"format": "BULLETS",
"uid": "f17090aea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Automatic HTML tags",
"Text": "Added text formatting and link commands for HTML fields that add tags to the HTML content."
},
"format": "BULLETS",
"uid": "f17091e4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Open in folder",
"Text": "An open in folder command was added to external link field editors to open the directory in a file manager."
},
"format": "BULLETS",
"uid": "f17092dea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Select All command",
"Text": "Added the Select All command to global menus with a different default shortcut key (ctrl-L) to avoid conflicts with the add child shortcut."
},
"format": "BULLETS",
"uid": "f1709644a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170989ca25a11e7b7c67054d2175f18",
"f170998ca25a11e7b7c67054d2175f18",
"f1709a7ca25a11e7b7c67054d2175f18",
"f1709b8aa25a11e7b7c67054d2175f18",
"f1709c7aa25a11e7b7c67054d2175f18",
"f1709d6aa25a11e7b7c67054d2175f18",
"f1709e50a25a11e7b7c67054d2175f18",
"f1709f40a25a11e7b7c67054d2175f18",
"f170a026a25a11e7b7c67054d2175f18",
"f170a116a25a11e7b7c67054d2175f18",
"f170a206a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f17097aca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Data edit view focus",
"Text": "Improved the focus handling for data edit view edit boxes. This eliminates the blue outline for boxes in inactive data edit views. It also makes tab-to-focus more predictable, including fully selecting single-line field types when they receive tab focus."
},
"format": "BULLETS",
"uid": "f170989ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Data editor resize",
"Text": "Data edit boxes are now automatically resized when editing is complete and the focus moves to another row."
},
"format": "BULLETS",
"uid": "f170998ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Drag external links",
"Text": "Allow files to be drag & dropped on data edit boxes to create external links."
},
"format": "BULLETS",
"uid": "f1709a7ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Stay-on-top dialogs",
"Text": "Small, non-modal dialogs, such as those for sorting, numbering, finding and filtering, have been set to stay on top, so they won't be obscured by TreeLine windows."
},
"format": "BULLETS",
"uid": "f1709b8aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Opening external links",
"Text": "Made opening associated programs from external file links more consistent, especially in Linux."
},
"format": "BULLETS",
"uid": "f1709c7aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Copy types from file",
"Text": "The copy types from file command now supports encrypted and compressed files."
},
"format": "BULLETS",
"uid": "f1709d6aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Wait cursors",
"Text": "Added wait cursors to TreeLine operations that could be time consuming."
},
"format": "BULLETS",
"uid": "f1709e50a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Context menus",
"Text": "Improved the consistency of context menus and shortcut commands used in edit boxes."
},
"format": "BULLETS",
"uid": "f1709f40a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Portuguese translation",
"Text": "Added a nearly complete Portuguese GUI translation."
},
"format": "BULLETS",
"uid": "f170a026a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Sample file languages",
"Text": "Added support for sample TreeLine files to be provided in alternate languages."
},
"format": "BULLETS",
"uid": "f170a116a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Documentation translation",
"Text": "Prepared the help file for translation into other languages,"
},
"format": "BULLETS",
"uid": "f170a206a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170a3d2a25a11e7b7c67054d2175f18",
"f170a4b8a25a11e7b7c67054d2175f18",
"f170a5a8a25a11e7b7c67054d2175f18",
"f170a698a25a11e7b7c67054d2175f18",
"f170a77ea25a11e7b7c67054d2175f18",
"f170a86ea25a11e7b7c67054d2175f18",
"f170a95ea25a11e7b7c67054d2175f18",
"f170aa44a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f170a2eca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Duplicate unique IDs",
"Text": "Corrupted TreeLine files with the same unique ID assigned to multiple nodes no longer fail to open. The user is warned that unique IDs have been updated, which could break some internal links."
},
"format": "BULLETS",
"uid": "f170a3d2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Conditional field list",
"Text": "Fixed missing fields in the pull-down list in the conditional find and filter dialog boxes when a rule was re-used after a node type change. "
},
"format": "BULLETS",
"uid": "f170a4b8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field missing references",
"Text": "Fixed problems with math fields that reference non-existing fields in parent or child nodes."
},
"format": "BULLETS",
"uid": "f170a5a8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field type updates",
"Text": "Made math fields update properly after node type changes."
},
"format": "BULLETS",
"uid": "f170a698a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Rename bullet/table fields",
"Text": "Fixed inconsistent updates after renaming fields used with bulleted or tabled output."
},
"format": "BULLETS",
"uid": "f170a77ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Copying descendants",
"Text": "Made node copy-paste and drag-and-drop work when the initial selection includes both parent and child nodes. "
},
"format": "BULLETS",
"uid": "f170a86ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Tabbed text import",
"Text": "When importing a tabbed text file with multiple top-level nodes, create a single higher-level node to prevent failure."
},
"format": "BULLETS",
"uid": "f170a95ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Custom toolbar dialog",
"Text": "Fixed the availability of the move up button in the customize toolbar dialog when the second command in the list is selected."
},
"format": "BULLETS",
"uid": "f170aa44a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170ac38a25a11e7b7c67054d2175f18",
"f170afeea25a11e7b7c67054d2175f18",
"f170b836a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "December 31, 2014 - Release 1.9.5 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f170ab34a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170ad1ea25a11e7b7c67054d2175f18",
"f170ae0ea25a11e7b7c67054d2175f18",
"f170aefea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f170ac38a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Math field type",
"Text": "Added a math field type that is configured by defining an equation. The field value is automatically calculated based on references to numerical values in other nodes. See the \"sample_math_fields\" file for a usage example."
},
"format": "BULLETS",
"uid": "f170ad1ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Clear formatting",
"Text": "Added a Clear Formatting command that removes font changes and links from data editor text."
},
"format": "BULLETS",
"uid": "f170ae0ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "GUI Translations",
"Text": "Made source code changes necessary to support user interface translations into other languages.  The actual translation work remains to be done."
},
"format": "BULLETS",
"uid": "f170aefea25a11e7b7c67054d2175f18"
},
{
"children": [
"f170b0caa25a11e7b7c67054d2175f18",
"f170b1baa25a11e7b7c67054d2175f18",
"f170b2aaa25a11e7b7c67054d2175f18",
"f170b390a25a11e7b7c67054d2175f18",
"f170b480a25a11e7b7c67054d2175f18",
"f170b570a25a11e7b7c67054d2175f18",
"f170b656a25a11e7b7c67054d2175f18",
"f170b746a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f170afeea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Combination field scroll bars",
"Text": "Add scroll bars to the pull-down editors for combination fields with many entries."
},
"format": "BULLETS",
"uid": "f170b0caa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "External link truncation",
"Text": "Reduce the truncation of external link URLs when generating default display names."
},
"format": "BULLETS",
"uid": "f170b1baa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "File newlines",
"Text": "Use Unix-style newlines for saved TreeLine files to keep files consistent across platforms."
},
"format": "BULLETS",
"uid": "f170b2aaa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "HTML panes",
"Text": "Update the CSS code in exported HTML with navigation panes to improve the appearance in some browsers."
},
"format": "BULLETS",
"uid": "f170b390a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Undo optimization",
"Text": "Optimize some undo information to reduce the amount of data in memory."
},
"format": "BULLETS",
"uid": "f170b480a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Move sample files",
"Text": "Move sample files into a separate directory to avoid future translation conflicts."
},
"format": "BULLETS",
"uid": "f170b570a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Installer clarification",
"Text": "Clarify a Linux installer error message when checking for the Python 3 version of PyQt."
},
"format": "BULLETS",
"uid": "f170b656a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Include MSVC files",
"Text": "Include MSVCR DLL files in the Windows installer."
},
"format": "BULLETS",
"uid": "f170b746a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170b91ca25a11e7b7c67054d2175f18",
"f170ba0ca25a11e7b7c67054d2175f18",
"f170baf2a25a11e7b7c67054d2175f18",
"f170bbeca25a11e7b7c67054d2175f18",
"f170bcf0a25a11e7b7c67054d2175f18",
"f170bde0a25a11e7b7c67054d2175f18",
"f170bed0a25a11e7b7c67054d2175f18",
"f170bfc0a25a11e7b7c67054d2175f18",
"f170c0a6a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f170b836a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Applying config dialog settings",
"Text": "Fix problems applying multiple configuration changes while the Configure Data Types dialog box remains open."
},
"format": "BULLETS",
"uid": "f170b91ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Title list line split",
"Text": "In the Title List editor, splitting a title into two lines now creates a new node without losing the children and parameters of the original node."
},
"format": "BULLETS",
"uid": "f170ba0ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Title list undo",
"Text": "Fix the undo command in the Title List View so that deleted lines/nodes are properly restored. "
},
"format": "BULLETS",
"uid": "f170baf2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Sorting by fields",
"Text": "When sorting nodes by fields, properly handle a reverse direction."
},
"format": "BULLETS",
"uid": "f170bbeca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Find and replace",
"Text": "Fix problems with the find and replace command when a particular node type is specified."
},
"format": "BULLETS",
"uid": "f170bcf0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Conditional types",
"Text": "Fix problems defining conditional types from the Configure Data Types dialog box."
},
"format": "BULLETS",
"uid": "f170bde0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Apply font sizes",
"Text": "Correctly apply font size formatting to selections with mixed font sizes."
},
"format": "BULLETS",
"uid": "f170bed0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Editor height",
"Text": "Fix the height of long text field editors with customized data editor fonts."
},
"format": "BULLETS",
"uid": "f170bfc0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Base 64 image export",
"Text": "Fix HTML export of Base 64 images."
},
"format": "BULLETS",
"uid": "f170c0a6a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170c286a25a11e7b7c67054d2175f18",
"f170e068a25a11e7b7c67054d2175f18",
"f170e46ea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "March 8, 2014 - Release 1.9.4 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f170c1aaa25a11e7b7c67054d2175f18"
},
{
"children": [
"f170d8d4a25a11e7b7c67054d2175f18",
"f170d9d8a25a11e7b7c67054d2175f18",
"f170dac8a25a11e7b7c67054d2175f18",
"f170dbb8a25a11e7b7c67054d2175f18",
"f170dca8a25a11e7b7c67054d2175f18",
"f170dd98a25a11e7b7c67054d2175f18",
"f170de88a25a11e7b7c67054d2175f18",
"f170df6ea25a11e7b7c67054d2175f18"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f170c286a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Documentation",
"Text": "Created new documentation, including a TreeLine file with details and a text file with basic usage instructions. Both are accessible from the help menu."
},
"format": "BULLETS",
"uid": "f170d8d4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Font settings",
"Text": "Added customizing of default fonts used in the tree, output and editor views."
},
"format": "BULLETS",
"uid": "f170d9d8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Spaced text field",
"Text": "Added a new SpacedText field type that holds plain text and preserves all spacing."
},
"format": "BULLETS",
"uid": "f170dac8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Combination editor",
"Text": "Combination and auto combination field types now use a simpler checkbox style pull-down editor."
},
"format": "BULLETS",
"uid": "f170dbb8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Autosave option",
"Text": "An autosave option was added."
},
"format": "BULLETS",
"uid": "f170dca8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Unique ID output",
"Text": "A unique ID reference field was added to the file info fields to allow node unique IDs to be included in output formats."
},
"format": "BULLETS",
"uid": "f170dd98a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Paste plain text",
"Text": "A plain text paste command was added to paste non-formatted text to data editors."
},
"format": "BULLETS",
"uid": "f170de88a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Indent option",
"Text": "Added an option to set the child indent offset amount."
},
"format": "BULLETS",
"uid": "f170df6ea25a11e7b7c67054d2175f18"
},
{
"children": [
"f170e162a25a11e7b7c67054d2175f18",
"f170e252a25a11e7b7c67054d2175f18",
"f170e36aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f170e068a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Print preview size",
"Text": "The last size and position of the print preview window are remembered and restored."
},
"format": "BULLETS",
"uid": "f170e162a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Page breaks in nodes",
"Text": "When printing, nodes with long text content are split between pages."
},
"format": "BULLETS",
"uid": "f170e252a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Export relative links",
"Text": "In multiple page HTML exports, relative links in the content are adjusted based on the directory depth."
},
"format": "BULLETS",
"uid": "f170e36aa25a11e7b7c67054d2175f18"
},
{
"children": [
"f170e54aa25a11e7b7c67054d2175f18",
"f170e63aa25a11e7b7c67054d2175f18",
"f170e720a25a11e7b7c67054d2175f18",
"f170e810a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f170e46ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Blank nodes",
"Text": "Fixed problems outputting completely blank nodes."
},
"format": "BULLETS",
"uid": "f170e54aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Conditional rules",
"Text": "Problems with the contains and true/false conditional rules were fixed."
},
"format": "BULLETS",
"uid": "f170e63aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Link dialogs",
"Text": "Fixed issues displaying several editor link dialogs in quick succession."
},
"format": "BULLETS",
"uid": "f170e720a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Output config cursor",
"Text": "In the configure data types dialog, the output format cursor no longer moves when switching to other field references."
},
"format": "BULLETS",
"uid": "f170e810a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170e9dca25a11e7b7c67054d2175f18",
"f170f12aa25a11e7b7c67054d2175f18",
"f170f846a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "January 19, 2014 - Release 1.9.3 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f170e900a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170eac2a25a11e7b7c67054d2175f18",
"f170eba8a25a11e7b7c67054d2175f18",
"f170ec8ea25a11e7b7c67054d2175f18",
"f170ed74a25a11e7b7c67054d2175f18",
"f170ee5aa25a11e7b7c67054d2175f18",
"f170ef4aa25a11e7b7c67054d2175f18",
"f170f030a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f170e9dca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Keyboard shortcuts",
"Text": "Added controls in the Tools menu for customizing TreeLine's keyboard shortcuts."
},
"format": "BULLETS",
"uid": "f170eac2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Toolbars",
"Text": "Controls for customizing TreeLine's toolbar buttons were added to the Tools menu."
},
"format": "BULLETS",
"uid": "f170eba8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Conditional search",
"Text": "New dialogs were created for conditional finding and filtering of nodes. Specific conditions can be applied to individual types and fields, and the conditions can be saved."
},
"format": "BULLETS",
"uid": "f170ec8ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Find and replace",
"Text": "Find and replace functionality was added to search and change nodes' text data. The search can be limited to specific types and fields."
},
"format": "BULLETS",
"uid": "f170ed74a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Table output",
"Text": "A new option for output data in tables was added to the Type Config pane of the Configure Data Types dialog. Each line of the output format becomes a column. Any text at the start of the format line that is followed by a colon becomes a table heading."
},
"format": "BULLETS",
"uid": "f170ee5aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Bullet output",
"Text": "An option to add bullets to the output of child nodes was added to the Type Config pane of the Configure Data Types dialog."
},
"format": "BULLETS",
"uid": "f170ef4aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Toggle selections",
"Text": "Added View > Previous Selection and Next Selection commands to step through the node selection history."
},
"format": "BULLETS",
"uid": "f170f030a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170f210a25a11e7b7c67054d2175f18",
"f170f2f6a25a11e7b7c67054d2175f18",
"f170f418a25a11e7b7c67054d2175f18",
"f170f4fea25a11e7b7c67054d2175f18",
"f170f5e4a25a11e7b7c67054d2175f18",
"f170f6d4a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f170f12aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Drop to reorder",
"Text": "Nodes can now be reordered by dragging and dropping them between sibling nodes."
},
"format": "BULLETS",
"uid": "f170f210a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Date entry formats",
"Text": "The keyboard entry of dates and times into fields was made more flexible by allowing entries such as 4-digit years that don't exactly match the entry format."
},
"format": "BULLETS",
"uid": "f170f2f6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Default link names",
"Text": "Any text selection is now used as the default name for links inserted into text fields."
},
"format": "BULLETS",
"uid": "f170f418a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Anchor links",
"Text": "Links to local named anchors in a node's HTML text content now work if they don't conflict with any node unique IDs."
},
"format": "BULLETS",
"uid": "f170f4fea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Line spacing",
"Text": "Line spacing in output views was made more consistent."
},
"format": "BULLETS",
"uid": "f170f5e4a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Saved states",
"Text": "Improved the efficiency of restoring node open/close states when opening files."
},
"format": "BULLETS",
"uid": "f170f6d4a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170f936a25a11e7b7c67054d2175f18",
"f170fa1ca25a11e7b7c67054d2175f18",
"f170fb0ca25a11e7b7c67054d2175f18",
"f170fbf2a25a11e7b7c67054d2175f18",
"f170fce2a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f170f846a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Paste font sizes",
"Text": "Errors when pasting text with varying font sizes into data editors were fixed."
},
"format": "BULLETS",
"uid": "f170f936a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Conditional data types",
"Text": "Various issues with conditional data types were fixed, including problems with pasting conditional nodes and prompt updating when the types change."
},
"format": "BULLETS",
"uid": "f170fa1ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Drag undo",
"Text": "Problems with undoing the dragging and dropping of a node were fixed."
},
"format": "BULLETS",
"uid": "f170fb0ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Expand branches",
"Text": "Fix the extremely slow operation of the View > Expand Full Branch and Collapse Full Branch commands."
},
"format": "BULLETS",
"uid": "f170fbf2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Printed lines",
"Text": "Fix improperly placed branch lines in printed output."
},
"format": "BULLETS",
"uid": "f170fce2a25a11e7b7c67054d2175f18"
},
{
"children": [
"f170fec2a25a11e7b7c67054d2175f18",
"f171053ea25a11e7b7c67054d2175f18",
"f17108e0a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "October 22, 2013 - Release 1.9.2 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f170fddca25a11e7b7c67054d2175f18"
},
{
"children": [
"f170ffa8a25a11e7b7c67054d2175f18",
"f171008ea25a11e7b7c67054d2175f18",
"f171017ea25a11e7b7c67054d2175f18",
"f1710264a25a11e7b7c67054d2175f18",
"f171034aa25a11e7b7c67054d2175f18",
"f1710430a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f170fec2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Spell check",
"Text": "Added a spell check tool. This requires either aspell, ispell or hunspell to be installed."
},
"format": "BULLETS",
"uid": "f170ffa8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Numbering field type",
"Text": "Included a node numbering field type with several formatting options. An update numbering command fills in the sequence."
},
"format": "BULLETS",
"uid": "f171008ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Add category level",
"Text": "Added a command to add a category level based on a subset of data fields."
},
"format": "BULLETS",
"uid": "f171017ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Flatten by category",
"Text": "Added a flatten by category command to combine parent fields into child nodes."
},
"format": "BULLETS",
"uid": "f1710264a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Flatten by link",
"Text": "A new flatten by link command flattens the structure and provides internal links to the former parent nodes."
},
"format": "BULLETS",
"uid": "f171034aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Arrange by link",
"Text": "An arrange by link command restores the structure based on parent internal links."
},
"format": "BULLETS",
"uid": "f1710430a25a11e7b7c67054d2175f18"
},
{
"children": [
"f171061aa25a11e7b7c67054d2175f18",
"f171070aa25a11e7b7c67054d2175f18",
"f17107f0a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f171053ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "URL drag-and-drop",
"Text": "Allow file URL drag-and-drop on active external link data edit widgets."
},
"format": "BULLETS",
"uid": "f171061aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Share directory",
"Text": "Change the Linux installer to use the 'share' directory in place of 'lib' for python files."
},
"format": "BULLETS",
"uid": "f171070aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Windows binary",
"Text": "Update the Windows binary to use version 3.3 of Python."
},
"format": "BULLETS",
"uid": "f17107f0a25a11e7b7c67054d2175f18"
},
{
"children": [
"f17109bca25a11e7b7c67054d2175f18",
"f1710aa2a25a11e7b7c67054d2175f18",
"f1710b88a25a11e7b7c67054d2175f18",
"f1710c78a25a11e7b7c67054d2175f18",
"f1710d68a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f17108e0a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Output line sequence",
"Text": "Fix out of sequence output lines when output formats are longer than ten lines."
},
"format": "BULLETS",
"uid": "f17109bca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Node indenting",
"Text": "Fix problems with unique IDs and internal links when indenting and unindenting nodes."
},
"format": "BULLETS",
"uid": "f1710aa2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Widget focus problems",
"Text": "Avoid widget focus problems when editing data on conditional types."
},
"format": "BULLETS",
"uid": "f1710b88a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Format cursor position",
"Text": "Maintain the output format cursor position when changing fields in the configure dialog."
},
"format": "BULLETS",
"uid": "f1710c78a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "XML import",
"Text": "Fix importing of generic XML documents that have nodes with no data."
},
"format": "BULLETS",
"uid": "f1710d68a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1710f48a25a11e7b7c67054d2175f18",
"f17118a8a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "May 2, 2013 - Release 1.9.1 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f1710e58a25a11e7b7c67054d2175f18"
},
{
"children": [
"f171102ea25a11e7b7c67054d2175f18",
"f171111ea25a11e7b7c67054d2175f18",
"f171120ea25a11e7b7c67054d2175f18",
"f17112fea25a11e7b7c67054d2175f18",
"f17113eea25a11e7b7c67054d2175f18",
"f17114dea25a11e7b7c67054d2175f18",
"f17115d8a25a11e7b7c67054d2175f18",
"f17116c8a25a11e7b7c67054d2175f18",
"f17117b8a25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "f1710f48a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Compression and encryption",
"Text": "Added TreeLine file compression and file encryption, controlled from a File > Properties dialog box."
},
"format": "BULLETS",
"uid": "f171102ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Restore tree states",
"Text": "Tree node open/close states are restored for recent files."
},
"format": "BULLETS",
"uid": "f171111ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Derived data types",
"Text": "Added derived data types that keep the field list of their generic type."
},
"format": "BULLETS",
"uid": "f171120ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Conditional type setting",
"Text": "Added conditional type setting that changes icons or output format based on field contents."
},
"format": "BULLETS",
"uid": "f17112fea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Other field references",
"Text": "Other field references (file info, ancestors, children) can be used in node output formats and in print headers & footers."
},
"format": "BULLETS",
"uid": "f17113eea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "HTML file export",
"Text": "Added an HTML file export to a single file with a navigation pane on the side."
},
"format": "BULLETS",
"uid": "f17114dea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Embedded blank lines",
"Text": "Allow embedded blank lines in non-HTML node output formats."
},
"format": "BULLETS",
"uid": "f17115d8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Separator config option",
"Text": "Added an output separator config option for combination fields and child references."
},
"format": "BULLETS",
"uid": "f17116c8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "First day of week option",
"Text": "Add an option to set the first day of the week for calendar widgets."
},
"format": "BULLETS",
"uid": "f17117b8a25a11e7b7c67054d2175f18"
},
{
"children": [
"f1711998a25a11e7b7c67054d2175f18",
"f1711a88a25a11e7b7c67054d2175f18",
"f1711b6ea25a11e7b7c67054d2175f18",
"f1711c54a25a11e7b7c67054d2175f18",
"f1711d44a25a11e7b7c67054d2175f18",
"f1711e2aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Bug Fixes"
},
"format": "BULLET_HEADING",
"uid": "f17118a8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Drag multiple nodes",
"Text": "Fixed problems with pasting or dragging multiple nodes."
},
"format": "BULLETS",
"uid": "f1711998a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Remove fields from multi-line output formats",
"Text": "Made removing fields from multi-line output formats work properly."
},
"format": "BULLETS",
"uid": "f1711a88a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Prevent duplicate unique IDs",
"Text": "Prevent duplicate unique IDs from being created after undoing the deletion of a branch."
},
"format": "BULLETS",
"uid": "f1711b6ea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Fixed non-text nodes sorting",
"Text": "Fixed node sorting of non-text nodes (numbers, dates, times, etc.)"
},
"format": "BULLETS",
"uid": "f1711c54a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Calendar widgets",
"Text": "Avoid placing calendar widgets partially off screen if near the bottom."
},
"format": "BULLETS",
"uid": "f1711d44a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Automatic cell height",
"Text": "Limit the automatic height increases for text edit cells to avoid confusing double scroll bars."
},
"format": "BULLETS",
"uid": "f1711e2aa25a11e7b7c67054d2175f18"
},
{
"children": [
"f171200aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "February 6, 2013 - Release 1.9.0 (unstable development snapshot)"
},
"format": "HEADINGS",
"uid": "f1711f24a25a11e7b7c67054d2175f18"
},
{
"children": [
"f17120e6a25a11e7b7c67054d2175f18",
"f17121d6a25a11e7b7c67054d2175f18",
"f17122c6a25a11e7b7c67054d2175f18",
"f17123aca25a11e7b7c67054d2175f18",
"f171249ca25a11e7b7c67054d2175f18",
"f171258ca25a11e7b7c67054d2175f18",
"f1712690a25a11e7b7c67054d2175f18",
"f1712776a25a11e7b7c67054d2175f18",
"f1712866a25a11e7b7c67054d2175f18",
"f1712960a25a11e7b7c67054d2175f18",
"f1712a46a25a11e7b7c67054d2175f18",
"f1712b36a25a11e7b7c67054d2175f18",
"f1712c1ca25a11e7b7c67054d2175f18",
"f1712d02a25a11e7b7c67054d2175f18",
"f1712df2a25a11e7b7c67054d2175f18",
"f1712ed8a25a11e7b7c67054d2175f18",
"f1712fbea25a11e7b7c67054d2175f18",
"f1713194a25a11e7b7c67054d2175f18",
"f1713284a25a11e7b7c67054d2175f18",
"f171336aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f171200aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Full Python 3 rewrite",
"Text": "TreeLine has been fully rewritten using Python 3."
},
"format": "BULLETS",
"uid": "f17120e6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Direct model-view and ElementTree",
"Text": "Improved performance due to direct use of model-view classes for views and ElementTree for input/output."
},
"format": "BULLETS",
"uid": "f17121d6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Table based data editor pane",
"Text": "A table based data editor pane (much faster)."
},
"format": "BULLETS",
"uid": "f17122c6a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "WYSIWYG data editor view.",
"Text": "WYSIWYG formatting in the data editor view."
},
"format": "BULLETS",
"uid": "f17123aca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Real-time window updates ",
"Text": "Real-time updates of the same file shown in multiple windows."
},
"format": "BULLETS",
"uid": "f171249ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Improved printing",
"Text": "Improved printing and print preview performance."
},
"format": "BULLETS",
"uid": "f171258ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Saves print options",
"Text": "Saves print options with the TreeLine file."
},
"format": "BULLETS",
"uid": "f1712690a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Built-in PDF",
"Text": "Built-in print to PDF function."
},
"format": "BULLETS",
"uid": "f1712776a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Searching options.",
"Text": "More searching options."
},
"format": "BULLETS",
"uid": "f1712866a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Filtering command",
"Text": "A filtering command shows matches in a simple list."
},
"format": "BULLETS",
"uid": "f1712960a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Saved sorting parameters",
"Text": "Sorting parameters can be saved with each data type."
},
"format": "BULLETS",
"uid": "f1712a46a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Basic text field type",
"Text": "The basic text field type allows formatting, preserves line breaks and allows HTML restricted characters."
},
"format": "BULLETS",
"uid": "f1712b36a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Calendar widget",
"Text": "A calendar widget can be used for editing date fields."
},
"format": "BULLETS",
"uid": "f1712c1ca25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Easy internal links",
"Text": "Internal link fields and inline internal links are easier to use."
},
"format": "BULLETS",
"uid": "f1712d02a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Unified external links",
"Text": "An external link type supports http, https, file and mailto protocols."
},
"format": "BULLETS",
"uid": "f1712df2a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Support relative paths",
"Text": "Relative paths are supported for external links and pictures."
},
"format": "BULLETS",
"uid": "f1712ed8a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Regular expression field type",
"Text": "A regular expression field type can match patterns (phone numbers, email addresses, etc.)"
},
"format": "BULLETS",
"uid": "f1712fbea25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Node IDs automatically generated",
"Text": "Unique node IDs are automatically generated and updated."
},
"format": "BULLETS",
"uid": "f1713194a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "New windows installer",
"Text": "A new windows installer allows a single-user, non-administrator install."
},
"format": "BULLETS",
"uid": "f1713284a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Portable installs",
"Text": "Includes better support for portable installs."
},
"format": "BULLETS",
"uid": "f171336aa25a11e7b7c67054d2175f18"
},
{
"children": [
"f171354aa25a11e7b7c67054d2175f18",
"f1713644a25a11e7b7c67054d2175f18",
"f171372aa25a11e7b7c67054d2175f18"
],
"data": {
"Name": "Contacts"
},
"format": "HEADINGS",
"uid": "f1713464a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Mailing list",
"Text": "There is a low-volume mailing list for users to discuss anything and everything about TreeLine. This is the place for development discussions (from roadmaps to feature suggestions to beta testing), release announcements, bug reports, and general user discussions (from new uses to tips & tricks to configuration samples).
\n
\nTo subscribe, go to lists.sourceforge.net/lists/listinfo/treeline-users
\n"
},
"format": "HEAD_PARA",
"uid": "f171354aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Email",
"Text": "If you do not wish to subscribe to the mailing list, I can be contacted by email at: doug101 AT bellz DOT org "
},
"format": "HEAD_PARA",
"uid": "f1713644a25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Updates",
"Text": "I welcome any feedback, including reports of any bugs you find. Also, you can periodically check back to treeline.bellz.org for any updates."
},
"format": "HEAD_PARA",
"uid": "f171372aa25a11e7b7c67054d2175f18"
},
{
"children": [],
"data": {
"Name": "Network drive issues",
"Text": "Work around bugs when using files located on some types of Windows network drives."
},
"format": "BULLETS",
"uid": "f2a0c0a1dc8d11ea8921ac675dac20af"
},
{
"children": [],
"data": {
"Name": "Error handling",
"Text": "Error handling has been improved.  For most errors, a dialog box is shown with debugging information that can be copied into an email."
},
"format": "BULLETS",
"uid": "f5983b38bb0411e795e13417ebd53aeb"
},
{
"children": [
"42fb4166305a11e99fd7a44cc8e97404",
"014e1392305b11e9ab99a44cc8e97404",
"46f3d0a4305e11e9892fa44cc8e97404",
"f7bbd90a305111e98209a44cc8e97404",
"221ca8f0305911e99f3fa44cc8e97404",
"2c9ba0c832ed11e9bf7f7054d2175f18",
"2d4430dc305711e9a33aa44cc8e97404",
"1b73aaf4305811e98bb7a44cc8e97404"
],
"data": {
"Name": "New Features"
},
"format": "BULLET_HEADING",
"uid": "f7bbd909305111e9be43a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "Regenerate references command",
"Text": "A new Regenerate References command was added to the Data menu. It forces updates to all conditional types and math fields.  It should only be necessary for comparisons to current dates/times or for externally modified data."
},
"format": "BULLETS",
"uid": "f7bbd90a305111e98209a44cc8e97404"
},
{
"children": [],
"data": {
"Name": "XML export",
"Text": "Fixed problems with generic XML export from multiple root nodes."
},
"format": "BULLETS",
"uid": "f817e5b6334a11e89349d66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Number formatting",
"Text": "Removed deprecated string escapes used when formatting numbers."
},
"format": "BULLETS",
"uid": "f8ed5904813411f0b43b5847ca7850fa"
},
{
"children": [],
"data": {
"Name": "Spanish translation",
"Text": "Added a Spanish GUI translation (thanks to Diego)."
},
"format": "BULLETS",
"uid": "f966db0cc23f11e8b80fd66a6ab671cb"
},
{
"children": [],
"data": {
"Name": "Printing empty branches",
"Text": "Fix an error caused by attempting to print an empty branch."
},
"format": "BULLETS",
"uid": "fcc1b718e5df11e9a7f9a44cc8e97404"
},
{
"children": [
"6a6067d4482011e989f27054d2175f18",
"b398d8ee482211e989f27054d2175f18",
"ff3f7da6481e11e989f27054d2175f18"
],
"data": {
"Name": "Updates"
},
"format": "BULLET_HEADING",
"uid": "ff3f7c98481e11e989f27054d2175f18"
},
{
"children": [],
"data": {
"Name": "Translations",
"Text": "Updated German and Spanish GUI translations (thanks to Maria Seliger and Diego)."
},
"format": "BULLETS",
"uid": "ff3f7da6481e11e989f27054d2175f18"
}
],
"properties": {
"tlversion": "3.2.1",
"topnodes": [
"f16f7d90a25a11e7b7c67054d2175f18"
]
}
}