I want to draw flowcharts:
- Graphical: Create new elements intuitively with the mouse
- Windows/Mac/Linux, same file format
- Free, ideally open source
- Works offline
Another possibility is Pencil Project
Pencil in an opensource GUI prototyping and sketching tools, developed by Evolus based on Mozilla technologies. This tools greatly help business analysts and GUI developers quickly draw GUI of applications to prepare proposal documents for clients to collect requirements, and for developer as a base document about GUI. Pencil project is one of the effort Evolus to contribute back to the community. Therefore, Pencil is released under an opensource license (GPL) so everyone can have opportunities to use, access to source code for modification and upgrade. Pencil is packaged as an add-on for Mozilla Firefox 3 or as a standalone application. Pencil is a multi-platform applications and can virtually run on every platforms supported by Mozilla Firefox 3. Pencil is the winner of Extend Firefox 3 Contest hold by Mozilla Firefox on 2008.
There is also a PortableApps version available for Windows: Pencil Project Portable
As an alternative to the already mentioned Dia, you could draw flowcharts using LibreOffice Draw, which might be already installed in your system as part of LibreOffice, the popular free and open-source office suite.
I quote the "Powerful diagraming and flowcharting" section on the website:
Design powerful and intuitive flowcharts with Draw. Smart connectors make it easy for you to build flowcharts, organization charts, network diagrams and much more, even if you're not a naturally-talented artist. You can define your own "glue points" for connectors to adhere to, for precise and easily-repeatable positioning. Dimension lines automatically calculate and display linear dimensions as you draw.
Just like Dia, LibreOffice Draw matches all your requirements.
Here you can find the help page on how to create flowcharts, it is very straightforward.
Related to some automated building of state machine, I stumbled upon yEd:
yEd Graph Editor yEd is a powerful desktop application that can be used to quickly and effectively generate high-quality diagrams. Create diagrams manually, or import your external data for analysis. Our automatic layout algorithms arrange even large data sets with just the press of a button.
yEd is freely available and runs on all major platforms: Windows, Unix/Linux, and Mac OS X.
I found this graph editor to be very powerful, and having loads of options. One of the specialities of this versus some of the other tools I've looked at over the years is the possibilities to restructure parts or the entire graph according to different semantics/model types/... (i.e. Flowchart, swimlane, hierarchical, tree, organic, ... )
In this screenshot we see the following views:
To me the best point of yEd is the ability to change the layout automatically through all the options in the Layout menu. This can be done on the whole or parts. There exist a neat selection tool to select different nodes/edges/... on which you would like to operate. There is also an automatic label placement tool for when you've fixed all your nodes and want the labels to tag along.
You can of course also do everything manually, and it provides different guide- and snaplines to show you when you are aligned with the different nodes.
All in all, I'm quite satisfied with yEd, with the only exception being that automatic sizing of nodes which leaves something to be wanted.
There is Dia, which matches all your requirements (I only use the Linux version).
Dia is roughly inspired by the commercial Windows program 'Visio,' though more geared towards informal diagrams for casual use. It can be used to draw many different kinds of diagrams. It currently has special objects to help draw entity relationship diagrams, UML diagrams, flowcharts, network diagrams, and many other diagrams. It is also possible to add support for new shapes by writing simple XML files, using a subset of SVG to draw the shape.
It just took me a few minutes to draw the flowchart in your question: