697076fccfa537f930a83ca3b85ab48aa7a3f24a
[hooke.git] / doc / gui.txt
1 *****************
2 The GUI interface
3 *****************
4
5 by Rolf Schmidt <rschmidt@alcor.concordia.ca>
6
7 Enable by selecting `gui` in your :file:`hooke.cfg`.::
8
9     [user interfaces]
10     command line = False
11     gui = True
12
13 Interface
14 =========
15
16 Starting Hooke's GUI for the first time, you will see the central plot
17 area with the current plot surrounded by the following windows (the `F*`
18 key toggles the visibility of the panel):
19
20   # Folders (`F5`)
21   # Playlists (`F6`)
22   # Commands (or Settings and commands) (`F7`)
23   # Properties (`F8`)
24   # Assistant (`F9`)
25   # Results (`F10`)
26   # Output (`F11`)
27   # Note (`F12`)
28
29 .. img:: img/gui_screenshot.jpg
30
31 Initially, the window will be rather small in order to work with small
32 screen resolutions. Adjust the size and position to your liking.
33
34 Above the windows you see the navigation toolbar to switch from one
35 curve to another (next/previous).
36
37 Plot area
38 =========
39
40 The plot area can be customised by setting `preferences` in the core plugin.
41
42 * hide_curve_extension: hides the curve extension in the title of the
43   plot (and from the playlist in the playlists panel)
44 * legend: show or hide the legend
45 * use_zero: display `0` instead of e.g. `0.00` on the axes
46 * decimals (x_decimals, y_decimals): set the decimal places for the x
47   and y axes
48 * prefixes(x_prefix, y_prefix): set the prefix for the x and y axes
49
50 These are global settings. Individual plots can be customised with the
51 same options (except hide_curve_extension) by setting `preferences` in
52 the plot plugin.
53
54 Folders
55 =======
56 Here you can navigate your file system and double click on a saved
57 playlist to open it. You can change the initial folder by modifying
58 `workdir` in the `preferences` (core plugin).
59
60 Playlists
61 =========
62 You can manage several playlists in this window. As the GUI is rather
63 flexible, it is possible to display the curves from different
64 playlists side by side to compare them (relatively handy when
65 comparing different fit parameters). You can double-click a file in
66 the playlist to display it in the plot area. Deleting entire playlists
67 or single files can be accomplished by right-clicking and selecting
68 `Delete`.
69
70 Commands (or Settings and commands)
71 ===================================
72
73 All available commands are listed under their corresponding plugin. In
74 order to see a plugin and its commands, you have to edit
75 :file:`hooke.conf` and enable th plugin in the plugins section.
76 Selecting a plugin or command will display the associated help in the
77 `Assistant`_ window. You can edit the properties of the selected
78 command in the `Properties`_ window and click `Execute` to run the
79 selected command. If you do not need to modify any properties, you can
80 also double-click a command to run it.
81
82 Properties
83 ==========
84 The properties for the command selected in the `Commands`_ window are
85 displayed here. Edit the properties to your satisfaction (some need to
86 be confirmed by hitting enter, this seems to be a problem in
87 wxPropertyGrid) and click the `Execute` button to run the selected
88 command. Floating point values are limited to a certain number of
89 decimals (limitation of wxPropertyGrid?) so be careful when using
90 floating point values.
91
92 Assistant
93 =========
94 Selecting a plugin or command in the `Commands`_ window will display the
95 associated help here. The help for the plugin should give a general
96 description of the plugin. The help for a command should describe the
97 properties available for this command and suggest reasonable default
98 values if possible. Feel free to point out missing help content.
99
100 Results
101 =======
102 The results from the `autopeak` or `multidistance` commands are
103 displayed here. Initially, all results are checked (i.e. visible). If
104 you want to hide a result, simply uncheck it. Hidden curves will not
105 be exported either. You can only display one type of fit result (WLC,
106 FJC, etc.) at a time and you can switch between result types (results
107 plugin - show_results).
108
109 Output
110 ======
111 The Output window serves as a log where pertinent information is
112 displayed. If something does not work the way you expect it, have a
113 look here to see if there is more information available.
114
115 Note
116 ====
117 A note can be added to every curve: enter your note and click
118 `Update note`. With the copylog command (core plugin) you can copy all
119 the files with a note to a different folder.
120
121 General remarks
122 ===============
123 Ignore the text on the `Welcome` tab. This tab is more like a proof of
124 principle and will contain a short how-to in the future (once the
125 howto is written).
126
127 Hooke's GUI will remember the size and position of the main window
128 (stored in ~/.hooke-gui.cfg).  You can arrange the panels any which
129 way you like and save this arrangement as a perspective.
130
131 .. img:: img/gui_perspective.jpg
132
133 Hooke will always start with the last used perspective and you can
134 switch from one perspective to another by selecting a perspective from
135 the perspectives menu. After deleting a perspective, the radio
136 indicator in the perspectives menu disappears (known bug in
137 wxPython). This is only a visual problem and does not affect anything
138 else.
139
140 In order to pan the plot, zoom in and out and export the plot of your
141 force curves, use the plot toolbar under the plot. A more detailed
142 description is available on the
143 [http://matplotlib.sourceforge.net/users/navigation_toolbar.html
144 matplotlib website].
145
146 == Some plugins and commands ==
147   * replot (plot): replots the current force curve from scratch eliminating any secondary plots
148   * fjc/fjcPEG/wlc (fit): do not use any of these commands directly, they are not implemented properly yet. However, the properties you set for these commands are used for the autopeak command
149   * plotmanipulators (core): select the plotmanipulators you want to use and arrange them in the proper order
150   * test (test): use this for testing purposes. You find do_test in hooke.py
151   * clear_results (results): deletes all fitting results from the curve
152   * show_results (results): select which fitting results should be displayed on the plot
153   * overlay (export): exports all retraction curves in a playlist on the same scale. This is achieved by determining the maximum x window and adding x(max) and x(min) to all curves that are shorter than the maximum x window. Make sure to filter your playlist before running this command!
154
155 == Basic analysis and autopeak ==
156 Please follow the steps for basic analysis described [BasicAnalysis here]. Instead of typing in the command at the command-line, select it in the Commands window, set your properties in the Properties window and click on 'Execute'.
157
158 The [Brief_Autopeak_HowTo autopeak] tutorial is also applicable. In Hooke(GUI) you need to setup the type of fit you want to use: in the Properties of the autopeak command (autopeak plugin) select wlc, fjc or fjcPEG from the dropdown list for the fit_function.
159
160 If you run different fits (e.g. WLC and FJC) you can switch the display of the results with the show_results command (results plugin).
161
162 == Brief plugin/Properties tutorial ==
163 Have a look at the files in the _plugins_ folder. The python files contain the plotmanipulators (i.e. plotmanip_NAME), commands (i.e. do_COMMAND) and auxilliary methods. The ini files contain the information for the Properties window. You can already use a fair number of datatypes (e.g. integer, float, boolean, list, color, etc.) and more can be added. Be careful when using floats as there is a limit to the number of decimals (see above). The plotmanipulators and commands should read the properties directly from the ini file instead of having them passed to them as arguments. For the time being, accessor methods are located in hooke.py (e.g. GetBoolFromConfig()).
164 A more detailed description will be made available.