hooke/ui.tex: Fill in user interface section
[thesis.git] / src / hooke / ui.tex
1 \subsection{The user interface}
2 \label{sec:hooke:ui}
3
4 \Hooke commands are written with abstract argument definitions (using
5 the cleverly named \imint{python}|Argument| class).  This makes it
6 easier to add new user interfaces (UIs), because at the a basic level
7 the user interface is just about selecting commands and arguments to
8 pass to them.  In my work on \Hooke, I borrowed from the graphical
9 user interface (GUI) version from Concordia with the original
10 partially-command-line-version from Bologna to produce two independent
11 interfaces: a command line interface (CLI) and the GUI.  You can do
12 exactly the same things in either interface; choosing whichever is
13 most convenient for the task at hand
14 (\cref{fig:hooke:cli,fig:hooke:gui}).  I usually use the CLI for
15 scripting and routine tasks and reproducible analysis, but fire up the
16 GUI when I'm exploring new data.
17
18 \begin{figure}
19   \begin{center}
20 \begin{minted}{console}
21 $ hk.py
22 Hooke version 1.0.0.alpha (Ninken)
23 ...
24 ----
25 hooke> new_playlist --output_playlist mylist
26 <FilePlaylist mylist>
27 Success
28
29 hooke> glob_curves_to_playlist *.jpk
30 <Curve 2009.04.23-15.15.47.jpk>
31 <Curve 2009.04.23-15.21.39.jpk>
32 Success
33
34 hooke> curve_info
35 name: 2009.04.23-15.15.47.jpk
36 path: /.../hooke/test/data/vclamp_jpk/2009.04.23-15.15.47.jpk
37 driver: <hooke.driver.jpk.JPKDriver object at 0x28f9710>
38 note: None
39 command stack: []
40 blocks: 2
41 block names: ['approach', 'retract']
42 block sizes: [(4096, 6), (4096, 4)]
43 Success
44 \end{minted}
45     \caption{Creating a playlist with two JPK files in the Hooke
46       command line interface.\label{fig:hooke:cli}}
47   \end{center}
48 \end{figure}
49
50 \begin{figure}
51   \begin{center}
52     \includegraphics[width=\textwidth]{figures/binary/hooke-gui}
53     \caption{Creating a playlist with two JPK files in the graphical
54       Hooke interface.  You can see the output of the last \gui{curve
55         info} call, which matches the output from the command line
56       version (\cref{fig:hooke:cli}).  This screenshot is a bit
57       cramped (to fit on a printed page), but the
58       \href{http://www.wxwidgets.org}{wxWidgets} GUI toolkit provides
59       automatic support for interactively rearranging and resizing
60       panels.  The tree of commands is in the upper left corner.
61       After you select a command, the table of argument in the upper
62       right corner is populated with default values, which you can
63       adjust as you see fit.  The \gui{Playlist} panel provides an
64       easier interface for navigating to different playlists and
65       curves than the using \gui{jump to playlist} and \gui{jump to
66         curve} commands.\label{fig:hooke:gui}}
67   \end{center}
68 \end{figure}