boris-behav-obs 8.27.6__py2.py3-none-any.whl → 8.27.7__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- boris/README.TXT +22 -0
- boris/add_modifier.ui +330 -0
- boris/converters.ui +289 -0
- boris/core.py +1 -1
- boris/core.qrc +67 -0
- boris/core.ui +1585 -0
- boris/edit_event.ui +240 -0
- boris/icons/logo_eye.ico +0 -0
- boris/observation.ui +848 -0
- boris/param_panel.ui +379 -0
- boris/preferences.py +2 -2
- boris/preferences.ui +588 -0
- boris/project.py +23 -5
- boris/project.ui +1074 -0
- boris/project_functions.py +19 -10
- boris/utilities.py +13 -0
- boris/version.py +2 -2
- boris_behav_obs-8.27.7.dist-info/LICENSE.TXT +674 -0
- {boris_behav_obs-8.27.6.dist-info → boris_behav_obs-8.27.7.dist-info}/METADATA +1 -1
- {boris_behav_obs-8.27.6.dist-info → boris_behav_obs-8.27.7.dist-info}/RECORD +24 -12
- {boris_behav_obs-8.27.6.dist-info → boris}/LICENSE.TXT +0 -0
- {boris_behav_obs-8.27.6.dist-info → boris_behav_obs-8.27.7.dist-info}/WHEEL +0 -0
- {boris_behav_obs-8.27.6.dist-info → boris_behav_obs-8.27.7.dist-info}/entry_points.txt +0 -0
- {boris_behav_obs-8.27.6.dist-info → boris_behav_obs-8.27.7.dist-info}/top_level.txt +0 -0
boris/preferences.ui
ADDED
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<ui version="4.0">
|
|
3
|
+
<class>prefDialog</class>
|
|
4
|
+
<widget class="QDialog" name="prefDialog">
|
|
5
|
+
<property name="windowModality">
|
|
6
|
+
<enum>Qt::WindowModal</enum>
|
|
7
|
+
</property>
|
|
8
|
+
<property name="geometry">
|
|
9
|
+
<rect>
|
|
10
|
+
<x>0</x>
|
|
11
|
+
<y>0</y>
|
|
12
|
+
<width>719</width>
|
|
13
|
+
<height>554</height>
|
|
14
|
+
</rect>
|
|
15
|
+
</property>
|
|
16
|
+
<property name="windowTitle">
|
|
17
|
+
<string>Preferences</string>
|
|
18
|
+
</property>
|
|
19
|
+
<layout class="QGridLayout" name="gridLayout">
|
|
20
|
+
<item row="0" column="0">
|
|
21
|
+
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
22
|
+
<item>
|
|
23
|
+
<widget class="QTabWidget" name="tabWidget">
|
|
24
|
+
<property name="enabled">
|
|
25
|
+
<bool>true</bool>
|
|
26
|
+
</property>
|
|
27
|
+
<property name="currentIndex">
|
|
28
|
+
<number>5</number>
|
|
29
|
+
</property>
|
|
30
|
+
<widget class="QWidget" name="tab_project">
|
|
31
|
+
<attribute name="title">
|
|
32
|
+
<string>Project</string>
|
|
33
|
+
</attribute>
|
|
34
|
+
<layout class="QVBoxLayout" name="verticalLayout_5">
|
|
35
|
+
<item>
|
|
36
|
+
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
|
37
|
+
<item>
|
|
38
|
+
<widget class="QLabel" name="label">
|
|
39
|
+
<property name="text">
|
|
40
|
+
<string>Default project time format</string>
|
|
41
|
+
</property>
|
|
42
|
+
</widget>
|
|
43
|
+
</item>
|
|
44
|
+
<item>
|
|
45
|
+
<widget class="QComboBox" name="cbTimeFormat">
|
|
46
|
+
<item>
|
|
47
|
+
<property name="text">
|
|
48
|
+
<string>seconds</string>
|
|
49
|
+
</property>
|
|
50
|
+
</item>
|
|
51
|
+
<item>
|
|
52
|
+
<property name="text">
|
|
53
|
+
<string>hh:mm:ss.mss</string>
|
|
54
|
+
</property>
|
|
55
|
+
</item>
|
|
56
|
+
</widget>
|
|
57
|
+
</item>
|
|
58
|
+
</layout>
|
|
59
|
+
</item>
|
|
60
|
+
<item>
|
|
61
|
+
<layout class="QHBoxLayout" name="horizontalLayout_15">
|
|
62
|
+
<item>
|
|
63
|
+
<widget class="QLabel" name="label_6">
|
|
64
|
+
<property name="text">
|
|
65
|
+
<string>Auto-save project every (minutes)</string>
|
|
66
|
+
</property>
|
|
67
|
+
</widget>
|
|
68
|
+
</item>
|
|
69
|
+
<item>
|
|
70
|
+
<widget class="QSpinBox" name="sbAutomaticBackup">
|
|
71
|
+
<property name="minimum">
|
|
72
|
+
<number>-10000</number>
|
|
73
|
+
</property>
|
|
74
|
+
<property name="maximum">
|
|
75
|
+
<number>10000</number>
|
|
76
|
+
</property>
|
|
77
|
+
<property name="value">
|
|
78
|
+
<number>10</number>
|
|
79
|
+
</property>
|
|
80
|
+
</widget>
|
|
81
|
+
</item>
|
|
82
|
+
</layout>
|
|
83
|
+
</item>
|
|
84
|
+
<item>
|
|
85
|
+
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
|
86
|
+
<item>
|
|
87
|
+
<widget class="QLabel" name="label_3">
|
|
88
|
+
<property name="text">
|
|
89
|
+
<string>Separator for behavioural strings (events export)</string>
|
|
90
|
+
</property>
|
|
91
|
+
</widget>
|
|
92
|
+
</item>
|
|
93
|
+
<item>
|
|
94
|
+
<widget class="QLineEdit" name="leSeparator">
|
|
95
|
+
<property name="text">
|
|
96
|
+
<string>|</string>
|
|
97
|
+
</property>
|
|
98
|
+
</widget>
|
|
99
|
+
</item>
|
|
100
|
+
</layout>
|
|
101
|
+
</item>
|
|
102
|
+
<item>
|
|
103
|
+
<widget class="QCheckBox" name="cbCheckForNewVersion">
|
|
104
|
+
<property name="text">
|
|
105
|
+
<string>Check for new version and news</string>
|
|
106
|
+
</property>
|
|
107
|
+
</widget>
|
|
108
|
+
</item>
|
|
109
|
+
<item>
|
|
110
|
+
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
|
111
|
+
<item>
|
|
112
|
+
<widget class="QLabel" name="lb_hwdec">
|
|
113
|
+
<property name="text">
|
|
114
|
+
<string>MPV player hardware video decoding</string>
|
|
115
|
+
</property>
|
|
116
|
+
</widget>
|
|
117
|
+
</item>
|
|
118
|
+
<item>
|
|
119
|
+
<widget class="QComboBox" name="cb_hwdec"/>
|
|
120
|
+
</item>
|
|
121
|
+
</layout>
|
|
122
|
+
</item>
|
|
123
|
+
<item>
|
|
124
|
+
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
|
125
|
+
<item>
|
|
126
|
+
<widget class="QLabel" name="lb_project_file_indent">
|
|
127
|
+
<property name="text">
|
|
128
|
+
<string>Project file indentation type</string>
|
|
129
|
+
</property>
|
|
130
|
+
</widget>
|
|
131
|
+
</item>
|
|
132
|
+
<item>
|
|
133
|
+
<widget class="QComboBox" name="combo_project_file_indentation"/>
|
|
134
|
+
</item>
|
|
135
|
+
</layout>
|
|
136
|
+
</item>
|
|
137
|
+
<item>
|
|
138
|
+
<spacer name="verticalSpacer_2">
|
|
139
|
+
<property name="orientation">
|
|
140
|
+
<enum>Qt::Vertical</enum>
|
|
141
|
+
</property>
|
|
142
|
+
<property name="sizeHint" stdset="0">
|
|
143
|
+
<size>
|
|
144
|
+
<width>20</width>
|
|
145
|
+
<height>40</height>
|
|
146
|
+
</size>
|
|
147
|
+
</property>
|
|
148
|
+
</spacer>
|
|
149
|
+
</item>
|
|
150
|
+
</layout>
|
|
151
|
+
</widget>
|
|
152
|
+
<widget class="QWidget" name="tab_observations">
|
|
153
|
+
<attribute name="title">
|
|
154
|
+
<string>Observations</string>
|
|
155
|
+
</attribute>
|
|
156
|
+
<layout class="QVBoxLayout" name="verticalLayout">
|
|
157
|
+
<item>
|
|
158
|
+
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
|
159
|
+
<item>
|
|
160
|
+
<widget class="QLabel" name="label_4">
|
|
161
|
+
<property name="text">
|
|
162
|
+
<string>Fast forward/backward value (seconds)</string>
|
|
163
|
+
</property>
|
|
164
|
+
</widget>
|
|
165
|
+
</item>
|
|
166
|
+
<item>
|
|
167
|
+
<widget class="QSpinBox" name="sbffSpeed">
|
|
168
|
+
<property name="minimum">
|
|
169
|
+
<number>0</number>
|
|
170
|
+
</property>
|
|
171
|
+
<property name="maximum">
|
|
172
|
+
<number>10000</number>
|
|
173
|
+
</property>
|
|
174
|
+
<property name="value">
|
|
175
|
+
<number>10</number>
|
|
176
|
+
</property>
|
|
177
|
+
</widget>
|
|
178
|
+
</item>
|
|
179
|
+
</layout>
|
|
180
|
+
</item>
|
|
181
|
+
<item>
|
|
182
|
+
<widget class="QCheckBox" name="cb_adapt_fast_jump">
|
|
183
|
+
<property name="text">
|
|
184
|
+
<string>Adapt the fast forward/backward jump to playback speed</string>
|
|
185
|
+
</property>
|
|
186
|
+
</widget>
|
|
187
|
+
</item>
|
|
188
|
+
<item>
|
|
189
|
+
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
|
190
|
+
<item>
|
|
191
|
+
<widget class="QLabel" name="label_5">
|
|
192
|
+
<property name="text">
|
|
193
|
+
<string>Playback speed step value</string>
|
|
194
|
+
</property>
|
|
195
|
+
</widget>
|
|
196
|
+
</item>
|
|
197
|
+
<item>
|
|
198
|
+
<widget class="QDoubleSpinBox" name="sbSpeedStep">
|
|
199
|
+
<property name="decimals">
|
|
200
|
+
<number>1</number>
|
|
201
|
+
</property>
|
|
202
|
+
<property name="minimum">
|
|
203
|
+
<double>0.100000000000000</double>
|
|
204
|
+
</property>
|
|
205
|
+
<property name="maximum">
|
|
206
|
+
<double>10.000000000000000</double>
|
|
207
|
+
</property>
|
|
208
|
+
<property name="singleStep">
|
|
209
|
+
<double>0.100000000000000</double>
|
|
210
|
+
</property>
|
|
211
|
+
<property name="value">
|
|
212
|
+
<double>0.100000000000000</double>
|
|
213
|
+
</property>
|
|
214
|
+
</widget>
|
|
215
|
+
</item>
|
|
216
|
+
</layout>
|
|
217
|
+
</item>
|
|
218
|
+
<item>
|
|
219
|
+
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
|
220
|
+
<item>
|
|
221
|
+
<widget class="QLabel" name="label_2">
|
|
222
|
+
<property name="text">
|
|
223
|
+
<string>Time offset for video/audio reposition (seconds)</string>
|
|
224
|
+
</property>
|
|
225
|
+
</widget>
|
|
226
|
+
</item>
|
|
227
|
+
<item>
|
|
228
|
+
<widget class="QSpinBox" name="sbRepositionTimeOffset">
|
|
229
|
+
<property name="minimum">
|
|
230
|
+
<number>-10000</number>
|
|
231
|
+
</property>
|
|
232
|
+
<property name="maximum">
|
|
233
|
+
<number>10000</number>
|
|
234
|
+
</property>
|
|
235
|
+
<property name="value">
|
|
236
|
+
<number>-3</number>
|
|
237
|
+
</property>
|
|
238
|
+
</widget>
|
|
239
|
+
</item>
|
|
240
|
+
</layout>
|
|
241
|
+
</item>
|
|
242
|
+
<item>
|
|
243
|
+
<widget class="QCheckBox" name="cbConfirmSound">
|
|
244
|
+
<property name="text">
|
|
245
|
+
<string>Play sound when a key is pressed</string>
|
|
246
|
+
</property>
|
|
247
|
+
</widget>
|
|
248
|
+
</item>
|
|
249
|
+
<item>
|
|
250
|
+
<widget class="QCheckBox" name="cbCloseSameEvent">
|
|
251
|
+
<property name="text">
|
|
252
|
+
<string>Close the same current event independently of modifiers</string>
|
|
253
|
+
</property>
|
|
254
|
+
</widget>
|
|
255
|
+
</item>
|
|
256
|
+
<item>
|
|
257
|
+
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
|
258
|
+
<item>
|
|
259
|
+
<widget class="QLabel" name="label_8">
|
|
260
|
+
<property name="text">
|
|
261
|
+
<string>Beep every (seconds)</string>
|
|
262
|
+
</property>
|
|
263
|
+
</widget>
|
|
264
|
+
</item>
|
|
265
|
+
<item>
|
|
266
|
+
<widget class="QSpinBox" name="sbBeepEvery"/>
|
|
267
|
+
</item>
|
|
268
|
+
</layout>
|
|
269
|
+
</item>
|
|
270
|
+
<item>
|
|
271
|
+
<widget class="QCheckBox" name="cb_display_subtitles">
|
|
272
|
+
<property name="text">
|
|
273
|
+
<string>Display subtitles</string>
|
|
274
|
+
</property>
|
|
275
|
+
</widget>
|
|
276
|
+
</item>
|
|
277
|
+
<item>
|
|
278
|
+
<widget class="QCheckBox" name="cbTrackingCursorAboveEvent">
|
|
279
|
+
<property name="text">
|
|
280
|
+
<string>Tracking cursor above current event</string>
|
|
281
|
+
</property>
|
|
282
|
+
</widget>
|
|
283
|
+
</item>
|
|
284
|
+
<item>
|
|
285
|
+
<widget class="QCheckBox" name="cbAlertNoFocalSubject">
|
|
286
|
+
<property name="text">
|
|
287
|
+
<string>Alert if focal subject is not set</string>
|
|
288
|
+
</property>
|
|
289
|
+
</widget>
|
|
290
|
+
</item>
|
|
291
|
+
<item>
|
|
292
|
+
<widget class="QCheckBox" name="cb_pause_before_addevent">
|
|
293
|
+
<property name="text">
|
|
294
|
+
<string>Pause media before "Add event" command</string>
|
|
295
|
+
</property>
|
|
296
|
+
</widget>
|
|
297
|
+
</item>
|
|
298
|
+
<item>
|
|
299
|
+
<spacer name="verticalSpacer_4">
|
|
300
|
+
<property name="orientation">
|
|
301
|
+
<enum>Qt::Vertical</enum>
|
|
302
|
+
</property>
|
|
303
|
+
<property name="sizeHint" stdset="0">
|
|
304
|
+
<size>
|
|
305
|
+
<width>20</width>
|
|
306
|
+
<height>391</height>
|
|
307
|
+
</size>
|
|
308
|
+
</property>
|
|
309
|
+
</spacer>
|
|
310
|
+
</item>
|
|
311
|
+
</layout>
|
|
312
|
+
</widget>
|
|
313
|
+
<widget class="QWidget" name="tab_ffmpeg">
|
|
314
|
+
<attribute name="title">
|
|
315
|
+
<string>FFmpeg framework</string>
|
|
316
|
+
</attribute>
|
|
317
|
+
<layout class="QVBoxLayout" name="verticalLayout_4">
|
|
318
|
+
<item>
|
|
319
|
+
<layout class="QVBoxLayout" name="verticalLayout_3">
|
|
320
|
+
<item>
|
|
321
|
+
<widget class="QLabel" name="lbFFmpegPath">
|
|
322
|
+
<property name="text">
|
|
323
|
+
<string>FFmpeg path:</string>
|
|
324
|
+
</property>
|
|
325
|
+
<property name="scaledContents">
|
|
326
|
+
<bool>false</bool>
|
|
327
|
+
</property>
|
|
328
|
+
<property name="wordWrap">
|
|
329
|
+
<bool>true</bool>
|
|
330
|
+
</property>
|
|
331
|
+
</widget>
|
|
332
|
+
</item>
|
|
333
|
+
<item>
|
|
334
|
+
<layout class="QHBoxLayout" name="horizontalLayout"/>
|
|
335
|
+
</item>
|
|
336
|
+
<item>
|
|
337
|
+
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
338
|
+
<item>
|
|
339
|
+
<widget class="QLabel" name="lbFFmpegCacheDir">
|
|
340
|
+
<property name="text">
|
|
341
|
+
<string>FFmpeg cache directory</string>
|
|
342
|
+
</property>
|
|
343
|
+
</widget>
|
|
344
|
+
</item>
|
|
345
|
+
<item>
|
|
346
|
+
<widget class="QLineEdit" name="leFFmpegCacheDir"/>
|
|
347
|
+
</item>
|
|
348
|
+
<item>
|
|
349
|
+
<widget class="QPushButton" name="pbBrowseFFmpegCacheDir">
|
|
350
|
+
<property name="text">
|
|
351
|
+
<string>...</string>
|
|
352
|
+
</property>
|
|
353
|
+
</widget>
|
|
354
|
+
</item>
|
|
355
|
+
</layout>
|
|
356
|
+
</item>
|
|
357
|
+
<item>
|
|
358
|
+
<spacer name="verticalSpacer">
|
|
359
|
+
<property name="orientation">
|
|
360
|
+
<enum>Qt::Vertical</enum>
|
|
361
|
+
</property>
|
|
362
|
+
<property name="sizeHint" stdset="0">
|
|
363
|
+
<size>
|
|
364
|
+
<width>20</width>
|
|
365
|
+
<height>40</height>
|
|
366
|
+
</size>
|
|
367
|
+
</property>
|
|
368
|
+
</spacer>
|
|
369
|
+
</item>
|
|
370
|
+
</layout>
|
|
371
|
+
</item>
|
|
372
|
+
</layout>
|
|
373
|
+
</widget>
|
|
374
|
+
<widget class="QWidget" name="tab_spectro">
|
|
375
|
+
<attribute name="title">
|
|
376
|
+
<string>Spectrogram/Wave form</string>
|
|
377
|
+
</attribute>
|
|
378
|
+
<layout class="QVBoxLayout" name="verticalLayout_8">
|
|
379
|
+
<item>
|
|
380
|
+
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
|
381
|
+
<item>
|
|
382
|
+
<widget class="QLabel" name="label_7">
|
|
383
|
+
<property name="text">
|
|
384
|
+
<string>Spectrogram color map</string>
|
|
385
|
+
</property>
|
|
386
|
+
</widget>
|
|
387
|
+
</item>
|
|
388
|
+
<item>
|
|
389
|
+
<widget class="QComboBox" name="cbSpectrogramColorMap"/>
|
|
390
|
+
</item>
|
|
391
|
+
</layout>
|
|
392
|
+
</item>
|
|
393
|
+
<item>
|
|
394
|
+
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
|
395
|
+
<item>
|
|
396
|
+
<widget class="QLabel" name="label_12">
|
|
397
|
+
<property name="text">
|
|
398
|
+
<string>Default time interval (s)</string>
|
|
399
|
+
</property>
|
|
400
|
+
</widget>
|
|
401
|
+
</item>
|
|
402
|
+
<item>
|
|
403
|
+
<widget class="QSpinBox" name="sb_time_interval">
|
|
404
|
+
<property name="minimum">
|
|
405
|
+
<number>2</number>
|
|
406
|
+
</property>
|
|
407
|
+
<property name="maximum">
|
|
408
|
+
<number>360</number>
|
|
409
|
+
</property>
|
|
410
|
+
<property name="value">
|
|
411
|
+
<number>10</number>
|
|
412
|
+
</property>
|
|
413
|
+
</widget>
|
|
414
|
+
</item>
|
|
415
|
+
</layout>
|
|
416
|
+
</item>
|
|
417
|
+
<item>
|
|
418
|
+
<spacer name="verticalSpacer_3">
|
|
419
|
+
<property name="orientation">
|
|
420
|
+
<enum>Qt::Vertical</enum>
|
|
421
|
+
</property>
|
|
422
|
+
<property name="sizeHint" stdset="0">
|
|
423
|
+
<size>
|
|
424
|
+
<width>20</width>
|
|
425
|
+
<height>319</height>
|
|
426
|
+
</size>
|
|
427
|
+
</property>
|
|
428
|
+
</spacer>
|
|
429
|
+
</item>
|
|
430
|
+
</layout>
|
|
431
|
+
</widget>
|
|
432
|
+
<widget class="QWidget" name="tab_colors">
|
|
433
|
+
<attribute name="title">
|
|
434
|
+
<string>Plot colors</string>
|
|
435
|
+
</attribute>
|
|
436
|
+
<layout class="QVBoxLayout" name="verticalLayout_10">
|
|
437
|
+
<item>
|
|
438
|
+
<layout class="QHBoxLayout" name="horizontalLayout_12">
|
|
439
|
+
<item>
|
|
440
|
+
<layout class="QVBoxLayout" name="verticalLayout_6">
|
|
441
|
+
<item>
|
|
442
|
+
<widget class="QLabel" name="label_10">
|
|
443
|
+
<property name="text">
|
|
444
|
+
<string><html><head/><body><p>List of colors for behaviors. See <a href="https://matplotlib.org/api/colors_api.html"><span style=" text-decoration: underline; color:#0000ff;">matplotlib colors</span></a></p></body></html></string>
|
|
445
|
+
</property>
|
|
446
|
+
<property name="openExternalLinks">
|
|
447
|
+
<bool>true</bool>
|
|
448
|
+
</property>
|
|
449
|
+
</widget>
|
|
450
|
+
</item>
|
|
451
|
+
<item>
|
|
452
|
+
<widget class="QPlainTextEdit" name="te_behav_colors"/>
|
|
453
|
+
</item>
|
|
454
|
+
<item>
|
|
455
|
+
<widget class="QPushButton" name="pb_reset_behav_colors">
|
|
456
|
+
<property name="text">
|
|
457
|
+
<string>Reset colors to default</string>
|
|
458
|
+
</property>
|
|
459
|
+
</widget>
|
|
460
|
+
</item>
|
|
461
|
+
</layout>
|
|
462
|
+
</item>
|
|
463
|
+
<item>
|
|
464
|
+
<layout class="QVBoxLayout" name="verticalLayout_9">
|
|
465
|
+
<item>
|
|
466
|
+
<widget class="QLabel" name="label_11">
|
|
467
|
+
<property name="text">
|
|
468
|
+
<string><html><head/><body><p>List of colors for behavioral categories. See <a href="https://matplotlib.org/api/colors_api.html"><span style=" text-decoration: underline; color:#0000ff;">matplotlib colors</span></a></p></body></html></string>
|
|
469
|
+
</property>
|
|
470
|
+
<property name="openExternalLinks">
|
|
471
|
+
<bool>true</bool>
|
|
472
|
+
</property>
|
|
473
|
+
</widget>
|
|
474
|
+
</item>
|
|
475
|
+
<item>
|
|
476
|
+
<widget class="QPlainTextEdit" name="te_category_colors"/>
|
|
477
|
+
</item>
|
|
478
|
+
<item>
|
|
479
|
+
<widget class="QPushButton" name="pb_reset_category_colors">
|
|
480
|
+
<property name="text">
|
|
481
|
+
<string>Reset colors to default</string>
|
|
482
|
+
</property>
|
|
483
|
+
</widget>
|
|
484
|
+
</item>
|
|
485
|
+
</layout>
|
|
486
|
+
</item>
|
|
487
|
+
</layout>
|
|
488
|
+
</item>
|
|
489
|
+
</layout>
|
|
490
|
+
</widget>
|
|
491
|
+
<widget class="QWidget" name="tab_interface">
|
|
492
|
+
<attribute name="title">
|
|
493
|
+
<string>Interface</string>
|
|
494
|
+
</attribute>
|
|
495
|
+
<layout class="QVBoxLayout" name="verticalLayout_7">
|
|
496
|
+
<item>
|
|
497
|
+
<layout class="QFormLayout" name="formLayout">
|
|
498
|
+
<item row="0" column="0">
|
|
499
|
+
<widget class="QLabel" name="label_9">
|
|
500
|
+
<property name="text">
|
|
501
|
+
<string>Toolbar icons size</string>
|
|
502
|
+
</property>
|
|
503
|
+
</widget>
|
|
504
|
+
</item>
|
|
505
|
+
<item row="0" column="1">
|
|
506
|
+
<widget class="QSpinBox" name="sb_toolbar_icon_size">
|
|
507
|
+
<property name="minimum">
|
|
508
|
+
<number>12</number>
|
|
509
|
+
</property>
|
|
510
|
+
<property name="maximum">
|
|
511
|
+
<number>128</number>
|
|
512
|
+
</property>
|
|
513
|
+
<property name="value">
|
|
514
|
+
<number>24</number>
|
|
515
|
+
</property>
|
|
516
|
+
</widget>
|
|
517
|
+
</item>
|
|
518
|
+
</layout>
|
|
519
|
+
</item>
|
|
520
|
+
<item>
|
|
521
|
+
<widget class="QCheckBox" name="cb_darkmode">
|
|
522
|
+
<property name="text">
|
|
523
|
+
<string>Dark mode (should be necessary to relaunch BORIS)</string>
|
|
524
|
+
</property>
|
|
525
|
+
</widget>
|
|
526
|
+
</item>
|
|
527
|
+
<item>
|
|
528
|
+
<spacer name="verticalSpacer_5">
|
|
529
|
+
<property name="orientation">
|
|
530
|
+
<enum>Qt::Vertical</enum>
|
|
531
|
+
</property>
|
|
532
|
+
<property name="sizeHint" stdset="0">
|
|
533
|
+
<size>
|
|
534
|
+
<width>20</width>
|
|
535
|
+
<height>386</height>
|
|
536
|
+
</size>
|
|
537
|
+
</property>
|
|
538
|
+
</spacer>
|
|
539
|
+
</item>
|
|
540
|
+
</layout>
|
|
541
|
+
</widget>
|
|
542
|
+
</widget>
|
|
543
|
+
</item>
|
|
544
|
+
<item>
|
|
545
|
+
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
546
|
+
<item>
|
|
547
|
+
<spacer name="horizontalSpacer">
|
|
548
|
+
<property name="orientation">
|
|
549
|
+
<enum>Qt::Horizontal</enum>
|
|
550
|
+
</property>
|
|
551
|
+
<property name="sizeHint" stdset="0">
|
|
552
|
+
<size>
|
|
553
|
+
<width>241</width>
|
|
554
|
+
<height>20</height>
|
|
555
|
+
</size>
|
|
556
|
+
</property>
|
|
557
|
+
</spacer>
|
|
558
|
+
</item>
|
|
559
|
+
<item>
|
|
560
|
+
<widget class="QPushButton" name="pb_refresh">
|
|
561
|
+
<property name="text">
|
|
562
|
+
<string>Refresh</string>
|
|
563
|
+
</property>
|
|
564
|
+
</widget>
|
|
565
|
+
</item>
|
|
566
|
+
<item>
|
|
567
|
+
<widget class="QPushButton" name="pbCancel">
|
|
568
|
+
<property name="text">
|
|
569
|
+
<string>Cancel</string>
|
|
570
|
+
</property>
|
|
571
|
+
</widget>
|
|
572
|
+
</item>
|
|
573
|
+
<item>
|
|
574
|
+
<widget class="QPushButton" name="pbOK">
|
|
575
|
+
<property name="text">
|
|
576
|
+
<string>OK</string>
|
|
577
|
+
</property>
|
|
578
|
+
</widget>
|
|
579
|
+
</item>
|
|
580
|
+
</layout>
|
|
581
|
+
</item>
|
|
582
|
+
</layout>
|
|
583
|
+
</item>
|
|
584
|
+
</layout>
|
|
585
|
+
</widget>
|
|
586
|
+
<resources/>
|
|
587
|
+
<connections/>
|
|
588
|
+
</ui>
|
boris/project.py
CHANGED
|
@@ -430,7 +430,7 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
430
430
|
"""
|
|
431
431
|
return a color for the not editable column
|
|
432
432
|
"""
|
|
433
|
-
if self.config_param
|
|
433
|
+
if self.config_param.get(cfg.DARK_MODE, cfg.DEFAULT_FRAME_MODE):
|
|
434
434
|
return QColor(55, 65, 79)
|
|
435
435
|
else:
|
|
436
436
|
return QColor(230, 230, 230)
|
|
@@ -730,7 +730,7 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
730
730
|
behavioral categories manager
|
|
731
731
|
"""
|
|
732
732
|
|
|
733
|
-
bc = BehavioralCategories(self.pj, self.config_param
|
|
733
|
+
bc = BehavioralCategories(self.pj, self.config_param.get(cfg.DARK_MODE, cfg.DEFAULT_FRAME_MODE))
|
|
734
734
|
|
|
735
735
|
if bc.exec_():
|
|
736
736
|
self.pj[cfg.BEHAVIORAL_CATEGORIES] = []
|
|
@@ -1836,10 +1836,9 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
1836
1836
|
# check subjects
|
|
1837
1837
|
for row in range(self.twSubjects.rowCount()):
|
|
1838
1838
|
# check key
|
|
1839
|
+
key: str = ""
|
|
1839
1840
|
if self.twSubjects.item(row, 0):
|
|
1840
1841
|
key = self.twSubjects.item(row, 0).text()
|
|
1841
|
-
else:
|
|
1842
|
-
key = ""
|
|
1843
1842
|
|
|
1844
1843
|
# check subject name
|
|
1845
1844
|
if self.twSubjects.item(row, 1):
|
|
@@ -1865,7 +1864,7 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
1865
1864
|
return
|
|
1866
1865
|
|
|
1867
1866
|
# description
|
|
1868
|
-
subjectDescription = ""
|
|
1867
|
+
subjectDescription: str = ""
|
|
1869
1868
|
if self.twSubjects.item(row, 2):
|
|
1870
1869
|
subjectDescription = self.twSubjects.item(row, 2).text().strip()
|
|
1871
1870
|
|
|
@@ -1875,6 +1874,25 @@ class projectDialog(QDialog, Ui_dlgProject):
|
|
|
1875
1874
|
"description": subjectDescription,
|
|
1876
1875
|
}
|
|
1877
1876
|
|
|
1877
|
+
# check if coded subjects are defined in the subjects list
|
|
1878
|
+
subjects_list: list = [self.subjects_conf[x]["name"] for x in self.subjects_conf]
|
|
1879
|
+
coded_subjects = set(
|
|
1880
|
+
util.flatten_list([[y[1] for y in self.pj[cfg.OBSERVATIONS][x].get(cfg.EVENTS, [])] for x in self.pj[cfg.OBSERVATIONS]])
|
|
1881
|
+
)
|
|
1882
|
+
|
|
1883
|
+
not_defined_subjects: list = []
|
|
1884
|
+
for subject in coded_subjects:
|
|
1885
|
+
if subject and subject not in subjects_list:
|
|
1886
|
+
not_defined_subjects.append(subject)
|
|
1887
|
+
|
|
1888
|
+
if not_defined_subjects:
|
|
1889
|
+
QMessageBox.warning(
|
|
1890
|
+
self,
|
|
1891
|
+
cfg.programName,
|
|
1892
|
+
f"The coded subject(s) <b>{', '.join(not_defined_subjects)}</b> is/are not defined in the subjects list.<br>You can use the <b>Explore project</b> to fix it.",
|
|
1893
|
+
)
|
|
1894
|
+
return
|
|
1895
|
+
|
|
1878
1896
|
self.pj[cfg.SUBJECTS] = dict(self.subjects_conf)
|
|
1879
1897
|
|
|
1880
1898
|
# check ethogram
|