You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: stylebook/index.md
+92-93Lines changed: 92 additions & 93 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,43 +9,42 @@ layout: default
9
9
10
10
{{page.description}}
11
11
12
-
This book is meant to document the general style and conventions of the FreeCAD User Interface. Guidelines, terminology, and philosophies described here will be used to justify changes in the current UI in order to make the overall user experience more consistent, predictable, intuitive, and attractive in the future.
12
+
This book is meant to document the general style and conventions of the FreeCAD User Interface. Guidelines, terminology, and philosophies described here will be used to justify changes in the current UI in order to make the overall user experience more consistent, predictable, intuitive, and attractive in the future.
13
13
14
-
In the short term, this book will undergo massive change and reorganization. It will also serve as an important part of a larger discussion. Feel free to link to existing issues and pull requests, and projects.
15
-
16
-
In the long term, the book should settle down and become primarily a resource for developers and designers to refer to. Most links should be removed.
14
+
In the short term, this book surely will undergo massive changes and reorganization. It will also serve as an important part of a larger discussion within the FreeCAD community. Feel free to link to existing issues and pull requests, and projects.
17
15
16
+
In the long term, the book should settle down and become primarily a resource for developers and designers to refer to. Most links should be removed.
18
17
19
18
## Parts of the UI
20
19
21
-
![Parts of the UI]()
20
+

22
21
23
-
1. Workbench switcher
22
+
1. Workbench Switcher
24
23
2. Toolbars
25
-
3. Toolbar area
26
-
4.Comboview
27
-
5.Tree
24
+
3. Toolbar Area
25
+
4.ComboView
26
+
5.TreeView
28
27
6. Property Pane
29
-
7. The MDI view
28
+
7. The MDI View
30
29
8. The MDI Selector
31
-
9. The Report view
32
-
10. The python console
33
-
11. Status Bare
34
-
12.Nav Cube
30
+
9. The Report View
31
+
10. The Python Console
32
+
11. Status Bar
33
+
12.Navigation Cube
35
34
36
35
### Workbench Switcher
37
36
38
-
The workbench switcher is an important control to general FreeCAD workflow. It is the primary way for the user to switch workbench contexts.
37
+
The workbench switcher is an important control to the general FreeCAD workflow. It is the primary way for the user to switch workbench contexts.
39
38
40
39
#### Guidelines
41
40
42
-
1. The workbench switcher should always be available to the user. It shouldn’t jump around.
41
+
1. The workbench switcher should always be available to the user. It shouldn’t jump around.
43
42
44
43
#### Problems
45
44
46
-
1. The switcher itself has no accelerator key associated with it. The user must click with a mouse.
47
-
2. The first ten workbenches are automatically assigned an accelerator of W <#>. The user has no control over the assignment of accelerators
48
-
3. By default, all workbenches installed in FreeCAD are shown. This includes workbenches that are of marginal value or seldom used, especially by new users. This contributes to confusion since users don’t know yet which workbenches they need to use.
45
+
1. The switcher itself has no accelerator key associated with it. The user must click with a mouse.
46
+
2. The first ten workbenches are automatically assigned an accelerator of W <#>. The user has no control over the assignment of accelerators.
47
+
3. By default, all workbenches installed in FreeCAD are shown. This includes workbenches that are of marginal value or seldom used, especially by new users. This contributes to confusion since users don’t know yet which workbenches they need to use.
49
48
50
49
### Toolbars
51
50
@@ -63,21 +62,21 @@ The workbench switcher is an important control to general FreeCAD workflow. It
63
62
#### Guidelines
64
63
65
64
1. Toolbars provide convenient access to frequently used commands. They do this at the expense of permanently occupying screen real space.
66
-
2. Too many toolbars creates visual clutter. All tools compete for the users attention simultaneously. They are not context aware.
67
-
3. Toolbars group related commands
68
-
4. Anticipate the user disable the toolbar.
69
-
5. Group locally similar tools into a toolgroup
70
-
6. All tools in a toolbar should have a translatable and useful tooltip
71
-
7. The toolbar should have a translatable and userful tooltip
72
-
8. A toolbar should contain a minimum number of tools, ideally less than seven. Longer toolbars provide fewer options for customization and often get shortened or clipped offscreen. They also increase cognitive burden since the user has to process the group as a whole.
65
+
2. Too many toolbars create visual clutter. All tools compete for the users attention simultaneously. They are not context aware.
66
+
3. Toolbars group related commands.
67
+
4. Anticipate the user might disable the toolbar.
68
+
5. Group locally similar tools into a toolgroup.
69
+
6. All tools in a toolbar should have a translatable and useful tooltip.
70
+
7. The toolbar itself should have a translatable and useful tooltip.
71
+
8. A toolbar should contain a minimum number of tools, ideally less than seven. Longer toolbars provide fewer options for customization and often get shortened or clipped offscreen. They also increase cognitive burden since the user has to process the group as a whole.
73
72
74
73
#### Problems
75
74
76
-
1. Toolbars are the developers go-to UI element. They are simple to code and useful during development. Asa result they are often overused and visually cluttered.
75
+
1. Toolbars are the developers go-to UI element. They are simple to code and useful during development. As a result they are often overused and visually cluttered.
77
76
78
77
### Toolbar Area
79
78
80
-
The toolbar area contains toolbars. Some of the toolbars are available everywhere and some are workbench specific.
79
+
The toolbar area contains toolbars. Some of the toolbars are available everywhere and some are workbench specific.
81
80
82
81
#### Guidelines
83
82
@@ -86,196 +85,196 @@ The toolbar area contains toolbars. Some of the toolbars are available everywhe
86
85
87
86
#### Problems
88
87
89
-
1. Toolbars can be rearranged on a per-workbench basis and the arrangement is meant to persist between sessions. This is intended to be a feature but often acts like a bug. The user arranges workbenchs (including those that appear on multiple workbenches) while in one bench. Then switches to anothe bench and the toolbars move to different locations.
88
+
1. Toolbars can be rearranged on a per-workbench basis and the arrangement is meant to persist between sessions. This is intended to be a feature but often acts like a bug. The user arranges toolbars to his liking (including those toolbars that appear on multiple workbenches) while in one workbench. After a switch to another workbench it can happen that the toolbars rearrange in a different order.
90
89
91
90
### ComboView
92
91
93
-

