dag: Elide the 'author' text

Allow the text in the 'author' label to elide itself when resized.
The email hyperlinks learned to hide when the widget gets too thin.

Signed-off-by: David Aguilar <davvid@gmail.com>
remote: Fix the 'push' action

It was running 'fetch' instead.

Signed-off-by: David Aguilar <davvid@gmail.com>
dag: Misc. UI improvements

Make the selection color subtler and more pleasing.
Swap the J / shift-J hotkeys so that going "down"
follows the oldest ancestor.

Signed-off-by: David Aguilar <davvid@gmail.com>
dag: Make selected nodes bright orange

This makes it very easy to see which nodes are selected.

Signed-off-by: David Aguilar <davvid@gmail.com>
qt: Use 'Qt' instead 'QtCore.Qt'

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets: Factor completion widgets out into a standalone module

Create a standalone widgets.completion module for GitRefLineEdit
and the GitLogLineEdit widgets.  These widgets provide tab completion
for git refs and filenames.

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets.createbranch: Tab-complete the `revision` field

Signed-off-by: David Aguilar <davvid@gmail.com>
dag: Use QColor.darker() instead of hard-coding values

Tweak the colors to add slightly more contrast.
Rename constants to make things easier to read.

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets: Use 'Qt' instead of 'QtCore.Qt' consistently

...and other small style fixups.

Signed-off-by: David Aguilar <davvid@gmail.com>
guicmds: Provide a default value for diff actions

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets.createbranch: Default to the current branch

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets.completion: Close the popup when the parent widget goes away

The completion popup can sometimes stick around when a dialog is
closed using the escape key.  Close the popup window whenever the
parent widget is hidden.

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets.createtag: Add hints and tab completion

Add tab completion to the revision field.
Add hints to the message and name fields.

Signed-off-by: David Aguilar <davvid@gmail.com>
dag: Focus the graph view on startup

Make the navigation shortcuts available by focusing the graph
widget after the history is loaded.

Signed-off-by: David Aguilar <davvid@gmail.com>
main: Focus the status widget by default

Makes the navigation hotkeys active at startup by pre-focusing
the status widget.

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets.cfgactions: Sort user-configured GUI tools

Actions are easier to find when they are listed alphabetically.

Signed-off-by: David Aguilar <davvid@gmail.com>
ssh-askpass: Pickup fixes from upstream

Signed-off-by: David Aguilar <davvid@gmail.com>
dag: Make 'parent' the last argument to the update thread

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets.createbranch: Fetch remote in a background thread

Finish the implementation for 'reset' and 'fetch remote branch'.
Do updates in a background thread; anything less would be uncivilized.

Signed-off-by: David Aguilar <davvid@gmail.com>
main.view: Load GUI state in the main thread

We have to update in the main thread anyways so there's really little
benefit loading the GUI state in the background.

There's no perceptible difference so simplify the code by loading
the GUI state immediately during startup.

Signed-off-by: David Aguilar <davvid@gmail.com>