TreeSheets Changelog

What's new in TreeSheets Apr 28 2024

Apr 29, 2024
  • Update version of checkout action (#632)
  • Old versions are deprecated, see <https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/>

New in TreeSheets Apr 17 2024 (Apr 17, 2024)

  • Revert wxAUI enhancements (#628)
  • wxAUI does not properly support the recent Windows Monitor Awareness modes

New in TreeSheets Apr 13 2024 (Apr 14, 2024)

  • Change multiline string literals `xgettext` misses (#627)
  • Change multiline string literals `xgettext` misses
  • Fixed as described in the [wikidump of the Audacity Wiki as of March 31, 2023 that can be found in the Internet Archive](https://web.archive.org/web/20221112235157/https://wiki.audacityteam.org/wiki/Translating_Audacity/Writing_Translatable_Code#Dealing_with_Long_Strings).
  • pt_BR: update translation
  • Update pt_BR keyboard accelerators

New in TreeSheets Apr 11 2024 (Apr 11, 2024)

  • wxAUI enhancements (#626)
  • Put wxAuiManager directly into the MyFrame class
  • Use wxAuiToolbar and remember toolbar information
  • This allows for the user to individually rearrange the toolbars and
  • TreeSheets saves this information.
  • Use proper names for the toolbars

New in TreeSheets Apr 10 2024 (Apr 10, 2024)

  • Timestamp style modification (#624)

New in TreeSheets Apr 09 2024 (Apr 7, 2024)

  • Apply changes from clang-format (#622)
  • Apply clang-format on main.cpp
  • Apply clang-format on document.h
  • Apply clang-format on cell.h
  • Apply clang-format on grid.h
  • Apply clang-format on myframe.h
  • Apply clang-format on myapp.h
  • Apply clang-format on mycanvas.h
  • Apply clang-format on mywxtools.h
  • Apply clang-format on selection.h
  • Apply clang-format on stdafx.h
  • Apply clang-format on tools.h
  • Apply clang-format on threadpool.h
  • Apply clang-format on script_interface.h
  • Apply clang-format on system.h
  • Apply clang-format on text.h
  • Apply clang-format on treesheets_impl.h
  • Apply clang-format on evaluator.h

New in TreeSheets Apr 07 2024 (Apr 7, 2024)

  • Update Italian translation

New in TreeSheets Apr 06 2024 (Apr 6, 2024)

  • Place Drag and Drop data structures per document
  • When a page gets closed, the destructor of DropTarget is called that also frees the associated data. If we maintain only one data structure associated with each DropTarget of each page, it tries to free this data structure multiple times, resulting in a crash.
  • To avoid this, keep a Drag and Drop data structure in each document.

New in TreeSheets Apr 05 2024 (Apr 4, 2024)

  • Keep track of images undergoing manipulation (#620)
  • Keep track of images undergoing manipulation
  • Prior to this commit, the image operation got executed on each image in the cells of the selection per cell.
  • The issue was that if the same image was referenced in multiple cells in the selection, the operation was executed per cell, thus on the same image multiple times.
  • In order to prevent this, keep track of all images and the cells referring to them in the selection, to execute the image operation
  • only once on each image and to reset the layout of the referencing cells.
  • Also reset children
  • Before this commit, the layout did not fit to the updated image dimensions in some cases

New in TreeSheets Apr 01 2024 (Apr 1, 2024)

  • Avoid wxDataObjectComposite for pasting (#619)
  • Avoid wxDataObjectComposite for pasting
  • wxDataObjectComposite does not work properly on Wayland for text atoms, so avoid it
  • In addition to that, the paste operation wxDataObjects for text, image and file name can be handled completely on the stack
  • Only the drag and drop operation still requires an composite data object on the heap, so handle it separately
  • Add comment to document the rationale of the change
  • Only refresh once after paste or drop operation

New in TreeSheets Mar 30 2024 (Mar 30, 2024)

  • Clipboard data structures must live on the heap
  • Destructors call free by themselves

New in TreeSheets Mar 29 2024 (Mar 29, 2024)

  • Replace wxScrolledWindow with wxScrolledCanvas (#616)
  • According to <https://docs.wxwidgets.org/3.2.5/classwx_scrolled.html>,
  • `wxScrolledCanvas` is more suited to the use case of TreeSheets
  • as there are no child controls in `TSCanvas`.

New in TreeSheets Mar 24 2024 (Mar 25, 2024)

  • Add selection cycle (#613)
  • Jump to the opposite side of the grid at the grid border

New in TreeSheets Mar 13 2024 (Mar 13, 2024)

  • Small optimizations for cmake:
  • Avoid redundant branch for the condition Linux and Filesystem Hierarchy Standard
  • Put translations back to own directory on MacOS

New in TreeSheets Feb 11 2024 (Feb 12, 2024)

  • Trigger rebuild manually
  • wxWidgets issue with color picker dialog crashing seems to be fixed.

New in TreeSheets Jan 30 2024 (Jan 31, 2024)

  • Replace toolbar icons with scalable images from Material Design (#605)
  • The SVG files are rendered into bitmap bundles that can be used for HiDPI display.
  • This commit also removes the extra icon set for black and white and its configuration. The Material Design symbols are already monochrome.

New in TreeSheets Jan 26 2024 (Jan 26, 2024)

  • Selection::textedit` must be false when a grid gets merged into parent grid (#604)

New in TreeSheets Jan 23 2024 (Jan 24, 2024)

  • De-duplicate logic
  • `drawpath` is always initialized and thus its size can always reported.

New in TreeSheets Jan 21 2024 (Jan 22, 2024)

  • Do not trigger a zoom when there is no selection to zoom to

New in TreeSheets Jan 19 2024 (Jan 20, 2024)

  • Wrap as you type on multiple cell selection (#601)

New in TreeSheets Jan 16 2024 (Jan 16, 2024)

  • Prefer to clone from the cell above and to the left (#597)
  • When a cell is inserted, the cell above and to the left should be cloned from instead of the original cell at the position to insert the new cell.

New in TreeSheets Jan 10 2024 (Jan 10, 2024)

  • wxFlexGridSizer expects to be managed on heap (#590)

New in TreeSheets Jan 9 2024 (Jan 9, 2024)

  • Make status bar fields DPI aware (#587)

New in TreeSheets Jan 8 2024 (Jan 8, 2024)

  • Update translation template and pt_BR translation (#586)

New in TreeSheets Jan 7 2024 (Jan 7, 2024)

  • Allow user to filter for exact datetime ranges.
  • Show user in status bar also the exact time of the last modification.

New in TreeSheets Jan 3 2024 (Jan 4, 2024)

  • pt_BR tutorial: update keybinding, minor edits (#579)

New in TreeSheets Jan 1 2024 (Jan 2, 2024)

  • Change keybinding for vertical layout layout to Alt+0 in tutorial

New in TreeSheets Dec 24 2023 (Dec 25, 2023)

  • Simplify, improve and enhance replace logic (#574)
  • This commit allows to replace a search text match with an empty replace string.
  • It also removes a bug where the matched string was replaced twice in the case-insensitive mode.

New in TreeSheets Dec 20 2023 (Dec 20, 2023)

  • Reset layout when a single line of text is dropped (#569)
  • When a single line of text is dropped onto a cell, the layout is not reset.
  • This is not optimal when the text length is longer than e.g. the column width because the text gets cut as the layout is not adapted.
  • This commit fixes this by resetting the layout in the case of a drop of a single line of text.

New in TreeSheets Dec 18 2023 (Dec 18, 2023)

  • Properly process returned `const wxChar *` (#568)
  • `void System::TabChange(Document*)` calls `const wxChar* Document::SearchNext(wxDC&, bool, bool, bool)`.
  • The returned result of `Document::SearchNext` should be properly processed on the stack. This commit fixes this by processing the returned `const wxChar*` with the `void TSCanvas::Status(const wxChar*)` function.

New in TreeSheets Dec 15 2023 (Dec 15, 2023)

  • Handle Text style hotkeys in the menu bar (#566)

New in TreeSheets Dec 12 2023 (Dec 12, 2023)

  • Fix typo in README.md

New in TreeSheets Dec 6 2023 (Dec 7, 2023)

  • Constify search string (#563)

New in TreeSheets Dec 4 2023 (Dec 5, 2023)

  • Update German translation

New in TreeSheets Dec 3 2023 (Dec 3, 2023)

  • Update translation template and pt_BR translation (#560)

New in TreeSheets Dec 2 2023 (Dec 3, 2023)

  • Implement backwards search (#559)

New in TreeSheets Nov 25 2023 (Nov 25, 2023)

  • Update Chinese translation

New in TreeSheets Nov 13 2023 (Nov 13, 2023)

  • FR translation for HMI and tutorial (#554)
  • Updated FR language
  • Translation upgraded to latest HMI version (many missing translation items).
  • Updated tutorial FR version with command line
  • The command line feature description was missing

New in TreeSheets Nov 12 2023 (Nov 13, 2023)

  • Fix Shift + Page Up/Down on wxGTK

New in TreeSheets Nov 03 2023 (Nov 4, 2023)

  • Fix missing INSERT key in French translation

New in TreeSheets Nov 03 2023 (Nov 2, 2023)

  • Update translation template and pt_BR translation (#552)

New in TreeSheets Nov 02 2023 (Nov 2, 2023)

  • Add Save all menu item (#550)

New in TreeSheets Oct 24 2023 (Oct 24, 2023)

  • Update pt_BR translation and keyboard accelerators (#548)

New in TreeSheets Oct 23 2023 (Oct 23, 2023)

  • Update pt_BR translation and keyboard accelerators (#548)

New in TreeSheets Oct 22 2023 (Oct 23, 2023)

  • Update translation template and German translation

New in TreeSheets Oct 16 2023 (Oct 16, 2023)

  • Get rid of Focus check entirely (#546)

New in TreeSheets Oct 15 2023 (Oct 16, 2023)

  • Put check at the right place (#545)
  • Only OnActivate needs to be checked for focus, not all events that lead to ReFocus being called.

New in TreeSheets Oct 14 2023 (Oct 15, 2023)

  • Tune the input for the hash (#542)
  • Profiling TreeSheets shows that hashing the entire image data takes up a lot of time.
  • This commit tweaks this by just hashing a specific chunk of the image data at its beginning.

New in TreeSheets Oct 13 2023 (Oct 14, 2023)

  • Add option to merge cell text (#539)

New in TreeSheets Oct 13 2023 (Oct 13, 2023)

  • Workaround is no longer needed (#540)

New in TreeSheets Oct 9 2023 (Oct 9, 2023)

  • Make CMakeLists.txt a little bit more compact

New in TreeSheets Oct 8 2023 (Oct 9, 2023)

  • Add option to Copy to clipboard with inline HTML images (#537)

New in TreeSheets Oct 6 2023 (Oct 6, 2023)

  • Add Application icon on Windows

New in TreeSheets Oct 5 2023 (Oct 5, 2023)

  • Abstract away underlying Build system on Windows

New in TreeSheets Oct 2 2023 (Oct 3, 2023)

  • Standard instruction works

New in TreeSheets Oct 1 2023 (Oct 1, 2023)

  • Abstract away underlying build system on Linux (#530)

New in TreeSheets Sep 29 2023 (Sep 30, 2023)

  • Do not install FreeDesktop/XDG files in a relocatable installation

New in TreeSheets Sep 27 2023 (Sep 28, 2023)

  • Bump compilers on CI

New in TreeSheets Sep 26 2023 (Sep 27, 2023)

  • Add CMake option to build wxWidgets along from its source code and to link TreeSheets against static wxWidgets library (#521)

New in TreeSheets Sep 20 2023 (Sep 20, 2023)

  • Consider application being started minimized (iconized) (#519)

New in TreeSheets Sep 15 2023 (Sep 16, 2023)

  • Consider scrollbars overlapping the scrolled window at its edges (#510)
  • This assumes that the horizontal scrollbar is at the bottom edge and that the vertical scrollbar is at the right edge of the scrolled window.
  • This commit should avoid the situation where the selection to scroll to is hidden behind the scrollbar.

New in TreeSheets Sep 13 2023 (Sep 13, 2023)

  • Avoid side effects of scrolling with Alt key pressed (#509)

New in TreeSheets Sep 12 2023 (Sep 13, 2023)

  • ccelerator keys for zoom are not always fetched at menu level (#508)
  • When the key events for zooming are first fetched at canvas level, they will not be propagated to the menu level on wxGTK.
  • This commit adds yet another workaround to the already existing long list.

New in TreeSheets Sep 8 2023 (Sep 9, 2023)

  • Do not emit empty style attribute (#504)

New in TreeSheets Sep 7 2023 (Sep 8, 2023)

  • Same behavior for clipboard as for Drag and Drop operation (#499)

New in TreeSheets Aug 31 2023 (Aug 31, 2023)

  • Copy solely the text string when TextEdit is active (#498)
  • When the cell is in TextEdit mode and thus the cell text partly or wholly selected, only the selected text string shall be copied to clipboard.
  • This is particularly useful when the user only wants to copy a part of the cell text without having the HTML formatting.

New in TreeSheets Aug 28 2023 (Aug 29, 2023)

  • Update scrollbar after zoom on wxGTK (#496)

New in TreeSheets Aug 25 2023 (Aug 25, 2023)

  • Break the loop when cell is selected (#495)

New in TreeSheets Aug 17 2023 (Aug 17, 2023)

  • Variable that is used only once can stay anonymous (#493)

New in TreeSheets Aug 11 2023 (Aug 11, 2023)

  • Fix select all in text mode (#490)

New in TreeSheets Aug 9 2023 (Aug 9, 2023)

  • Reset blink when cursor updates (#483)
  • Reset blink when cursor updates
  • Fix formatting

New in TreeSheets Aug 8 2023 (Aug 8, 2023)

  • Undo red search highlight removal (#484)

New in TreeSheets Aug 2 2023 (Aug 2, 2023)

  • Avoid inheritance of CSS styles in tables (#482)
  • Avoid inheritance of CSS styles in tables
  • Put text-decoration styles in a span node
  • Text-decoration have a different inheritance model where
  • you cannot override the inherited text-decorations.
  • In order to avoid this situation, put this sort of style into a span node.

New in TreeSheets Aug 2 2023 (Aug 2, 2023)

  • Slightly modernise HTML export (#481)
  • Replace repetitive valign=top in HTML export with one-time CSS
  • Match default grid colour in TS
  • Use standards mode

New in TreeSheets Jul 29 2023 (Jul 28, 2023)

  • Order of initialization shall be in line with order of members in struct (#479)
  • This fixes a warning when compiler is in pedantic mode.

New in TreeSheets Jul 22 2023 (Jul 22, 2023)

  • Increase required minimum version for CMake (#478)
  • This fixes a warning message of CMake.

New in TreeSheets Jul 20 2023 (Jul 21, 2023)

  • Fold icon shall also be rerendered when DPI is changed (#476)

New in TreeSheets Jul 17 2023 (Jul 17, 2023)

  • Only zoom to selection on first draw (#470)

New in TreeSheets Jul 15 2023 (Jul 16, 2023)

  • Remember and load TreeSheets file with zoom level (#469)

New in TreeSheets Jul 12 2023 (Jul 12, 2023)

  • Provide similiar experience when Return key is pressed (#467)
  • This provides a similiar experience when Return key is pressed in the search and the replace text control.
  • This implements it for MSW and the other ports.
  • Also there is now a keybinding to jump directly into the replace text control.
  • Also there is now an additional check so that Ctrl+letter char events will not be translated into ASCII control characters (see wxKeyEvent documentation).

New in TreeSheets Jul 11 2023 (Jul 11, 2023)

  • Event EVT_TEXT_ENTER is not generated on Windows,
  • so we have to emulate it.

New in TreeSheets Jul 08 2023 (Jul 9, 2023)

  • Add clang-tidy option, default OFF (#464)
  • Add a debug option for clang linter.
  • Default OFF as not all systems install this extra tool.

New in TreeSheets Jul 05 2023 (5468437342) (Jul 6, 2023)

  • Allow for multiple cells to add and remove tags (#456)

New in TreeSheets Jul 05 2023 (Jul 5, 2023)

  • Only affects Unix. Path is ignored on Windows.
  • Filename is same as default ($appname-$user)

New in TreeSheets Jul 04 2023 (Jul 4, 2023)

  • Consider TextEdit mode when copying (#458)
  • If the selected cell is in TextEdit mode, then only the selected part of the cell text shall be pasted if paste operation is done after the copy operation all within TreeSheets.
  • This can be reached by making the string in `sys->clipboardcopy` different
  • (leaving as `wxEmptyString`) from the string in the system clipboard so that TreeSheets will not take the complete cell from the internal cell clipboard.

New in TreeSheets Jun 30 2023 (Jun 30, 2023)

  • Use proper routines for finding the search string (#454)
  • Use the correct routines to detect if there is a match and then to indicate that in the control element
  • Start search when tab is changed or case sensitivity is toggled

New in TreeSheets Jun 27 2023 (Jun 28, 2023)

  • Do not put wxBitmapDataObject into a wxDataObjectComposite (#453)

New in TreeSheets Jun 26 2023 (Jun 26, 2023)

  • Allow non-privileged installation on Windows (#452)
  • This is useful for environments where users usually do not have elevated rights, like in business environments.
  • This commit also changed the file association to the interactive user level.

New in TreeSheets Jun 21 2023 (Jun 21, 2023)

  • Fix regression introduced in recent MSVC build (#450)
  • This fixes the Windows build with Visual Studio C++ that went
  • Broken because MSVC does not seem to be backward compatible with C++20
  • Or later activated any more.

New in TreeSheets Jun 13 2023 (Jun 14, 2023)

  • Match declaration order with initialization order (#446)

New in TreeSheets Jun 12 2023 (Jun 12, 2023)

  • Clean up unused variables (#444)

New in TreeSheets Jun 8 2023 (Jun 8, 2023)

  • Re-layout when create Bitmap of Document (#437)
  • This is necessary otherwise the bitmap will not be generated on Windows if e.g. DPI has changed

New in TreeSheets Jun 7 2023 (Jun 7, 2023)

  • Images need to be rerendered when scale changes (#436)
  • Also update `csf`
  • Separate `dpichanged` from `scrolltoselection` because resize the tab bar of Notebook also changes the sizes of the viewport.

New in TreeSheets Jun 5 2023 (Jun 6, 2023)

  • Fix further Linux related menu key problems
  • caused by recent wxWidgets, see: https://github.com/aardappel/treesheets/issues/422

New in TreeSheets Jun 5 2023 (Jun 5, 2023)

  • Prefix image data with its length and increment TS_VERSION to 22 (#433):
  • This increments the TreeSheets file format version to 22.
  • This adds a wxInt64/int64_t before the actual image data indicating its length.
  • This updates the corresponding loading and saving procedures.
  • This updates the file format specification.

New in TreeSheets Jun 4 2023 (Jun 4, 2023)

  • Improve code for rendering the image fields to bitmaps (#430)
  • Avoid redundant code for refreshing `Image` `trefc` in `imagelist`
  • Do not include folded grids when `Display` is run on `Image`s in `ThreadPool`

New in TreeSheets Jun 2 2023 (Jun 3, 2023)

  • Introduce ThreadPool and use it for Display() (#428)
  • Introduce `ThreadPool` and use it for `Display()`
  • Rendering the image files to bitmaps is a rather heavy task that consumes a lot of CPU time (relatively).
  • Instead of rendering the images one by one, do this in parallel with threads using the available CPU cores.
  • The threads are managed by `ThreadPool` that is introduced in this commit as the base.
  • `ThreadPool` has been taken from [Lobster](
  • https://github.com/aardappel/lobster/blob/master/dev/include/ThreadPool/ThreadPool.h)
  • Move global functions to `mywxtools.h`
  • The functions for converting between bitmap/wxImage and the buffer (vector) are global and independent of `System`. This commit moves them into `mywxtools.h`.

New in TreeSheets Jun 1 2023 (Jun 2, 2023)

  • Use information we already have (#426)
  • Avoid extra call when we already know the new size

New in TreeSheets May 30 2023 (May 31, 2023)

  • `std::vector` constructor with size allocated (#425)
  • When the vector is constructed, allocate directly with the size.

New in TreeSheets May 26 2023 (May 25, 2023)

  • Mark non-format string to fix `xgettext` error and update the translation template and the pt_BR translation.

New in TreeSheets May 25 2023 (May 24, 2023)

  • Use FlexGridSizer to build a nice daterange dialog (#417)

New in TreeSheets May 24 2023 (May 23, 2023)

  • Add filter for DateTime range (#412)

New in TreeSheets May 23 2023 (May 22, 2023)

  • Add German translation for new strings (#408)

New in TreeSheets May 20 2023 (May 21, 2023)

  • Use std::array instead of C-style array (#395)

New in TreeSheets May 18 2023 (May 19, 2023)

  • Copy selection as Bitmap to clipboard (#388)
  • This adds the explicit copy of the selection as bitmap. This enables to copy the bitmap to programs dealing with bitmaps, e.g. image manipulation programs or journals.

New in TreeSheets May 17 2023 (May 17, 2023)

  • Color search box (#387)
  • When search term is found, the background of the search text control turns green. Otherwise, use the system default color.
  • Small correction:
  • Share the match condition for case (in)sensitivity

New in TreeSheets May 16 2023 (May 17, 2023)

  • Copy HTML to clipboard (#386)
  • Create a composite data object that is placed to the clipboard.
  • The composite data object consists of
  • a data object for HTML, either
  • a custom data object in wxGTK containing the HTML string (GTK)
  • a HTML data object in other toolkits (MSW, OSX)
  • and
  • a plain text data object (string) in all toolkits (MSW, OSX, GTK).
  • Please note that the HTML data is within a custom data object for wxGTK as a HTML data object keeps causing a buffer overflow (wxWidgets implementation) when one tries to paste from the clipboard.
  • Furthermore, wxGTK fails to offer all added data objects within the composite data object under Wayland (but it works under X11). Instead, it will offer only the last one added under Wayland. In order to ensure that plain text copy and
  • paste works under all circumstances, make the plain text data object the last one added.

New in TreeSheets May 15 2023 (May 15, 2023)

  • Mark string from `d4dd2f5` for translation (#385)

New in TreeSheets May 14 2023 (May 14, 2023)

  • Correct menu item label (#383)
  • Make the ampersand appear correctly and change accelerator key
  • Please refer to <https://docs.wxwidgets.org/latest/classwx_menu_item.html>,
  • SetItemLabel() for more details.

New in TreeSheets May 11 2023 (May 11, 2023)

  • Add toolbar icons for replace control (#379)
  • This commit adds two toolbar icons for replacing all filter/search occurences with the replacement text either in the selection or in the document.
  • This commit also adds a toolbar icon to clear the replacement text in the text control like in the search text control.
  • This commit considers the cases for case sensitive search and for case insensitive search. The functions are restructured so that strings are lowered only once where needed saving expensive string operations.

New in TreeSheets May 4 2023 (May 4, 2023)

  • Rescale images in image dropdown in case DPI changed (#377)
  • In order to refill the vector with the correctly scaled bitmaps when the DPI
  • Changes, isolate the corresponding code block into a generic member function
  • Called FillBitmapVector. This commit also places the variable imagepath into
  • The MyFrame class so that it is accessible for the function that handles
  • The DPI change event.

New in TreeSheets May 3 2023 (May 3, 2023)

  • Adjust tab height of notebook in case DPI changed (#375)
  • The Tab Control height does not get resized automatically so
  • Resize it manually in case the DPI changed

New in TreeSheets May 1 2023 (May 2, 2023)

  • This forces the window and its subchildren to repaint.
  • Please refer to <https://docs.wxwidgets.org/latest/classwx_window.html>
  • for more details.

New in TreeSheets April 17 2023 (Apr 17, 2023)

  • Focus after search is cleared

New in TreeSheets April 16 2023 (Apr 17, 2023)

  • Leave search when Escape key is pressed (#369)
  • Clear text control content when Escape key is pressed
  • Do not focus canvas when search for next match
  • The user can leave the search box with an escape key press and
  • then the canvas will get focused.

New in TreeSheets April 9 2023 (4652352703) (Apr 10, 2023)

  • Remove obsolete function MakeInternallyScaled() (#366)
  • As wxWidgets handles the correct drawing depending on the set DPI by using device-independent pixels, the function MakeInternallyScaled() becomes obsolete. This commit removes the function.

New in TreeSheets April 9 2023 (Apr 9, 2023)

  • Use device-independent pixels in MyFrame (#364)
  • Use the device-independent pixels to abstract away the problems of scaling on displays with different DPI. wxWidgets will handle the correct scaling.
  • Please refer to <https://docs.wxwidgets.org/3.2/overview_high_dpi.html> for more details about High DPI support in wxWidgets.
  • This targets mainly the toolbar that shall display correctly on High DPI displays.

New in TreeSheets April 4 2023 (Apr 5, 2023)

  • Adapt tutorial file for new search behaviour (#355)
  • Matching cell text will not be red, but the matching cells are highlighted, i.e. the non-matching cells are darkened.

New in TreeSheets March 18 2023 (Mar 19, 2023)

  • Implement new High DPI WinAPI (#352). In addition to the existing High DPI APIs SetProcessDPIAware and SetProcessDpiAwareness, SetProcessDpiAwarenessContext was introduced with Windows 10. This approach uses the Per monitor v2 awareness context.

New in TreeSheets March 08 2023 (Mar 8, 2023)

  • Made selection extension with shift a bit more robust

New in TreeSheets March 06 2023 (Mar 6, 2023)

  • Jump to cell text end when enter the cell via F2 (#347)
  • Instead of selecting the whole text when the cell is entered via F2, set cursor to the text end.
  • When the cell is entered via the Enter key, keep the current behaviour.
  • Motivation: Align with behaviour of other spreadsheet programs

New in TreeSheets March 03 2023 (Mar 2, 2023)

  • Remember last selected entity (#344)
  • When the TreeSheets file is reopened, the selected cell is the
  • One selected when the TreeSheets file was saved.
  • Use case: In a TreeSheets file, the user can continue right were
  • The user stopped working before.

New in TreeSheets Feb 25 2023 (Feb 26, 2023)

  • Add Save Image(s) to disk functionality (#343)
  • Add Save Image(s) to disk functionality
  • Use-case:
  • Saving images directly from TreeSheets to a location the user wants
  • If multiple images are in the selection, the file name of the images after the
  • First one will be appended by a counter.
  • Use image_data if available when saving image to disk

New in TreeSheets Feb 22 2023 (Feb 22, 2023)

  • Add case-sensitive search (#340)

New in TreeSheets Feb 21 2023 (Feb 22, 2023)

  • Add basis for generic image format support (#338)
  • JPEG support: Add generic image format support and offer possibility to save image as JPEG

New in TreeSheets Feb 01 2023 (Feb 2, 2023)

  • Replace simple image checksum with 64-bit hash.

New in TreeSheets 2017-03-26 (Mar 27, 2017)

  • you can now set the background color on a per document basis
  • you can now turn off cursor key navigation of in between cell locations
  • integrated new wxWidgets 2.9.4, which probably fixed a lot of problems, particularly on OS X (which has now graduated from Alpha to Beta :).
  • you can now pick a default font size when you pick a default font. This is a per user setting, not per document, other users will open your documents at their preferred size.
  • Edit -> Copy As Continuous Text puts a single line of text merged from any selection into the clipboard. Useful for merging the text of multiple small cells,
  • or making a paragraph out of many cells for use in another application.
  • home/end now move within a line, whereas ctrl+home/end move within the entire text of the cell
  • improved rendering of line rendering style and background color picking
  • added additional space to cell margins
  • hover over wasn't updated during mousewheel scroll
  • optimized drag & drop of external files to not scroll/select while dragging
  • fixed ALT+F etc. not popping up the File menu
  • improved editing of search/replace boxes supporting shift+cursor/home/end etc.

New in TreeSheets 2013-06-02 (Jun 8, 2016)

  • TreeSheets is now open source! https://github.com/aardappel/treesheets
  • you can now set the background color on a per document basis
  • you can now turn off cursor key navigation of in between cell locations
  • integrated new wxWidgets 2.9.4, which probably fixed a lot of problems
  • you can now pick a default font size when you pick a default font. This is a per user setting, not per document, other users will open your documents at their preferred size.
  • Edit -> Copy As Continuous Text puts a single line of text merged from any selection into the clipboard. Useful for merging the text of multiple small cells, or making a paragraph out of many cells for use in another application.
  • home/end now move within a line, whereas ctrl+home/end move within the entire text of the cell
  • improved rendering of line rendering style and background color picking
  • added additional space to cell margins
  • hover over wasn't updated during mousewheel scroll
  • optimized drag & drop of external files to not scroll/select while dragging
  • fixed ALT+F etc. not popping up the File menu
  • improved editing of search/replace boxes supporting shift+cursor/home/end etc.

New in TreeSheets 2012-04-07 (Jun 8, 2016)

  • fixed bug caused by right-clicking on a modified selection
  • possibly fixed problem related to "automatically reload files" popping up multiple dialogs at once

New in TreeSheets 2011-08-25 (Jun 8, 2016)

  • fixed missing UTF-8 charset header in HTML export
  • fixed fold not being preserved on copy/past and undo
  • Now detects when a file that is loaded has been modified on disk by another program / computer, and reloads the file automatically (if it hasn't been changed) or asks (if it has).
  • This allows multiple computers to seamlessly work with 1 treesheets file over services like DropBox.
  • This functionality is by default turned OFF (see Options -> Auto reload documents) because it is potentially expensive if the treesheets file is in a folder with lots of subfolders.
  • Also not working on network drives at the moment.
  • HOME & END now change selection in a grid
  • INS on a cell that already has a grid now selects the last line of that grid, ready for inserting an item
  • fixed INS not unfolding a folded cell
  • fix for broken OSX clipboard functionality
  • added menu keyboard navigation accellerators
  • fixed bug in CTRL+x on empty text selection
  • fixed bug in CTRL+up/down in text edit mode

New in TreeSheets 2011-04-30 (May 2, 2011)

  • fixed bug in horizontal cell layout text selection
  • clear status message when switching tabs or entering search
  • fixed bug in shift+cursor selection
  • fixed semi-colon CSV import
  • fixed loading a tmp file not marking the document as modified

New in TreeSheets 2011-04-19 (Apr 27, 2011)

  • folding of grids: Edit -> Toggle Fold (F10) on cell(s) hides the grids they contain.
  • Folded cells will be marked with a '+' symbol in front of them
  • If you zoom into them, you will see the full grid, without having to fold/unfold.
  • A nice alternative to shrinking text if your sheet gets too big.
  • Redo (CTRL+y) now works.
  • an image drop down menu provides a convenient set of images you can quickly add to selected cells
  • there's now a strikethrough style (useful for todo/task lists!) using the CTRL+t shortcut (previously transpose)
  • added alternative (black & white) toolbar icon set (see options menu)
  • "Sort" now sorts on subsequent columns if data in the current column is equal
  • "Sort" can now be either ascending or descending
  • outputs statistics on file when loading
  • added commands to reset text sizes, styles, colors and column widths within the current selection (see Edit menu)
  • [making a lot of edits to a single cell will now set multiple undo points rather than just a single one] -> removed in favor of Redo
  • added shift+del, shift+insert and ctrl+insert as alternatives for ctrl+x, ctrl+v, ctrl+c
  • double clicking grid boundaries now selects that entire grid, not the parent cell
  • option: render document centered or not
  • option: minimize on close
  • option: single click maximize from tray
  • images in front of text rendered centered
  • improved toolbar dropdown rendering & size
  • images don't resize anymore when changing the text size of a cell,
  • instead there's now a function to change the size of an image (Edit -> Images -> Scale)
  • cells shrunks to tiny size don't show images
  • documents always show a small gutter, regardless of size
  • CTRL+f now selects any previous text in the search box, CTRL+a selects all, and HOME/END work too
  • made the interactive tutorial the default help (F1), both it and the old html tutorial available from the menu
  • selects the parent if you cut or delete all children & doesn't allow deleting of all children of the root of the current view
  • fixed filtering making everything tiny if cell text of grid was filtered, now doesn't minimize cells with grids, just greys them out
  • fixed text selection not showing correctly with image in front
  • fixed failing autosave popping up endless dialog boxes
  • fixed undo causing file to be marked as not modified
  • fixed horizontal layout being reset by some operations
  • fixed line style rendering sometimes having wrong background color
  • fixed style settings on "Wrap in new parent"
  • fixed statusbar items not showing fully on some systems
  • fixed bug with badly formatted indented text not being pasted/imported properly
  • fixed selection being off in scaled presentation mode
  • fixed bug with international characters in filenames

New in TreeSheets 2010-11-14 (Jan 26, 2011)

  • fixed selection box being rendered in the wrong location after switching resolutions
  • fixed it repeatedly trying to save temp files when temp file saving fails

New in TreeSheets 2010-10-15 (Jan 26, 2011)

  • fixed crash in "Hierarchy Swap" operation on leaf cells
  • "escape" did not exit edit mode, as it used to
  • new cells sometimes would not get applied the correct rendering style (from siblings or parent)
  • changing fonts could leave other open documents with incorrect rendering transpose now keeps a selection

New in TreeSheets 2010-10-10 (Jan 26, 2011)

  • fixed bug where text background would not be set correctly, mostly resulting in incorrect printouts

New in TreeSheets 2010-09-28 (Jan 26, 2011)

  • fixed bug that would stop certain operations work on single cell grids (such as browse)

New in TreeSheets 2010-09-20 (Jan 26, 2011)

  • Added new rendering options for grids, see tutorial.cts for examples, or todo_calendar.cts
  • on multi line text, cursor up & down now moves line by line before moving to the next cell
  • new tabs that have individual close buttons, can be reordered, and by default are at the bottom (use option to move them to the top)
  • CTRL+TAB cycles thru all tabs
  • CTRL+mouse drag moves a cell to a destination (like Cut + Paste)
  • ALT+mouse drag copies a cell to a destination (like Copy + Paste)
  • minimum size of sizing cells is now relative to the current view rather than the root of the document, allowing you to make extremely
  • hierarchical documents (important for presentations).
  • Some operations that work on grids and required you to select the parent cell to operate now also work if you simply select all cells of the grid.
  • This is more intuitive to some people, and also allows these actions on the root grid, which didn't work before.
  • Affected operations sofar: transpose, flatten, hierarchify, and the cell rendering options
  • when loading a file that is already open, instead of the "this file is already loaded" dialog it now simply switches to the open document
  • Added option to swap mousewheel scrolling and zooming operations (make scrolling require CTRL instead of zooming)
  • Made top toolbar more compact to fit on netbook screens better
  • Ctrl+W (close) or closing last tab now simply quits TreeSheets. CTRL+q quits / closes all tabs.
  • When clearing a cell with delete/backspace, it now keeps its colors/styling
  • Statusbar now shows date of last edit of cell you hover over. The furthest these dates go back is cells edited since the 2010-03-10 release
  • of TreeSheets, since older versions didn't record this information.
  • Fixed pasting of NxN grid selections into grids, it behaves much more logical now
  • Fixed potential crash bug in closing tabs
  • On paste, cursor is at the end of the pasted string
  • New grids take default column width from their parent
  • Added column sizing method that does not size any sub grids
  • Improved line-splitting for ( and )
  • Added remove image operation
  • Added seperators to the menus for clarity, and moved some lesser used editing operations into submenus.
  • The roundness setting now shows its current value.
  • Fixed rendering of editing in presentation view
  • Status bar updates even if mouse pointer doesn't move
  • Fixed refresh error in Hierarchy Swap operation, and one related to scrolling
  • Fixed filename being reset on a cancelled Save As
  • Single instance check file under linux is now hidden
  • Rewrote some of the column width related code to make it more robust, fixed several bugs in it

New in TreeSheets 2010-03-22 (Jan 26, 2011)

  • "Paste Style Only" pastes only the color/style/image from the copied cell into the destination cells, not the text
  • dragging middle mouse button (mousewheel down) now pans
  • Scrolling smoother on "continous" mousewheels
  • Fixed undo resetting column width to default
  • Fixed zoomed in views sometimes not rendering correct background color

New in TreeSheets 2010-03-10 (Mar 11, 2010)

  • Grid borders can now be rendered with round corners. The "roundness" can be set in the options menu.
  • Added "tags". Tags make cell texts that are used repeatedly easier to assign, recognize, and keep consistent. See menu edit/tags.
  • Added "Toggle Grid Below/Next to Text" (F7) for yet more flexible layout possibilities
  • Added "Hierarchify" and "Flatten" operations that simplify data portability between TreeSheets and spreadsheets
  • Added export to "CSV" format.
  • Added "Hierarchy Swap" (F8) operation (see tutorial)
  • Added "Wrap in new parent" (F9) operation to easily create new hierarchy (works on any selection)
  • Added "filters" (see View menu). A filter forces all cells not included to be shown as 1 pixel characters in lighter grey, so its easy to focus visually on whats important in really large TreeSheets files. Currently, there's filters for the search results, and for a % percent of last edited cells. This feature works because TreeSheets now records the last edit time for each cell. Since older TreeSheets files do not have this information, it may take a while of editing before this feature becomes useful.
  • Completely reworked how columns are sized. Now every column in a grid simply has a character width which can be resized by
  • SHIFT+mousewheel as before, instead of the clumsy per cell linecount. Column width is shown in the statusbar.
  • Resizing affects the column(s) spanning the current selection, and any grids inside of it. Layout is quicker and more predictable. Default column width is 80 characters, so you may have to resize some old treesheets files.
  • When zooming in, now shows you the "context" of what you're looking at in light grey text (the text of all the parent cells)
  • Added "Open File" (F4), which loads a filename in the associated application (paths relative to where the .cts is stored).
  • Improved the UI to be more like other applications and more consistent. Primarily, the scrollwheel and PgUp/PgDn now always work the same, without modifiers they scroll, with CTRL they zoom, with SHIFT they change text size, and with ALT they change column size.
  • Support for scrollwheel scrolling horizontally (on mice that support it) has been added (NOT TESTED).
  • fixed bug where "replace" could loop indefinitely if the replacement string contained an occurrence of the search string :)
  • Tabs are shown on the left by default (change in options)
  • small improvements to the builtin programming language
  • Option for faster line rendering (useful if you have very complex sheets, or lots of 1 pixel text)
  • text rendering is lots faster on windows now fixed bug in CVS import where it wouldn't parse linefeeds inside "" correctly
  • fixed bug where closing some but not all documents could make TreeSheets confused as to which document it is looking at
  • fixed bug where it could display the wrong filename on tabs/window title due to autosave

New in TreeSheets 2009-11-05 (Mar 1, 2010)

  • You can now change both the color and width of grid borders
  • Added fullscreen toggle (F11), and scaling toggle (F12): useful for presentations.
  • TreeSheets can do better presentations than powerpoint this way, as you can structure your presentation
  • around hierarchical zooming, which is much more coherent than a sequential set of slides
  • HTML export now sets colors & styles
  • HTML/XML/TXT export now always export the current view instead of the entire document (much like image export)
  • Now remembers all open files when you re-start TreeSheets
  • Added option to show file tabs on the left instead of on top (to save vertical space)
  • The "Open link in browser" and "Go to matching cell" functions now also work on text selections rather than just whole cells
  • Added SHIFT + Home/End operations for text editing (extends selection)
  • improved grid rendering to have a tiny margin
  • improved the way it scrolls the selected cell into view if it is partially out of view
  • find next (F3) zoom in automatically if cell is too small to read
  • Extend Selection to Full Rows/Columns of current selection
  • fixed: deleting the top level grid on a zoomed in view would crash
  • fixed: cancelling new file dialog would crash treesheets
  • fixed: icon did not show in the window frame
  • fixed: filenames could get confused when switching tabs
  • fixed: text editing in both search controls
  • fixed: possible hang in rendering with truely huge treesheets files
  • made the automatic text sizing at zoom a bit more reliable
  • removed the "remove grid" (CTRL+r), "replace parent" and "merge with parent" (CTRL+m) operations,
  • as simply using copy/paste/delete on the cells instead is much more intuitive
  • window now de-minimizes from tray if app is launched again or a treesheets file is launched from explorer
  • shows filename on "discard changes?" dialog
  • updated the tutorial with some recent features, and the spreadsheet language
  • shows on new tabs

New in TreeSheets 2009-06-30 (Mar 1, 2010)

  • Prevents multiple instances being opened, instead files launched will open in the existing instance
  • Will notify you if you accidentally try to open the same file
  • empty cells are now at least square in size
  • shows a "+" instead of a "*" when a file has been modified but has been autosaved
  • fixed ENTER stopped working (caused by tabs)
  • fixed bug that could cause characters to be missing on a multiline rendering

New in TreeSheets 2009-06-25 (Mar 1, 2010)

  • Multiple documents can now be open in a single TreeSheets instance.
  • Tabs allow you to switch between them.
  • copy/paste between seperate files within the same instance of TreeSheets now retain layout and images faithfully.
  • Search functionality:
  • CTRL+F focuses on search box
  • press F3 to cycle through all search results
  • Replace box, type text in here, and then use:
  • Replace All to replace all occurrences of the current search
  • Replace in Current Selection: either work in combination with F3 to selectively replace search results,
  • or you can even select a hierarchical subset of all search results and then replace all in that.
  • autosave: saves files that have unsaved modifications to a .tmp whenever the file hasn't been saved for 5 minutes,
  • you go idle for 1 minute, you minimize or deactivate the window, whichever comes first. This file gets removed if you do an explicit save,
  • and you can restore it should your machine crash (TreeSheets will ask you). Does not activate for "new" files that have never been saved before.
  • made multi-cell Paste (and Merge with Parent) not insert unnecessary cells when blank cells are available at the target location
  • added "Minimize to Tray" option
  • added Sort operation: make a 1xN to indicate what column to sort on, and what rows to affect
  • drag & drop of files now works, currently only image files supported (anything else appears as the filename). May support other formats in the future.
  • added seperate XML with attributes import mode (for formats that store their data there, like OPML)
  • CTRL+SHIFT+cursor left & right now select words at a time in edit mode (much like any text editor)
  • automatically increases the number of lines in a cell if text insertions cause it to go over N characters average, configurable from the menu.
  • fixed status bar not updating when changing text size on a cell
  • you can now undo past the point of your last save, all the way to how you loaded it
  • added menu option to disable writing of .bak files on save
  • "Set Print Scale" allows simplistic scaling of print output. No multi-page output yet.
  • fixed image export not clearing background correctly
  • fixed tutorial file not being added to the file history correctly

New in TreeSheets 2009-04-26 (Mar 1, 2010)

  • fixed thin selections not centering on zoom
  • fixed cursor keys & tab on linux

New in TreeSheets 2009-04-25 (Mar 1, 2010)

  • can now copy/paste and drag&drop images and text directly from other apps into a treesheet (e.g. web browser, photoshop, etc).
  • you can now select a custom color, and assign it to cells from the color menu
  • improved color/style picking for new rows/columns inserted
  • automatically scrolls & zooms out to bring the current selection in view for most operations (keyboard movement, etc).
  • optimized the screen refreshing
  • when copying a single cell, now properly remembers number of lines, color/style
  • ENTER on grid line selections now inserts a cell
  • SHIFT+leftmouse now enlarges the selection, same as if you had dragged to that location.
  • Export current view as PNG file
  • fixed bug in printer scaling
  • made scrollwheel accumulative, to hopefully make zooming work better on continuous scrollwheels.

New in TreeSheets 2009-04-19 (Apr 24, 2009)

  • Added "Go To Matching Cell" (F6) function: will select whatever cell has the same text. If multiple other cells are available, will prefer to go to a cell that has different formatting (color/style) than the current cell (this is to allow this feature to be used as specially marked "links" to a reference cell).
  • as a temporary solution, added a "simple rendering mode" that does not make use of XOR to show selections. It is slower to refresh and does not give hovering feedback, but at least it works. More advanced rendering on these platforms will have to wait until wxWidgets supports wxOverlay's with blending.
  • fixed several issues where the linux version of the wxWidgets behaves differently
  • fixed crash bug related to right-clicking outside the treesheet
  • added a "traditional scrollwheel" option that swaps the zoom & scroll functions
  • removed the floating grey cursor (it was confusing)
  • the text cursor is now a blinking black line (as in Excel)