Prior to this commit, the `StructureFromMotion` and `SfMTransform` nodes'
were directly set without using the dedicated command. This meant that
the actions to set those attributes through the Image Gallery menu were
not added to the stack of commands, and could not be undone.
In addition to the existing "Remove" menu action in the Image Gallery that
deletes the currently selected image, add a "Remove All Images" menu
action that performs the same action as "Clear Images" from the "File"
menu.
The "Del" key was used as a shortcut to remove the currently selected
image when the Image Gallery has the focus, "Shift+Del" can now also be
used to remove all the images at once.
Add a "SfM: Define Initial Pair" sub-menu in the Image Gallery menu that is
only enabled if the currently active group contains a StructureFromMotion
node. Clicking "A" or "B" will automatically set the selected image's view
ID as a part of the initial pair.
As we rely on the thumbnails cache, the images are already downscaled at
a small resolution. So there is no more need to force a max resolution
on the Qml Image.
Some QML properties access exposed Python objects that may or may not
be null upon their access. When these objects are accessed while null,
QML issues "TypeError" warnings. These warnings have no functional
impact as QML correctly handles trying to access null objects, but can
spam the logs.
This commit aims at fixing all these warnings by checking that the
Python objects are not null before being accessed.