92
+
The combo view contains the tree view and the task panel area.
93
+
94
+

94
95
95
96
#### Guidelines
96
97
97
-
1. Item
98
+
tbd
98
99
99
100
#### Problems
100
101
101
-
1. Item
102
+
tbd
102
103
103
-
### Tree
104
+
### TreeView
104
105
105
106
#### Guidelines
106
107
107
-
1. Item
108
+
tbd
108
109
109
110
#### Problems
110
111
111
-
1. Item
112
+
tbd
112
113
113
114
### Property Pane
114
115
115
-
The property pane shows properties of the selected object. Properties are in groups. Right clicking give an ‘autoexpand’ option and a ‘show all’ option. The developer has discretion about which properties are automatically shown. In practice almost all options are available because the developer probably hasn’t thought about it. Many of these could probably be hidden by default to make the list shorter and less cluttered.
116
+
The property pane shows properties of the selected object. Properties are sorted in groups. Right clicking gives an `Autoexpand` option and a `Show All` option. The developer has discretion about which properties are automatically shown. In practice almost all options are available because the developer probably hasn’t thought about it. Many of these could probably be hidden by default to make the list shorter and less cluttered.
116
117
117
118
#### Guidelines
118
119
119
-
1. Item
120
+
tbd
120
121
121
122
#### Problems
122
123
123
-
1. Item
124
+
tbd
124
125
125
126
### MDI View
126
127
127
-
The MDI view has the most usable space. This is almost always the 3D model except for spreadsheet and TechDraw. It could be used for other tasks when the user’s focus is needed for a long time or to give a maximum view of something (raytraced image)
128
+
The MDI view has the most usable space. This is almost always the 3D model except for spreadsheets and the TechDraw workbench. It could be used for other tasks when the user’s focus is needed for a long time or to give a maximum view of something (raytraced image).
128
129
129
130
#### Guidelines
130
131
131
-
1. Item
132
+
tbd
132
133
133
134
#### Problems
134
135
135
-
1. Item
136
+
tbd
136
137
137
138
### MDI Selector
138
139
139
140
#### Guidelines
140
141
141
-
1. Item
142
+
tbd
142
143
143
144
#### Problems
144
145
145
-
1. Item
146
+
tbd
146
147
147
148
### Report View
148
149
149
150
#### Guidelines
150
151
151
-
1. Item
152
+
tbd
152
153
153
154
#### Problems
154
155
155
-
1. Item
156
+
tbd
156
157
157
158
### Python Console
158
159
159
160
#### Guidelines
160
161
161
-
1. Item
162
+
tbd
162
163
163
164
#### Problems
164
165
165
-
1. Item
166
+
tbd
166
167
167
168
### Status Bar
168
169
169
-
The status bar is the only part of the UI that is always the same regardless of workbench, task or mode. That makes it special.
170
+
The status bar is the only part of the UI that is always the same regardless of workbench, task or mode. That makes it special.
170
171
171
172
#### Guidelines
172
173
173
-
1. The real estate is very limited so it should be protected and used very sparingly and wisely. For example the mouse model switcher probably doesn’t need a label. An icon and tooltip is sufficient and would use only 1/4 of the space it currently occupies.
174
+
1. The real estate is very limited so it should be protected and used very sparingly and wisely. For example the mouse model switcher probably doesn’t need a label. An icon with a tooltip is sufficient and would use only 1/4 of the space it currently occupies.
174
175
175
176
#### Problems
176
177
177
-
1. Item
178
-
178
+
tbd
179
179
180
-
### Nav Cube
180
+
### Navigation Cube
181
181
182
182
General
183
183
184
184
#### Guidelines
185
185
186
-
1. Item
186
+
tbd
187
187
188
188
#### Problems
189
189
190
-
1. Item
191
-
192
-
The combo view contains the tree and the task panel area
193
-
194
-
Goal for combo view :
190
+
tbd
195
191
196
-

