Skip to content
TreeSheets : Free Form Data Organizer (see
C++ C HTML Objective-C NSIS CMake Batchfile
Branch: master
Clone or download

Latest commit

jn64 Update .desktop file (#168)
* Change GenericName in .desktop file

GenericName should not be the application name, e.g. generic name "Web Browser" for application "Firefox"

* Add more categories to .desktop file

According to Desktop Menu Specification 1.0 <>

* Improve keywords in .desktop file

Use lowercase by convention because keywords are not meant for display and searched case-insensitively by clients (e.g. GNOME shell). Remove spaces and redundant values; add more keywords from <>

* Fix typo in .desktop file

* Add example translation in .desktop file

Please excuse my Italian, I've based it on the it/ts.po file. Keys that could benefit from translation are: Name, GenericName, Comment, Keywords

* change GenericName in .desktop file
Latest commit cf03887 May 29, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Added installer creation to github actions CI May 24, 2020
TS Update .desktop file (#168) May 29, 2020
lobster Fixed missing NDEBUG in Release mode Oct 24, 2019
osx Fixed OSX build Jul 31, 2019
src Added support for XDG config layout May 29, 2020
treesheets /DYNAMICBASE:ON May 18, 2020
.clang-format Added .clang-format Apr 9, 2019
.gitignore Updated TreeSheets to always build in 64-bit on Windows Oct 23, 2019
.travis.yml Run AppImage script only for one linux build Dec 10, 2019
CMakeLists.txt Fix src/Makefile and sort list of files in CMakeLists.txt (#132) Aug 23, 2019 Update Windows build instructions to use VS2019 (#167) May 24, 2020
TODO.txt Updated TreeSheets script to latest lobster Jun 15, 2018
TS_installer.nsi Updated installer to target 64-bit install dir. Oct 29, 2019
ZLIB_LICENSE.txt initial commit Jun 13, 2013

Welcome to the source distribution of TreeSheets!

This contains all the files needed to build TreeSheets for various platforms. If instead you just want to USE TreeSheets, you may be better off with the binaries available on

TreeSheets has been licensed under the ZLIB license (see ZLIB_LICENSE.txt).

Build Status

src contains all source code. The code is dense, terse, and with few comments, typical for a codebase that was never intended to be used by more than one person (me). On the positive side, you'll find the code very small and simple, with all functionality easy to find and only in one place (no copy pasting or over-engineering). Enjoy.

TS is the folder that contains all user-facing files, typically the build process results in an executable to be put in the root of this folder, and distributing to users is then a matter of giving them this folder.

TODO.txt is the random notes I kept on ideas of myself and others on what future features could be added.


Note that YOU are responsible to know how to use compilers and C++, the hints below are all the help I will give you:

All Platforms:


  • Make sure your wxWidgets folder sits parallel to the src folder, that way the TreeSheets project will pick it up without further modifications
  • (If from git): Copy include\wx\msw\setup0.h to include\wx\msw\setup.h
  • Inside wxWidgets/build/msw, open wx_vc14.sln with Visual Studio 2019.
  • Select all projects (except the project _custom_build) in the solution explorer, and go to properties:
    • Set configuration to debug, and C/C++ -> Code Generation -> Runtime library to Multithreaded Debug
    • Set configuration to release, and C/C++ -> Code Generation -> Runtime library to Multithreaded
  • Build solution in both x64 Debug and Release (if fails, may have to build again)
  • Close the wxWidgets solution
  • "treesheets" contains the Visual Studio 2019 files for treesheets, open the .sln. If you've done the above correctly, TreeSheets will now compile and pick up the wxWidgets libraries.
  • To distribute, build an installer with TS_installer.nsi (requires


  • Using the version of wxWidgets from
    • Follow the instructions to build there, but add --enable-unicode and --disabled-shared to the configure step.
  • Build with cmake -DCMAKE_BUILD_TYPE=Release . or similar. Note that you must currently use an "in tree" build, since TreeSheets will look for its files relative to the binary.
  • There is also a src/Makefile, this is deprecated.


  • Build wxWidgets as follows (inside the wxWidgets dir):
    • mkdir build_osx
    • cd build_osx
    • ../configure --enable-unicode --enable-optimize=-O2 --disable-shared --without-libtiff --with-osx_cocoa CXXFLAGS="-stdlib=libc++" LDFLAGS="-stdlib=libc++" OBJCXXFLAGS="-stdlib=libc++" --with-macosx-sdk=/Applications/ --with-macosx-version-min=10.7 --disable-mediactrl CC=clang CXX=clang++
    • make -j8
    • sudo make install
  • use the XCode project in osx/TreeSheets to build treesheets. put the resulting .app together with the files from the TS folder in osx/TreeSheetsBeta to distribute. Note to use the "Archive" operation to create a release executable.


I welcome contributions, especially in the form of neatly prepared pull requests. The main thing to keep in mind when contributing is to keep as close as you can to both the format and the spirit of the existing code, even if it goes against the grain of how you program normally. That means not only using the same formatting and naming conventions (which should be easy), but the same non-redundant style of code (no under-engineering, e.g. copy pasting, and no over engineering, e.g. needless abstractions).

Also be economic in terms of features: treesheets tries to accomplish a lot with few features, additional user interface elements (even menu items) have a cost, and features that are only useful for very few people should probably not be in the master branch. Needless to say, performance is important too. When in doubt, ask me :)

Try to keep your pull requests small (don't bundle unrelated changes) and make sure you've done extensive testing before you submit, preferrably on multiple platforms.

You can’t perform that action at this time.