GraphicalInterface

Why a graphical interface?

  • It may be easier for newbies
  • It may provide powerful functionality that would be inconvenient with the command-line interface

Current projects

There are three students of the BTU Cottbus working on a new darcs GUI application based on the Grapefruit FRP library. They are supervised by Wolfgang Jeltsch. See http://haskell.org/haskellwiki/Patchwork for more details.

GUI ideas

  • a patch dependency visualiser
  • an iTunes-like interface to patches (click on the 'author' column, and you see the patches sorted by author, for example)
  • click on a patch and you get some subtle feedback on all the patches it depends on (for example, they change colour)
  • maybe some kind of help resolving conflicts? (no clear ideas)
  • A file browser that highlights files not added to the repository, files that have unrecorded changes, etc.
  • Diff visualisation
  • MacOS X - integration with FileMerge?
  • a generic diff visualiser, which would allow to pick-and-choose lines of code into a third file, a la Visual Source Safe and the open-source kdiff3.
  • There should be two ways to use the darcs gui. One is to have a seperate gui for each command, so that you can run something like darcs whatsnew -gui. The other is to have a standalone gui.
  • The standalone gui could take a patch-oriented view towards repositories, rather than a task oriented one. That is, rather than decide you want to record some patches and then select the patches (for instance), you select a bunch of patches and decide you want to record them. (This is inspired from one of the patchworks' screenshots)

TODO

  • File selection: add, remove, move (this requires some thought) -not implemented
  • Replace - not implemented
  • Set pref - not implemented
  • Repository selection - not implemented (for standalone gui only)
  • Select a repository - should be able to type in a repository path (remote), or use file dialogue to select a local one, or choose from _darcs/prefs/repositories
  • Interaction with SSH - password or passphrase, maybe ssh-agent
  • Radio buttons for multi-record selection (pending also Ganesh looking into multi-record)

Implementation ideas

  • Implement a darcs --gui flag that launches a standalone darcs gui. Make darcs run as if it had the darcs --gui flag if it is called as darcsGui (this will be useful for the double-clickable executable). Not that the darcs --gui flag is not the same as the --gui flag for arguments.
  • We look into Blobs as a graphical tool for visualising patch dependencies

Things we could use...

  • A gui branch of darcs (somebody just needs to set this up on a server somewhere)
  • A mailing list so that we don't annoy everybody on darcs-users or darcs-devel?
  • Some people interested in hacking on this?

See also