#119 Dan's development in 2004-2008

Daniel Polansky

This patch is for tracking and reference of my version of FreeMind, accompanied by a developer documentaion in OOo Writer format. The developer documentation contains a lot of code, and is designed to make it as easy as possible to take over the functions that I have developed to any code base of FreeMind. Still, taking the functions over can be a formidable taks. It should be possible to pick and carry over only a subset of the functions.

The published files:



I release all my additions to the original sources of FreeMind 0.7.1 and FreeMind 0.9.0, that is, the additions published in the above linked zip file, under GNU GPL V2 or later at your option.

A summary of the features

An overview of new features in FreeMind 0.7.1-XT, compared to FreeMind 0.7.1, with view on FreeMind 0.9.0:
* Anchors: The user can tag nodes with anchors that are found first before any other text in the mind map when using the find function. Also, anchors are shown alphabetically sorted in a menu available in the popup menu for maps.
* Categories: The user can tag nodes with categories.
* Bitmap images: Images are stored as Base64 encoded PNG. They are pastable from clipboard, and are pasted as PNG. They can be edited using an external application of the user's choice such as Gimp. The user can create an empty bitmap image, to be edited later.
* SVG: The SVG is shown by rendering it into a bitmap using Batik toolkit. The user can edit SVG in an external application such as Inkscape. The user can create an empty SVG node, to be edited later.
* Font family: Font family is only stored in XML if it has been explicitly change by the user. Previously, the font family was stored as soon as the user changed any property of the font of the node, such as font size.
* Edges colored after nodes: The user has a user option (“user.properites”) to derive the color of the edge from the color of the node.
* Focusing on branches: The user can focus on one or more branches, leaving the nodes that are out of focus transparent and thus less conspicuous, or completely invisible. The nodes that are out of focus cannot be edited, including that they cannot be cut or moved around.
* Templates: The user can insert one of several user templates using the menu in which the available templates are listed as menu items. User templates are stored in the file Templates.mm, and can be edited as any other mind map.
Node styles and shapes: A hardwired, half-baked feature. Node styles are introduced, contrasting to physical styles, but are not editable by the user in a GUI; instead, they are harwired, meaning that an expert used can edit the code and recompile FreeMind to get another node styles. What was known as node styles is renamed to “node shape”, and includes “bubble”, “fork”, “diamond”, “ellipse”, and more. The node style is stored in the “style” attribute, but could be stored in the “class”, modeling on HTML. As said, from a user's point of view, this is a bare bones, incomplete feature, which probably needs to be redesigned and reprogrammed to be of public use. Still, node shapes are all right; the shape of a node is derived from its style; there is no attribute “shape” of the “node” element in XML.
* Edge styles: New edge styles are added alongside “linear”, “bezier”, “sharp linear”, and “sharp bezier”. The new edge styles: “angle”, “cut”, “invisible”, “subclass”, “aggregation”, “composition”, and “having”.
Word count: There is a new function that counts the number of words and the number of nodes in a given selection of nodes, including the descendants of the selected nodes.
* Recent files in two groups: The top 8 recent files are listed directly in the File menu, while the further recent files are listed in the submenu “More Recent” of the File menu. Also, each recent file is listed under a shortened path; its path and its “.mm” extension are shown in gray. A mnemonic speeds ups loading a recent file: The user can pressing F10, “F”, and the first letter of the file name, unless the file name starts with “The “, upon which “The “ is omitted and the letter that follows “The “ is taken as the mnemonic.
* Optional icon for links: There is a new user setting (in “user.properties”) to show no icon to signal that a node has a hyperlink. The presence of a hyperlink can still be told by the change of the cursor upon hovering over the node.
Search field in the menu bar: When the user presses Control + F to search, a new search field appeats at the top right of the menu bar, modeled on Firefox's search bar used for search the web of Wikipedia. Thus, there is no longer a search popup.
Toggling all toolbars: There is a new little icon placed to the top right of the menu bar that toggles (hides or shows) all the toolbars. There is a similar function in Adobe Acrobat, mapped onto F8 function. The function is not mapped to any key in FreeMind.
* Toggling menu bar: The menu bar can be hidden. To make the keyboard shortcuts still work when the menu bar is hidden, a new technique of assignment of keyboardf shortcuts to actions is implemented.
Remove formattion: There is a new action for removing of formatting of nodes, assigned to Control + Shift + Space. It can replace the function of clearing the formatting using the physicaly style assigned to F1 key. Thus, F1 key can be freed for help.
* Opening of files upon startup: Newly, user can speficy which if any files should be opened upon startup, with reference to the last sessions. The options: open no file, open the last opened file, open all the files opened when the last session was ended.
* Rich text editor – real estate: It is shown how to make the rich text editor take much less screen real estate, by showing no menu bar, no toolbar, and by hiding the tabs for switching over from WYSIWYG editing pane to HTML source code editing pane.
* Rich text editor – hyperlinks: Newly, hyperlinks can be followed from the rich text editor SimplyHTML by clicking a hyperlink while holding the Control key.
Detached node: A node can be turned into a detached, yellowish node that stays on top of all windows, cannot be edited, but can be easily dragged around.
Secure saving in dot bak files: An alternative to automatic saving, there is a user option (in “user.properties”) to let the old version of a file copy to a backup version before the old version is overwritten with the version that is just being saved.
Pasting of hyperlinks with titles: Hyperlinks are now pasted with the title obtained from the web page to which the hyperlink points, instead of the URL made a bit more readable but still basically an URL.
* Default zoom: The user can set the default zoom of the mind maps to be opened, in “user.properties”. This should come handy on high-resolution screens or for users who prefer larger fonts.
* Dropping below node: Apart from dropping a node as a child and as an upper sibling, the user can now also drop the selected node below the target node, as its lower sibling.
* Math: Showing math using JMathText component, which is inline and antialiased. A downside is the incomplete support of LaTeX, and no recent activity of JMathText project.
* Export to HTML: Exporting to HTML is extended with several features. Branches can be treated as lists even in the export based on headings. Some branches can be marked as not to be exported. Some branches can be marked to be exported as image, that is, a screenshot of the branch. Export of nodes with bitmap images and nodes with SVG is supported.
* Arrow link: There is another shape of the end of the arrow available. Also, there is a different default routing of the arrow link.