-
-
-
Double-click this file name in your Windows file explorer to run Treebard. First install Python 3.11 and pip install Pillow. Install the SQLite terminal tool. All of which my grannie could do. There's no excuse for not giving yourself the Treebard experience.
-
-
-
This module handles creating new sources, citations, and assertions.
-
-
-
These are file utilities that allow the user to create, copy, rename, and delete family trees.
-
-
-
This module takes care of letting the user choose date display formats, storing and editing dates, and there's a class that populates the Preferences > Dates tab with controls.
-
-
-
Provides the Treebard developer with 1) a printing tool that lets the dev make print statements that include line numbers and descriptive strings, without extra typing, and 2) an easy way to make timestamped copies of any Python file when things are going well, in case the dev should want to roll back to this version.
-
-
-
This is a class that displays controls on the little TabBook where the person image gallery is opened, on the right side of the person tab. The user can record, prioritize, and delete to-do list items.
-
-
-
This module houses the TypesTab class where the user can create his own event types, name types, place types, kin types, etc.
-
-
-
This module creates the conclusions table on the persons tab, which displays the user's conclusions about events and attributes linked to the current person.
-
-
-
This module populates the nuclear families table on the person tab above the conclusions table. This table shows all the current person's partner, parents, adoptive parents, and children, all at once. No clicking around to see who someone was, it all shows at once.
-
-
-
This module creates a dialog which can display images in image galleries linked to a current person, current place or current source.
-
-
-
Functions, constants, and queries used by GEDCOM import and export programs.
-
-
-
This module translates from the UNIGEDS model to the GEDCOM substandard.
-
-
-
This module skims usable data from a GEDCOM file and upgrades it to UNIGEDS' standards, and when that is impossible or makes me cry, it reports the data in an exceptions log.
-
-
-
This module will allow the user to perform simple modifications to images such as resizing, cropping, adding borders and text, or to link text captions to an image for displaying in image galleries.
-
-
-
This module initializes display of specific parts of the Treebard interface.
-
-
-
Adding, deleting, and editing images and other media to the app. Default image options.
-
-
-
These are strings imported to the various modules where error messages are used.
-
-
-
These are strings used to populate the right-click context-sensitive help dialogs.
-
-
-
The unigeds.db which stores the UNIGEDS schema no longer stores any data, it's completely empty, just a collection of table schemas. This new_tree.py module stores the data that Treebard inserts to start a brand new tree from a copy of unigeds.db.
-
-
-
This module contains a class that opens Treebard's notes dialog, where the user can create, delete, link, search and edit notes. In Treebard, any note can be linked to any number of elements instead of the user's having to copy and paste notes that have to be repeated from element to element.
-
-
-
This module includes classes for the main treebard app and can open multiple trees at once.
-
-
-
This tool works on its own but can be opened from within the Treebard GUI. As developer, I use it to generate fictional names, birth dates and death dates when adding people to the tree for testing purposes. This simple tool is the only thing that prevents me from creating tree people with names like "Fardwick Pleabargain Cheesebottom IV".
-
-
-
This module takes care of sorting through a person's various names and appellations as well as letting the user create and delete people while also being able to add and even resize images to persons as they are being added to the tree.
-
-
-
This module lets the user create places and place names. It has a class that populates the new and duplicate places dialog which gives the user a chance to make places with the same name without having them be the same place. Nested places are taken care of, such as "Paris, France" vs. "Paris, Texas" so they are two completely unconfusable different places in every way. Also, Treebard allows multiple different enclosing places--e.g. "United States" and "Republic of Texas"--to be Dallas' parent place without creating two different Dallases.
-
-
-
This module provides redraw functions for the GUI and its main parts so that when the user changes something, the new information will display instantly.
-
-
-
In addition to tracking related people, Treebard lets the user add unrelated people to the database along with the role they played in family events such as "flower girl", "arresting officer" or "neighbor". These folks are treated exactly like anyone else in the tree, which will come in handy when Doris next door turns out to be AUNT Doris.
-
-
-
This class has been used to create a person search dialog and can be modeled to create search tools for other elements also. All columns are sortable by clicking the column header. Currently searching finds any part of any name after the user types three or more characters.
-
-
-
This is a file that is used by CXFreeze to create an .exe from the Treebard code base. I first tried PyInstaller but one person said the resulting .exe didn't work. I switched to CXFreeze because their documentation is less frightening and CXFreeze has a very good reputation. This setup.py tool is a simple Python file that I can edit myself. I got the CXFreeze .exe to work on various computers by adding conditional code to Treebard that creates two sets of paths: one if the main script being run has an .exe extension and one if the script has a .py extension.
-
-
-
This module has a class that's used to create the sources tab, where sources and citations can be created and edited without linking them to anything, so that they will be available when needed. Sources and citations can also be created when needed, in the assertions tab. Repositories can be created as source notes in the sources tab.
-
-
-
SQLite queries are imported from here so the Python code will be more readable. Only queries relating to unigeds.db are kept here.
-
-
-
This module enables the user to change color schemes app-wide instantly without restarting the app, and includes the Colorizer class which displays the color scheme controls in the Preferences > Colors tab. Your favorite color schemes can be made a named theme. You can create your own color schemes in seconds. Another class allows the user to change font family and font size instantly. A preview area lets the user see what the font will look like before applying the font change.
-
-
-
Treebard uses custom widgets that can be detected by sub-class so that color schemes can be instantly changed app-wide without restarting the app. This feature's various reincarnations have landed us in the just-put-it-all-in-the-same-module zone, so this is a big file.
-
-
-
-
-
The tables in this database store data that is used app-wide no matter which tree project is currently open. On the other hand, databases which store information specific to a single family tree always have the extension `.tbd`. Tbard.db is used for data where SQL is useful due to relationships among its data. For app-wide data where simple values have no relationship to each other, config.txt and base.py are used instead of SQL.
-
-
-
This empty database is the official UNIGEDS schema. It is copied when the user makes a new tree, and the copy is given a name suggested by the user with Treebard's `.tbd` extension. The copy of unigeds.db will have a few tables added to it to store data that's specific to the user, the app, or the vendor. The unigeds.db table schemas are meant to be unchanged by the dev-user so that unigeds.db can serve to replace GEDCOM as the tree-sharing standard for forward-looking genieware vendors.
-
-
-
This is a hodge-podge of imaginary characters, some related to each other, some linked to public domain images, and mostly created during development for testing purposes. There was an initial attempt to create a storyline for the first few persons that were input. It's actually a pretty interesting story. There's no connection between the persons depicted in the public domain photos and the fictional people in the sample tree.
-
-
-
-
-
These are the images that the user adds to the tree which can be linked to persons, places, and sources.
-
-
-
These are Treebard's built-in default images which display for persons, places or sources that the user has not linked any images to.
-
-
-
The two-tone icons I've been using on Treebard's icon menu were created by interactivemania. These are the copies I use, as well as the image used on Treebard's splash screen.
-
-
-
These are the public domain tree images that take turns appearing on Treebard's opening dialog when opening the program.
-
-
-
This is the specially-formatted icon that displays the Treebard logo on title bars and browser tabs.
-
-
-
This is the collection of two-tone menubar icons I use in Treebard's main view. The collection is included here in order to comply with interactivemania's licensing requirements.
-
-
-
-
-
This file contains simple key:value pairs which are used by base.py to create a configuration file for appwide values where the features of SQL were found to be overkill since there are no relationships among the various items.
-
-
-
This is the .ged file I've been using during development.
-
-
-
This README file and the Unlicense are the only parts of Treebard that are kept at the Github repo. The rest of the code is right here on this forum and can be downloaded as a .zip or an .exe from https://treebard.com/download.
-
-
-
Treebard is free, open-source, public domain software. You can use this code for any legal purpose without permission, without paying royalties, without restriction and without acknowledging where you stole the code from. You can donate for Treebard's contribution to your project at https://treebard.com/donate. "No corporate empires were harmed in the making of this app."
-
-
-
I've added to this file of instructive examples just about every time I had to look up how to do anything with SQLite. By now I rarely have to look anywhere else for examples of how to use SQLite.
-
-
-
A small collection of help files for developers hoping to use or explore Treebard and UNIGEDS.
-
-
- GEDCOM, a lowest common denominator which software developers have held themselves beholden to since 1984.
- Expert, a cross between a has-been and a big drip.
- Committee, a group of control freaks who will save the world together if they can ever agree on what to name their organization.
- Conspiracy, when two or more people decide to do something together which will have an effect on something. Of course, this never happens.
- Discouragement Fraternity, a fictional army of zombie robots that rises up to prevent any threat to the status quo, at every level of society and at every time in history, primarily by the use of propaganda and ridicule which have mostly replaced former tools such as inquisitions and burnings-at-the-stake.
- Do-it-yourself, an odd notion from the cave days that could save the world but it's not gonna be tried. Related to think for yourself.
Why Github wasn't right for Treebard
Terminology:
Here are the two simple steps needed for using Github or any other version control: 1) become a real programmer or plan on becoming a real programmer, and 2) use Github or some other version control. When you don't know what to do or have a problem, learn more despite the pain as if your livelihood depends on it; it probably does.
Here are the two main reasons that the Treebard project exists: 1) to show that a genealogist who has no interest in becoming a real programmer can still write his own genealogy software, and 2) to demonstrate features of GUI and data storage for genieware which are better than what's offered by the software that's already available.
Version control is absolutely essential to teams of real programmers working together on a project. Before there was version control, there still had to be some home-grown system of version control, and these systems were klunky and unmanageable for teams. Github and Friends provide a klunky and unmanageable system for real programmers which becomes less klunky and unmanageable, the more you happen to be a real programmer.
The very purpose of Treebard is to raise the bar for genieware from the currently low setting that could possibly be blamed on 1) developers' rush to put out a product, and 2) the reliance on a text file called GEDCOM for data transfer among apps, instead of a universal relational database structure being used by all developers.
Here at Treebard University we don't feel that standards committees are going to really replace GEDCOM with something a lot better. The larger the committee and the better connected its members are in the 'genealogy community', the less likely that there's any hope that anything of substance will come out of it except tweaklets. The little changes that committees of well-meaning perfectionists are actually able to agree on serve mainly to preserve the status quo and uphold whatever flawed framework got there first, because the larger and more important the committee, the more careful the committee has to be to not step on anybody's toes. The only conspiracy involved in this process of changing as little as possible as slowly as possible is human nature. And because "someone's working on this problem", the very existence of the committees tends to keep concerned individuals from trying to solve the problem themselves.
And then there's the problem of how monoculture and monopolistic concerns are taking over the internet. You should go to a rural village in a third world country and try connecting to any website that has to connect to all kinds of google fonts and statistics collection sites before actually showing you what you came to see on the website. Good luck with that unless you have a good antenna on top of a very tall bamboo pole. Let's not make a list of how many genealogy sites have been bought up by McGenealogy.com. We must not mention these things. We don't want to talk about how Github and VS Code are owned by convicted monopolizer Microsoft. We don't want to discuss how ubiquitous Chrome and Chromium have become, how hard it is for anyone to compete with YouTube, and under no circumstances do we want to even allude to all the censorship and blacklisting that has become such an everyday, accepted feature of the new corporate internet.
So to simply answer the question of why I'm not keeping my code at Gitbub any more, or why I don't have a Facebook link (or a Facebook account...), or tracking cookies on this website, or any other form of tracking on this website... well, the answer is simple.
I don't want to.
