Merge branch 'master' of https://github.com/fontforge/fontforge
Merge branch 'master' of https://github.com/fontforge/fontforge
Merge branch 'master' of https://github.com/fontforge/fontforge
working towards keeping an .sfd or .sfdir extension in the save/save as
dialogs.
Merge branch 'master' of https://github.com/fontforge/fontforge
Don't allow the user to change the extension in the save as dialog to something like ttf
in the hopes of generating a font rather than an SFD format file.
Merge branch 'master' of https://github.com/fontforge/fontforge
Merge branch 'master' of https://github.com/fontforge/fontforge
Prefs, AutoGoTO should be off by default
Lets make the point info window not a modal one.

If you have many of these open they track their respective point in
the charview if that point is moved. If the charview is closed then
all the point info dialogs are closed too.
Merge branch 'master' of https://github.com/fontforge/fontforge
Merge branch 'master' of https://github.com/fontforge/fontforge
Merge branch 'master' of https://github.com/fontforge/fontforge
Keep undo and redo state in sfd files.

The undo and redo information are stored and loaded from autosave files.
This allows you to not only recover from a crash but also undo some recent
changes if desired.

This also allows SFD files to contain the undo and redo stacks
which might be handy for tutorials, workshops and the like.

bring in the patch ready for a git pull request
This is a much nicer solution. The problem, to a degree is pushed
higher into the code, so that the current *and* old filename are
available to the callback. This makes it possible to see if the nasty
user has hit backspace to delete the . char in the extension and veto
that attempt.
On startup, check that ~/.FontForge/python directory exists and if not, create it
Metrics window, Metrics Menu should have all the same functions as
Glyph window, Metrics Menu (and vice versa).
Removed lstat and mkdir return value testing as requested. This makes
the ensure function a softensure really, and the return value from it
is somewhat redundant so that is removed now too.
Remove all the tool options and layer name options from the context
menu shown when in the Glyph window you right click a point.
Allow the menu shortcuts to be set from one or more "hotkeys" files.

The interesting parts are in gmenu.c and hotkeys.c

To use this you will need to copy
hotkeys/en
to
$prefix/share/fontforge/hotkeys/en

As there is an autotools transition happening I didn't create
makefile.in rules to install the hotkeys files.

Each window, the glyph, fontview, and metrics windows all have a new string
type assigned to them. Hotkeys can then be assigned to menu items by selecting
them in the key of the hotkey and the remainder defines the key to activate that
action. For example:
CharView.Menu.Point.Curve: 7
Will select point/curve from the menu when you hit "7".

The menu prefix is used to allow stand alone hotkeys to also exist. So in a
subsequent patch we might have
CharView.Hotkey.SpiroMode: ctl+5
to select an action to perform which is not exposed in the menu.

The hotkeys files are loaded from a subdirectory of the share
directory in your $prefix. First your full locale is tried, perhaps
starting with en_AU.UTF-8 and then all dot and _ chars are trimmed one
at a time. So for me I would eventually load the "en" hotkeys file.

After these system wide hotkeys are loaded the ~/.FontForge/hotkeys file
is loaded allowing the user to overwrite the system selections.

The menu handling code is updated to work out what the hotkeys are for
each menu item and display what is currently set for the hotkey. So
for example, a binding like
CharView.Menu.File.Open: Ctl+g
will show the ^g in the menu as the description of the file/open menu
item.

Some initial provision for saving is there, but it saves to a /tmp/
file at the moment. The idea is to allow the hotkeys to be changed by
fontforge itself and customizations are automatically saved to only
~/.FontForge/hotkeys

This is why loadHotkeysFromFile() has the isUserDefined flag which is
retained for each individual hotkey. So then a save() of the hotkeys
can only save user defined hotkeys back to their ~/.FontForge/hotkeys
file.

This pull request is not clean. Not final. Not designed for merge. It
is up here so that folks can easily see the code and we can work out
where things need to go for an initial merge.

Still todo:

* autofools for the hotkeys subdirectory.
* other locales than english need hotkeys files.