197
-
198
-
199
-
### Task view
192
+
### Task View
200
193
201
194
Each tool should put all of it’s settings in a single task box.
202
195
203
196
Task panels should never require scrolling.
204
197
205
-
Double clicking on an item in the tree will show a task panel if one is available. If there was a task panel used to create an object, double clicking should show THE SAME task panel to edit the object. (I’m looking at YOU, Draft workbench! You too, Arch)
198
+
Double clicking on an item in the tree view will show a task panel if one is available. If there was a task panel used to create an object, double clicking should show THE SAME task panel to edit the object. _(I’m looking at YOU, Draft workbench! You too, Arch)_
206
199
207
-
Task panels should always produce a valid output if ‘OK’ button is pressed. If a valid output isn’t possible, don’t enable the ‘ok’ button. ->This is interesting but I wonder how it could be done.
200
+
Task panels should always produce a valid output if the `OK` button is pressed. If a valid output isn’t possible, don’t enable the ‘ok’ button. ->_This is interesting but I wonder how it could be done._
208
201
209
-
Task panels should always start with valid defaults (e.g. the shapestring dialog should have a default font. It should preview the text in the 3D window.
210
-
211
-
Task panels should always preview their results in the 3d window. If preview is too computationally intense, provide an ‘apply’ button to generate a preview. (I’m looking at YOU, shapestring tool!)
202
+
Task panels should always start with valid defaults (e.g. the shapestring dialog should have a default font. It should preview the text in the 3D window.
212
203
204
+
Task panels should always preview their results in the 3d window. If a preview is computationally too intense, provide an `Apply` button to generate a preview. _(I’m looking at YOU, shapestring tool!)_
Reference: [FreeCAD Wiki - Selection Methods](https://wiki.freecad.org/selection_methods)
218
209
219
-

210
+

220
211
221
212
#### Terms
222
213
223
-
1. Selection: the set of objects and subojects that the user has selected.
214
+
1. Selection: the set of objects and subobjects that the user has selected
224
215
2. Pre-selection: the object directly under the pointer which will be added to the selection if the user clicks
225
-
3. Selection View. The panel which allows the user to see the selection items
226
-
4. Greedy selection. Mode in which additional items are added to the selection without requiring a modifier key
227
-
5. Selection gateLogic which can be initiated via code that controls which objects may be selected.
228
-
6. Selection observerLogic which can be initiated via code that watches the selection. It can be used to trigger action under specific selection conditions.
216
+
3. Selection View: The panel which allows the user to see the selection items
217
+
4. Greedy selection: Mode in which additional items are added to the selection without requiring a modifier key
218
+
5. Selection gate: Logic which can be initiated via code that controls which objects may be selected
219
+
6. Selection observer: Logic which can be initiated via code that watches the selection. It can be used to trigger actions under specific selection conditions.
229
220
230
221
#### Guidelines
231
222
232
-
1. Selection gates and observers are powerful tools for adjusting the affordances of the GUI and providing signals. They must be used with care because they can adversely affect the performance of the GUI.
223
+
1. Selection gates and observers are powerful tools for adjusting the affordances of the GUI and providing signals. They must be used with care because they can adversely affect the performance of the GUI.
233
224
2. If the user is asked to select multiple features, he should be able to select by clicking them, and unselect them as well by clicking on selected features.
234
225
235
-
236
226
## Context Menus
237
227
238
-
some text
228
+
tbd
239
229
240
230
### Guidelines
241
231
232
+
tbd
242
233
243
234
## Navigation
244
235
245
236
### Elements
246
237
247
-
1.Nav Cube
238
+
1.Navigation Cube
248
239
2. Standard Views
249
-
3. Keyboard accelerators
240
+
3. Keyboard Accelerators
241
+
242
+
#### Navigation Cube
243
+
244
+
tbd
245
+
246
+
#### Standard Views
247
+
248
+
tbd
250
249
251
-
#### Nav cube
250
+
#### Keyboard Accelerators
251
+
252
+
tbd
252
253
253
-
#### Standard views
254
254
## Widgets
255
255
256
256
#### Guidelines
257
257
258
-
1. FreeCAD has a custom QT widget for displaying units. The control will convert the displayed units based on the users selected unit schema.
259
-
258
+
1. FreeCAD has a custom QT widget for displaying units. The control will convert the displayed units based on the users selected unit schema.
260
259
261
260
## Tables
262
261
263
-
When a table is used to display rows of items with multiple elements, such as the workbench preference page, the first column should be the icon/name of the element. This first column can be preceded by a checkbox only if it is an activation checkbox. The rest of UI elements should be put after, in an order that makes the most sense.
262
+
When a table is used to display rows of items with multiple elements, such as the workbench preference page, the first column should be the icon/name of the element. This first column can be preceded by a checkbox only if it is an activation checkbox. The rest of the UI elements should follow after, in an order that makes the most sense to the user.
264
263
265
264
## Terminology
266
265
267
-
FreeCAD has a major terminology problem for new users. We have a Part workbench that doesn't make Parts and a Part Design workbench that isn't used to design Parts. We have Pads and Extrudes, Pockets and Cuts, Fuses and Unions, etc. We have a Part container and a Group container(?) but no core functions to populate a container (ex a core assembly function).
266
+
FreeCAD has a major terminology problem for new users. We have a Part workbench that doesn't make Parts and a Part Design workbench that isn't used to design Parts. We have Pads and Extrudes, Pockets and Cuts, Fuses and Unions, etc. We have a Part container and a Group container(?) but no core functions to populate a container (e.g. a core assembly function).
268
267
269
268
## Philosophy
270
-
There should be one-- and preferably only one --obvious way to do it. Developers are notorious for giving users options thinking that is a good thing. In reality, every tool takes time to understand. Given two nearly identical implementatoins of hte same thing, the user has to figure out how they differ. Don’t make the user think.
271
269
270
+
There should be one -- and preferably ONLY one -- obvious way to do a task. Developers are notorious for giving users options thinking that is a good thing. In reality, every tool takes time to understand. Given two nearly identical implementations of the same workflow, the user has to figure out how they differ. Don’t make the user think.
272
271
273
272
## Resources
274
-
Decent book. It’s mostly about web usability but the core ideas are sound.
[Don't Make Me Think: A Common Sense Approach to Web Usability](https://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758) by Steve Krug - A decent book mostly about web usability but the core ideas are sound.
277
+
278
+
[Laws of UX: Using Psychology to Design Better Products & Services](https://www.amazon.com/Laws-UX-Psychology-Products-Services-ebook/dp/B087F24RJB) by Jon Yablonski
279
279
280
-
Classic - great introduction to design concepts like affordances and signals
[The Design of Everyday Things](https://www.amazon.com/Design-Everyday-Things-Revised-Expanded-ebook/dp/B00E257T6C) by Donald A. Norman - A great introduction to design concepts like affordances and signals.
0 commit comments