Garden Design Software

Table of contents

Garden Design Software
System Flowchart
Q: So, what is this Search Engine? A: Search Tab and Details Tab
The Gardens Tab
The Objects Tab
The Design Tab
Contents of the Package

Garden Design Software


Ron Savage, aka iFlower on the Flower Forums.


I'm inching towards release of a free software package, written in Perl, which will be available from both my web site and from my public repository. The latter is hosted by volunteers, in Finland, even though I live in Melbourne, Australia. Such is the nature of the internet.

This article discusses some of the features of the package.

System Flowchart

Data about the flowers is manually entered into text files.
Text (*.csv) files were chosen so I could bootstrap the whole system.
Also, I'm hopeful we can build a communal database by sharing such
files. The point would be to have a copyright-free database available for free.

The files are imported into a database
managed by the free program SQLite.

(On the left) The Search Engine and the Garden Design components
are discussed below.

(On the right) The Export code can re-create the *.csv files, and it can generate:
o The Flower Catalog,
o The Front Garden Layout, and
o The Back Garden Layout.

Each flower has its own page, and all such pages
are pointed to by the Catalog and the Layouts

via clickable thumbnail images.

Note: The program handles any number of properties, and any number of gardens per property.

Figure 1 - The System Flowchart

Q: So, what is this Search Engine? A: Search Tab and Details Tab

Note: These screenshots were rigged for clarity by using a very large font. Also, as development proceeds, screenshots further down the page contain newer tabs, e.g. Gardens.

Let's step thru the process of searching, and viewing the search results.

Screenshot 1 - The Default Search Screen
Screenshot 2 - Search Results after Typing in 'chor'.
After clicking the first result's thumbnail, the 5 sub-tabs
under 'Details' - 'Flower' to 'URLs' - are filled in
automatically and the 'Flower' tab gets the focus.

And yes, you can select, say, just the (Edible) Fruit
checkbox and click Search.

Also, you can search by height or width with, say,
'width < 2m' or 'height > 3m', as long as the plant's
dimensions are stored in the database.

Figure 2 - The Search Tab

Screenshot 3 - The Flower Tab.
The tab is the only one of the five which has Reset and Save buttons.
Clicking either one affects all fields on all 5 sub-tabs
Screenshot 4 - The Attributes Tab
Screenshot 5 - The Images Tab.
Image files are found, as is the thumbnail, by combining
'homepage_dir' and 'image_dir' from the constants table,
with a cleaned-up version of the flower's Latin name.
Cleaned-up basically means spaces are replaced by full-stops, and
multiple, adjacent full-stops, from cases such as
'Aquilegia flabellata var. pumila alba', are replaced by a single one.
Hence the thumbnail for that is assumed to be named
There is provision for 20 images on the tab, but that number is in the constants table and so it trivial to change.
Screenshot 6 - The Notes Tab.
There is provision for 20 lines of notes, but that figure is also in the constants table.
Screenshot 7 - The URLs Tab.
There is provision for 10 URLs, and that figure is also in the constants table.
Screenshot 8 - The Help Tab for Searching.
Later, all help will be split out into a stand-alone page,
so that each tab and sub-tab can have its own help.

Figure 3 - The Details Tab

The Gardens Tab

Gardens are defined by the name of the property where they are located, and by their name.

This tab displays all existing gardens per property, and allows defining new ones.

Later, you must specify a property and garden when loading and saving gardens you design.

A list of property/garden combinations from the database is displayed in the left.
Autocomplete is used to find the property and garden names, if any, when adding.
After a new property/garden pair are added, the 2 menus are updated.

Figure 4 - The Gardens Tab

The Objects Tab

This tab will allow you to edit existing tiles and generate new ones.

Objects refers to passive tiles which are used to represent garden features. An object becomes a feature when placed at a specific location within a given garden. Before placement, it's colloquially known as 'junk in the shed'.

The tiles are called passive because when the export software outputs the layouts - as *.png files - for each garden, such tiles can't be clicked, whereas the flower thumbnails are always linked to each flower's web page.

You can see my front garden and back garden layouts on-line.

After a color is chosen by any of the 3 methods, a swatch is displayed
against the text 'Color chosen'.
After clicking on the down arrow in Color Spectrum, this panel
gives the user various ways to select a color from the palette.
You can either click within the square - as per the black dot -
or drag up and down the white bar which sits in the center of the vertical spectrum on the right-hand side of the panel.
The little colored boxes are recent selections, making it easy
to reselect a previously-chosen color.
The spectrum code is in Javascript and is available for free

Figure 5 - The Objects Tab

The Design Tab

Design refers to the acts of placing (a) thumbnails of flowers, and (b) objects' tiles, within a grid laid over a virtual garden.

The default display
Steps to add an object's tile to the virtual garden:
Type the search term (e.g. 'fence'), choose 'Brick fence'
or 'Wooden fence' with the up/down arrows, and hit
tab. That object's tile appears to the right of the
search box. Click on the tile and then click anywhere,
and any number of times, on the virtual garden to place
that tile in situ. The same process is used to select flowers.

Figure 6 - The Design Tab

Contents of the Package

o The Source Code

Yes. Being a standard Perl package (aka distro) you get the source code of every component. This includes the source code of various small Perl programs, each just a few hundred bytes in size.

There are no pre-compiled - and hence unreadable - components, such as *.exe files, which you might be used to downloading. Of course that in turn means the installation process may well be completely different that you're used to.

o A Set of *.csv Files

The package includes a set of *.csv (Comma-Separated Variables) text files containing details of the plants in my garden. These files are imported into the database to bootstrap the system. The package also includes an export component which generates these.

Since these files only contain partial information on my flowers, I'm hoping you can either help me find a public database of flower data I can incorporate into my package, and thereby ship to all those who download my program, or perhaps everyone using the program can enter the details of a few flowers, and I can combine all your data into a new database for another free download.

Export Options:

o The Flower Catalog

This is a HTML table which the code can incorporate into a stand-alone page, or which can be embedded in another web page, as I do here.

o A Set of Garden Layout Pages

In this case the output is one *.svg image for each garden. Here they are for my front garden and for my back garden.

o Various other data files

One of these is the database produced by the import component, and with which all other components interact. Another, older, database is used purely for self-testing the distro during the installation process.

o A Search Engine

Yes - You get a search engine specifically written to work with the database. See above.

o Installation

Precise installation instructions have not yet been written, but anyone used to installing Perl distro will find it trivial, especially on operating systems such as the one I use, <a href = ''>Debian</a>. Debian is free, and every pre-requesite is also free.

For users of MS Windows, the instructions will include the steps required to install a range of free pre-reqs designed to bring MS Windows up to functioning level, at which point my install code can be run. The latter includes 2 free web servers (sic) - Morbo and the Hypnotoad (neither of which I wrote :-).