boris-behav-obs 9.7.7__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.
Files changed (109) hide show
  1. boris/__init__.py +26 -0
  2. boris/__main__.py +25 -0
  3. boris/about.py +143 -0
  4. boris/add_modifier.py +635 -0
  5. boris/add_modifier_ui.py +303 -0
  6. boris/advanced_event_filtering.py +455 -0
  7. boris/analysis_plugins/__init__.py +0 -0
  8. boris/analysis_plugins/_latency.py +59 -0
  9. boris/analysis_plugins/irr_cohen_kappa.py +109 -0
  10. boris/analysis_plugins/irr_cohen_kappa_with_modifiers.py +112 -0
  11. boris/analysis_plugins/irr_weighted_cohen_kappa.py +157 -0
  12. boris/analysis_plugins/irr_weighted_cohen_kappa_with_modifiers.py +162 -0
  13. boris/analysis_plugins/list_of_dataframe_columns.py +22 -0
  14. boris/analysis_plugins/number_of_occurences.py +22 -0
  15. boris/analysis_plugins/number_of_occurences_by_independent_variable.py +54 -0
  16. boris/analysis_plugins/time_budget.py +61 -0
  17. boris/behav_coding_map_creator.py +1110 -0
  18. boris/behavior_binary_table.py +305 -0
  19. boris/behaviors_coding_map.py +239 -0
  20. boris/boris_cli.py +340 -0
  21. boris/cmd_arguments.py +49 -0
  22. boris/coding_pad.py +280 -0
  23. boris/config.py +785 -0
  24. boris/config_file.py +356 -0
  25. boris/connections.py +409 -0
  26. boris/converters.py +333 -0
  27. boris/converters_ui.py +225 -0
  28. boris/cooccurence.py +250 -0
  29. boris/core.py +5901 -0
  30. boris/core_qrc.py +15958 -0
  31. boris/core_ui.py +1107 -0
  32. boris/db_functions.py +324 -0
  33. boris/dev.py +134 -0
  34. boris/dialog.py +1108 -0
  35. boris/duration_widget.py +238 -0
  36. boris/edit_event.py +245 -0
  37. boris/edit_event_ui.py +233 -0
  38. boris/event_operations.py +1040 -0
  39. boris/events_cursor.py +61 -0
  40. boris/events_snapshots.py +596 -0
  41. boris/exclusion_matrix.py +141 -0
  42. boris/export_events.py +1006 -0
  43. boris/export_observation.py +1203 -0
  44. boris/external_processes.py +332 -0
  45. boris/geometric_measurement.py +941 -0
  46. boris/gui_utilities.py +135 -0
  47. boris/image_overlay.py +72 -0
  48. boris/import_observations.py +242 -0
  49. boris/ipc_mpv.py +325 -0
  50. boris/irr.py +634 -0
  51. boris/latency.py +244 -0
  52. boris/measurement_widget.py +161 -0
  53. boris/media_file.py +115 -0
  54. boris/menu_options.py +213 -0
  55. boris/modifier_coding_map_creator.py +1013 -0
  56. boris/modifiers_coding_map.py +157 -0
  57. boris/mpv.py +2016 -0
  58. boris/mpv2.py +2193 -0
  59. boris/observation.py +1453 -0
  60. boris/observation_operations.py +2538 -0
  61. boris/observation_ui.py +679 -0
  62. boris/observations_list.py +337 -0
  63. boris/otx_parser.py +442 -0
  64. boris/param_panel.py +201 -0
  65. boris/param_panel_ui.py +305 -0
  66. boris/player_dock_widget.py +198 -0
  67. boris/plot_data_module.py +536 -0
  68. boris/plot_events.py +634 -0
  69. boris/plot_events_rt.py +237 -0
  70. boris/plot_spectrogram_rt.py +316 -0
  71. boris/plot_waveform_rt.py +230 -0
  72. boris/plugins.py +431 -0
  73. boris/portion/__init__.py +31 -0
  74. boris/portion/const.py +95 -0
  75. boris/portion/dict.py +365 -0
  76. boris/portion/func.py +52 -0
  77. boris/portion/interval.py +581 -0
  78. boris/portion/io.py +181 -0
  79. boris/preferences.py +510 -0
  80. boris/preferences_ui.py +770 -0
  81. boris/project.py +2007 -0
  82. boris/project_functions.py +2041 -0
  83. boris/project_import_export.py +1096 -0
  84. boris/project_ui.py +794 -0
  85. boris/qrc_boris.py +10389 -0
  86. boris/qrc_boris5.py +2579 -0
  87. boris/select_modifiers.py +312 -0
  88. boris/select_observations.py +210 -0
  89. boris/select_subj_behav.py +286 -0
  90. boris/state_events.py +197 -0
  91. boris/subjects_pad.py +106 -0
  92. boris/synthetic_time_budget.py +290 -0
  93. boris/time_budget_functions.py +1136 -0
  94. boris/time_budget_widget.py +1039 -0
  95. boris/transitions.py +365 -0
  96. boris/utilities.py +1810 -0
  97. boris/version.py +24 -0
  98. boris/video_equalizer.py +159 -0
  99. boris/video_equalizer_ui.py +248 -0
  100. boris/video_operations.py +310 -0
  101. boris/view_df.py +104 -0
  102. boris/view_df_ui.py +75 -0
  103. boris/write_event.py +538 -0
  104. boris_behav_obs-9.7.7.dist-info/METADATA +139 -0
  105. boris_behav_obs-9.7.7.dist-info/RECORD +109 -0
  106. boris_behav_obs-9.7.7.dist-info/WHEEL +5 -0
  107. boris_behav_obs-9.7.7.dist-info/entry_points.txt +2 -0
  108. boris_behav_obs-9.7.7.dist-info/licenses/LICENSE.TXT +674 -0
  109. boris_behav_obs-9.7.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,679 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ ################################################################################
4
+ ## Form generated from reading UI file 'observation.ui'
5
+ ##
6
+ ## Created by: Qt User Interface Compiler version 6.8.0
7
+ ##
8
+ ## WARNING! All changes made in this file will be lost when recompiling UI file!
9
+ ################################################################################
10
+
11
+ from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12
+ QMetaObject, QObject, QPoint, QRect,
13
+ QSize, QTime, QUrl, Qt)
14
+ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15
+ QFont, QFontDatabase, QGradient, QIcon,
16
+ QImage, QKeySequence, QLinearGradient, QPainter,
17
+ QPalette, QPixmap, QRadialGradient, QTransform)
18
+ from PySide6.QtWidgets import (QAbstractItemView, QApplication, QCheckBox, QDateTimeEdit,
19
+ QDoubleSpinBox, QGroupBox, QHBoxLayout, QHeaderView,
20
+ QLabel, QLineEdit, QListWidget, QListWidgetItem,
21
+ QPushButton, QRadioButton, QSizePolicy, QSpacerItem,
22
+ QSpinBox, QSplitter, QStackedWidget, QTabWidget,
23
+ QTableWidget, QTableWidgetItem, QTextEdit, QVBoxLayout,
24
+ QWidget)
25
+
26
+ class Ui_Form(object):
27
+ def setupUi(self, Form):
28
+ if not Form.objectName():
29
+ Form.setObjectName(u"Form")
30
+ Form.resize(1278, 677)
31
+ self.verticalLayout_6 = QVBoxLayout(Form)
32
+ self.verticalLayout_6.setObjectName(u"verticalLayout_6")
33
+ self.horizontalLayout_2 = QHBoxLayout()
34
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
35
+ self.label = QLabel(Form)
36
+ self.label.setObjectName(u"label")
37
+
38
+ self.horizontalLayout_2.addWidget(self.label)
39
+
40
+ self.lb_star = QLabel(Form)
41
+ self.lb_star.setObjectName(u"lb_star")
42
+ font = QFont()
43
+ font.setPointSize(14)
44
+ self.lb_star.setFont(font)
45
+ self.lb_star.setStyleSheet(u"color: red")
46
+
47
+ self.horizontalLayout_2.addWidget(self.lb_star)
48
+
49
+ self.leObservationId = QLineEdit(Form)
50
+ self.leObservationId.setObjectName(u"leObservationId")
51
+
52
+ self.horizontalLayout_2.addWidget(self.leObservationId)
53
+
54
+ self.label_8 = QLabel(Form)
55
+ self.label_8.setObjectName(u"label_8")
56
+
57
+ self.horizontalLayout_2.addWidget(self.label_8)
58
+
59
+ self.dteDate = QDateTimeEdit(Form)
60
+ self.dteDate.setObjectName(u"dteDate")
61
+ self.dteDate.setCalendarPopup(True)
62
+
63
+ self.horizontalLayout_2.addWidget(self.dteDate)
64
+
65
+
66
+ self.verticalLayout_6.addLayout(self.horizontalLayout_2)
67
+
68
+ self.splitter = QSplitter(Form)
69
+ self.splitter.setObjectName(u"splitter")
70
+ self.splitter.setOrientation(Qt.Orientation.Horizontal)
71
+ self.layoutWidget = QWidget(self.splitter)
72
+ self.layoutWidget.setObjectName(u"layoutWidget")
73
+ self.verticalLayout_2 = QVBoxLayout(self.layoutWidget)
74
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
75
+ self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
76
+ self.label_9 = QLabel(self.layoutWidget)
77
+ self.label_9.setObjectName(u"label_9")
78
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
79
+ sizePolicy.setHorizontalStretch(0)
80
+ sizePolicy.setVerticalStretch(0)
81
+ sizePolicy.setHeightForWidth(self.label_9.sizePolicy().hasHeightForWidth())
82
+ self.label_9.setSizePolicy(sizePolicy)
83
+ self.label_9.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
84
+
85
+ self.verticalLayout_2.addWidget(self.label_9)
86
+
87
+ self.teDescription = QTextEdit(self.layoutWidget)
88
+ self.teDescription.setObjectName(u"teDescription")
89
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
90
+ sizePolicy1.setHorizontalStretch(0)
91
+ sizePolicy1.setVerticalStretch(0)
92
+ sizePolicy1.setHeightForWidth(self.teDescription.sizePolicy().hasHeightForWidth())
93
+ self.teDescription.setSizePolicy(sizePolicy1)
94
+ self.teDescription.setMaximumSize(QSize(16777215, 16777215))
95
+ self.teDescription.setAcceptDrops(False)
96
+
97
+ self.verticalLayout_2.addWidget(self.teDescription)
98
+
99
+ self.cb_time_offset = QCheckBox(self.layoutWidget)
100
+ self.cb_time_offset.setObjectName(u"cb_time_offset")
101
+
102
+ self.verticalLayout_2.addWidget(self.cb_time_offset)
103
+
104
+ self.horizontalLayout_6 = QHBoxLayout()
105
+ self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
106
+ self.lbTimeOffset = QLabel(self.layoutWidget)
107
+ self.lbTimeOffset.setObjectName(u"lbTimeOffset")
108
+
109
+ self.horizontalLayout_6.addWidget(self.lbTimeOffset)
110
+
111
+ self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
112
+
113
+ self.horizontalLayout_6.addItem(self.horizontalSpacer_2)
114
+
115
+
116
+ self.verticalLayout_2.addLayout(self.horizontalLayout_6)
117
+
118
+ self.cb_observation_time_interval = QCheckBox(self.layoutWidget)
119
+ self.cb_observation_time_interval.setObjectName(u"cb_observation_time_interval")
120
+
121
+ self.verticalLayout_2.addWidget(self.cb_observation_time_interval)
122
+
123
+ self.splitter.addWidget(self.layoutWidget)
124
+ self.layoutWidget1 = QWidget(self.splitter)
125
+ self.layoutWidget1.setObjectName(u"layoutWidget1")
126
+ self.verticalLayout_11 = QVBoxLayout(self.layoutWidget1)
127
+ self.verticalLayout_11.setObjectName(u"verticalLayout_11")
128
+ self.verticalLayout_11.setContentsMargins(0, 0, 0, 0)
129
+ self.label_3 = QLabel(self.layoutWidget1)
130
+ self.label_3.setObjectName(u"label_3")
131
+
132
+ self.verticalLayout_11.addWidget(self.label_3)
133
+
134
+ self.twIndepVariables = QTableWidget(self.layoutWidget1)
135
+ if (self.twIndepVariables.columnCount() < 3):
136
+ self.twIndepVariables.setColumnCount(3)
137
+ __qtablewidgetitem = QTableWidgetItem()
138
+ self.twIndepVariables.setHorizontalHeaderItem(0, __qtablewidgetitem)
139
+ __qtablewidgetitem1 = QTableWidgetItem()
140
+ self.twIndepVariables.setHorizontalHeaderItem(1, __qtablewidgetitem1)
141
+ __qtablewidgetitem2 = QTableWidgetItem()
142
+ self.twIndepVariables.setHorizontalHeaderItem(2, __qtablewidgetitem2)
143
+ self.twIndepVariables.setObjectName(u"twIndepVariables")
144
+
145
+ self.verticalLayout_11.addWidget(self.twIndepVariables)
146
+
147
+ self.splitter.addWidget(self.layoutWidget1)
148
+
149
+ self.verticalLayout_6.addWidget(self.splitter)
150
+
151
+ self.gb_observation_type = QGroupBox(Form)
152
+ self.gb_observation_type.setObjectName(u"gb_observation_type")
153
+ self.horizontalLayout_7 = QHBoxLayout(self.gb_observation_type)
154
+ self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
155
+ self.horizontalLayout_4 = QHBoxLayout()
156
+ self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
157
+ self.rb_media_files = QRadioButton(self.gb_observation_type)
158
+ self.rb_media_files.setObjectName(u"rb_media_files")
159
+
160
+ self.horizontalLayout_4.addWidget(self.rb_media_files)
161
+
162
+ self.rb_live = QRadioButton(self.gb_observation_type)
163
+ self.rb_live.setObjectName(u"rb_live")
164
+
165
+ self.horizontalLayout_4.addWidget(self.rb_live)
166
+
167
+ self.rb_images = QRadioButton(self.gb_observation_type)
168
+ self.rb_images.setObjectName(u"rb_images")
169
+ self.rb_images.setEnabled(True)
170
+
171
+ self.horizontalLayout_4.addWidget(self.rb_images)
172
+
173
+ self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
174
+
175
+ self.horizontalLayout_4.addItem(self.horizontalSpacer_4)
176
+
177
+
178
+ self.horizontalLayout_7.addLayout(self.horizontalLayout_4)
179
+
180
+
181
+ self.verticalLayout_6.addWidget(self.gb_observation_type)
182
+
183
+ self.sw_observation_type = QStackedWidget(Form)
184
+ self.sw_observation_type.setObjectName(u"sw_observation_type")
185
+ self.page = QWidget()
186
+ self.page.setObjectName(u"page")
187
+ self.sw_observation_type.addWidget(self.page)
188
+ self.pg_media_files = QWidget()
189
+ self.pg_media_files.setObjectName(u"pg_media_files")
190
+ self.verticalLayout_7 = QVBoxLayout(self.pg_media_files)
191
+ self.verticalLayout_7.setObjectName(u"verticalLayout_7")
192
+ self.tabWidget = QTabWidget(self.pg_media_files)
193
+ self.tabWidget.setObjectName(u"tabWidget")
194
+ self.tab_player_1 = QWidget()
195
+ self.tab_player_1.setObjectName(u"tab_player_1")
196
+ self.verticalLayout = QVBoxLayout(self.tab_player_1)
197
+ self.verticalLayout.setObjectName(u"verticalLayout")
198
+ self.verticalLayout_3 = QVBoxLayout()
199
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
200
+ self.twVideo1 = QTableWidget(self.tab_player_1)
201
+ if (self.twVideo1.columnCount() < 7):
202
+ self.twVideo1.setColumnCount(7)
203
+ __qtablewidgetitem3 = QTableWidgetItem()
204
+ self.twVideo1.setHorizontalHeaderItem(0, __qtablewidgetitem3)
205
+ __qtablewidgetitem4 = QTableWidgetItem()
206
+ self.twVideo1.setHorizontalHeaderItem(1, __qtablewidgetitem4)
207
+ __qtablewidgetitem5 = QTableWidgetItem()
208
+ self.twVideo1.setHorizontalHeaderItem(2, __qtablewidgetitem5)
209
+ __qtablewidgetitem6 = QTableWidgetItem()
210
+ self.twVideo1.setHorizontalHeaderItem(3, __qtablewidgetitem6)
211
+ __qtablewidgetitem7 = QTableWidgetItem()
212
+ self.twVideo1.setHorizontalHeaderItem(4, __qtablewidgetitem7)
213
+ __qtablewidgetitem8 = QTableWidgetItem()
214
+ self.twVideo1.setHorizontalHeaderItem(5, __qtablewidgetitem8)
215
+ __qtablewidgetitem9 = QTableWidgetItem()
216
+ self.twVideo1.setHorizontalHeaderItem(6, __qtablewidgetitem9)
217
+ self.twVideo1.setObjectName(u"twVideo1")
218
+ self.twVideo1.setEditTriggers(QAbstractItemView.EditTrigger.AnyKeyPressed|QAbstractItemView.EditTrigger.DoubleClicked|QAbstractItemView.EditTrigger.EditKeyPressed)
219
+ self.twVideo1.setAlternatingRowColors(True)
220
+ self.twVideo1.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection)
221
+ self.twVideo1.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
222
+ self.twVideo1.setTextElideMode(Qt.TextElideMode.ElideNone)
223
+
224
+ self.verticalLayout_3.addWidget(self.twVideo1)
225
+
226
+
227
+ self.verticalLayout.addLayout(self.verticalLayout_3)
228
+
229
+ self.horizontalLayout_3 = QHBoxLayout()
230
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
231
+ self.pbAddVideo = QPushButton(self.tab_player_1)
232
+ self.pbAddVideo.setObjectName(u"pbAddVideo")
233
+
234
+ self.horizontalLayout_3.addWidget(self.pbAddVideo)
235
+
236
+ self.pbRemoveVideo = QPushButton(self.tab_player_1)
237
+ self.pbRemoveVideo.setObjectName(u"pbRemoveVideo")
238
+
239
+ self.horizontalLayout_3.addWidget(self.pbRemoveVideo)
240
+
241
+ self.pb_use_media_file_name_as_obsid = QPushButton(self.tab_player_1)
242
+ self.pb_use_media_file_name_as_obsid.setObjectName(u"pb_use_media_file_name_as_obsid")
243
+
244
+ self.horizontalLayout_3.addWidget(self.pb_use_media_file_name_as_obsid)
245
+
246
+ self.horizontalSpacer_6 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
247
+
248
+ self.horizontalLayout_3.addItem(self.horizontalSpacer_6)
249
+
250
+
251
+ self.verticalLayout.addLayout(self.horizontalLayout_3)
252
+
253
+ self.horizontalLayout_15 = QHBoxLayout()
254
+ self.horizontalLayout_15.setObjectName(u"horizontalLayout_15")
255
+ self.cbVisualizeSpectrogram = QCheckBox(self.tab_player_1)
256
+ self.cbVisualizeSpectrogram.setObjectName(u"cbVisualizeSpectrogram")
257
+
258
+ self.horizontalLayout_15.addWidget(self.cbVisualizeSpectrogram)
259
+
260
+ self.cb_visualize_waveform = QCheckBox(self.tab_player_1)
261
+ self.cb_visualize_waveform.setObjectName(u"cb_visualize_waveform")
262
+
263
+ self.horizontalLayout_15.addWidget(self.cb_visualize_waveform)
264
+
265
+ self.cb_media_creation_date_as_offset = QCheckBox(self.tab_player_1)
266
+ self.cb_media_creation_date_as_offset.setObjectName(u"cb_media_creation_date_as_offset")
267
+ self.cb_media_creation_date_as_offset.setEnabled(False)
268
+
269
+ self.horizontalLayout_15.addWidget(self.cb_media_creation_date_as_offset)
270
+
271
+ self.horizontalSpacer_11 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
272
+
273
+ self.horizontalLayout_15.addItem(self.horizontalSpacer_11)
274
+
275
+
276
+ self.verticalLayout.addLayout(self.horizontalLayout_15)
277
+
278
+ self.horizontalLayout_12 = QHBoxLayout()
279
+ self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
280
+ self.label_5 = QLabel(self.tab_player_1)
281
+ self.label_5.setObjectName(u"label_5")
282
+
283
+ self.horizontalLayout_12.addWidget(self.label_5)
284
+
285
+ self.sb_media_scan_sampling = QSpinBox(self.tab_player_1)
286
+ self.sb_media_scan_sampling.setObjectName(u"sb_media_scan_sampling")
287
+ self.sb_media_scan_sampling.setMaximum(1000000)
288
+
289
+ self.horizontalLayout_12.addWidget(self.sb_media_scan_sampling)
290
+
291
+ self.label_2 = QLabel(self.tab_player_1)
292
+ self.label_2.setObjectName(u"label_2")
293
+
294
+ self.horizontalLayout_12.addWidget(self.label_2)
295
+
296
+ self.sb_image_display_duration = QSpinBox(self.tab_player_1)
297
+ self.sb_image_display_duration.setObjectName(u"sb_image_display_duration")
298
+ self.sb_image_display_duration.setMinimum(1)
299
+ self.sb_image_display_duration.setMaximum(86400)
300
+
301
+ self.horizontalLayout_12.addWidget(self.sb_image_display_duration)
302
+
303
+ self.horizontalSpacer_8 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
304
+
305
+ self.horizontalLayout_12.addItem(self.horizontalSpacer_8)
306
+
307
+
308
+ self.verticalLayout.addLayout(self.horizontalLayout_12)
309
+
310
+ self.cbCloseCurrentBehaviorsBetweenVideo = QCheckBox(self.tab_player_1)
311
+ self.cbCloseCurrentBehaviorsBetweenVideo.setObjectName(u"cbCloseCurrentBehaviorsBetweenVideo")
312
+ self.cbCloseCurrentBehaviorsBetweenVideo.setEnabled(False)
313
+
314
+ self.verticalLayout.addWidget(self.cbCloseCurrentBehaviorsBetweenVideo)
315
+
316
+ self.tabWidget.addTab(self.tab_player_1, "")
317
+ self.tab_data_files = QWidget()
318
+ self.tab_data_files.setObjectName(u"tab_data_files")
319
+ self.verticalLayout_17 = QVBoxLayout(self.tab_data_files)
320
+ self.verticalLayout_17.setObjectName(u"verticalLayout_17")
321
+ self.splitter_5 = QSplitter(self.tab_data_files)
322
+ self.splitter_5.setObjectName(u"splitter_5")
323
+ self.splitter_5.setOrientation(Qt.Orientation.Vertical)
324
+ self.layoutWidget_4 = QWidget(self.splitter_5)
325
+ self.layoutWidget_4.setObjectName(u"layoutWidget_4")
326
+ self.verticalLayout_15 = QVBoxLayout(self.layoutWidget_4)
327
+ self.verticalLayout_15.setObjectName(u"verticalLayout_15")
328
+ self.verticalLayout_15.setContentsMargins(0, 0, 0, 0)
329
+ self.label_7 = QLabel(self.layoutWidget_4)
330
+ self.label_7.setObjectName(u"label_7")
331
+
332
+ self.verticalLayout_15.addWidget(self.label_7)
333
+
334
+ self.tw_data_files = QTableWidget(self.layoutWidget_4)
335
+ if (self.tw_data_files.columnCount() < 9):
336
+ self.tw_data_files.setColumnCount(9)
337
+ __qtablewidgetitem10 = QTableWidgetItem()
338
+ self.tw_data_files.setHorizontalHeaderItem(0, __qtablewidgetitem10)
339
+ __qtablewidgetitem11 = QTableWidgetItem()
340
+ self.tw_data_files.setHorizontalHeaderItem(1, __qtablewidgetitem11)
341
+ __qtablewidgetitem12 = QTableWidgetItem()
342
+ self.tw_data_files.setHorizontalHeaderItem(2, __qtablewidgetitem12)
343
+ __qtablewidgetitem13 = QTableWidgetItem()
344
+ self.tw_data_files.setHorizontalHeaderItem(3, __qtablewidgetitem13)
345
+ __qtablewidgetitem14 = QTableWidgetItem()
346
+ self.tw_data_files.setHorizontalHeaderItem(4, __qtablewidgetitem14)
347
+ __qtablewidgetitem15 = QTableWidgetItem()
348
+ self.tw_data_files.setHorizontalHeaderItem(5, __qtablewidgetitem15)
349
+ __qtablewidgetitem16 = QTableWidgetItem()
350
+ self.tw_data_files.setHorizontalHeaderItem(6, __qtablewidgetitem16)
351
+ __qtablewidgetitem17 = QTableWidgetItem()
352
+ self.tw_data_files.setHorizontalHeaderItem(7, __qtablewidgetitem17)
353
+ __qtablewidgetitem18 = QTableWidgetItem()
354
+ self.tw_data_files.setHorizontalHeaderItem(8, __qtablewidgetitem18)
355
+ self.tw_data_files.setObjectName(u"tw_data_files")
356
+ self.tw_data_files.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection)
357
+
358
+ self.verticalLayout_15.addWidget(self.tw_data_files)
359
+
360
+ self.splitter_5.addWidget(self.layoutWidget_4)
361
+ self.layoutWidget_5 = QWidget(self.splitter_5)
362
+ self.layoutWidget_5.setObjectName(u"layoutWidget_5")
363
+ self.verticalLayout_16 = QVBoxLayout(self.layoutWidget_5)
364
+ self.verticalLayout_16.setObjectName(u"verticalLayout_16")
365
+ self.verticalLayout_16.setContentsMargins(0, 0, 0, 0)
366
+ self.horizontalLayout_5 = QHBoxLayout()
367
+ self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
368
+ self.pb_add_data_file = QPushButton(self.layoutWidget_5)
369
+ self.pb_add_data_file.setObjectName(u"pb_add_data_file")
370
+
371
+ self.horizontalLayout_5.addWidget(self.pb_add_data_file)
372
+
373
+ self.pb_remove_data_file = QPushButton(self.layoutWidget_5)
374
+ self.pb_remove_data_file.setObjectName(u"pb_remove_data_file")
375
+
376
+ self.horizontalLayout_5.addWidget(self.pb_remove_data_file)
377
+
378
+ self.pb_view_data_head = QPushButton(self.layoutWidget_5)
379
+ self.pb_view_data_head.setObjectName(u"pb_view_data_head")
380
+
381
+ self.horizontalLayout_5.addWidget(self.pb_view_data_head)
382
+
383
+ self.pb_plot_data = QPushButton(self.layoutWidget_5)
384
+ self.pb_plot_data.setObjectName(u"pb_plot_data")
385
+
386
+ self.horizontalLayout_5.addWidget(self.pb_plot_data)
387
+
388
+ self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
389
+
390
+ self.horizontalLayout_5.addItem(self.horizontalSpacer_7)
391
+
392
+
393
+ self.verticalLayout_16.addLayout(self.horizontalLayout_5)
394
+
395
+ self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
396
+
397
+ self.verticalLayout_16.addItem(self.verticalSpacer_4)
398
+
399
+ self.splitter_5.addWidget(self.layoutWidget_5)
400
+
401
+ self.verticalLayout_17.addWidget(self.splitter_5)
402
+
403
+ self.tabWidget.addTab(self.tab_data_files, "")
404
+
405
+ self.verticalLayout_7.addWidget(self.tabWidget)
406
+
407
+ self.sw_observation_type.addWidget(self.pg_media_files)
408
+ self.pg_live = QWidget()
409
+ self.pg_live.setObjectName(u"pg_live")
410
+ self.verticalLayout_4 = QVBoxLayout(self.pg_live)
411
+ self.verticalLayout_4.setObjectName(u"verticalLayout_4")
412
+ self.verticalLayout_8 = QVBoxLayout()
413
+ self.verticalLayout_8.setObjectName(u"verticalLayout_8")
414
+ self.horizontalLayout_8 = QHBoxLayout()
415
+ self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
416
+ self.label_4 = QLabel(self.pg_live)
417
+ self.label_4.setObjectName(u"label_4")
418
+
419
+ self.horizontalLayout_8.addWidget(self.label_4)
420
+
421
+ self.sbScanSampling = QSpinBox(self.pg_live)
422
+ self.sbScanSampling.setObjectName(u"sbScanSampling")
423
+ self.sbScanSampling.setMaximum(1000000)
424
+
425
+ self.horizontalLayout_8.addWidget(self.sbScanSampling)
426
+
427
+ self.label_6 = QLabel(self.pg_live)
428
+ self.label_6.setObjectName(u"label_6")
429
+
430
+ self.horizontalLayout_8.addWidget(self.label_6)
431
+
432
+ self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
433
+
434
+ self.horizontalLayout_8.addItem(self.horizontalSpacer)
435
+
436
+
437
+ self.verticalLayout_8.addLayout(self.horizontalLayout_8)
438
+
439
+ self.cb_start_from_current_time = QCheckBox(self.pg_live)
440
+ self.cb_start_from_current_time.setObjectName(u"cb_start_from_current_time")
441
+
442
+ self.verticalLayout_8.addWidget(self.cb_start_from_current_time)
443
+
444
+ self.rb_day_time = QRadioButton(self.pg_live)
445
+ self.rb_day_time.setObjectName(u"rb_day_time")
446
+ self.rb_day_time.setEnabled(False)
447
+ self.rb_day_time.setChecked(True)
448
+
449
+ self.verticalLayout_8.addWidget(self.rb_day_time)
450
+
451
+ self.rb_epoch_time = QRadioButton(self.pg_live)
452
+ self.rb_epoch_time.setObjectName(u"rb_epoch_time")
453
+ self.rb_epoch_time.setEnabled(False)
454
+
455
+ self.verticalLayout_8.addWidget(self.rb_epoch_time)
456
+
457
+ self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
458
+
459
+ self.verticalLayout_8.addItem(self.verticalSpacer_2)
460
+
461
+
462
+ self.verticalLayout_4.addLayout(self.verticalLayout_8)
463
+
464
+ self.sw_observation_type.addWidget(self.pg_live)
465
+ self.pg_images = QWidget()
466
+ self.pg_images.setObjectName(u"pg_images")
467
+ self.verticalLayout_5 = QVBoxLayout(self.pg_images)
468
+ self.verticalLayout_5.setObjectName(u"verticalLayout_5")
469
+ self.horizontalLayout_9 = QHBoxLayout()
470
+ self.horizontalLayout_9.setObjectName(u"horizontalLayout_9")
471
+ self.lw_images_directory = QListWidget(self.pg_images)
472
+ self.lw_images_directory.setObjectName(u"lw_images_directory")
473
+
474
+ self.horizontalLayout_9.addWidget(self.lw_images_directory)
475
+
476
+
477
+ self.verticalLayout_5.addLayout(self.horizontalLayout_9)
478
+
479
+ self.lb_images_info = QLabel(self.pg_images)
480
+ self.lb_images_info.setObjectName(u"lb_images_info")
481
+
482
+ self.verticalLayout_5.addWidget(self.lb_images_info)
483
+
484
+ self.horizontalLayout_14 = QHBoxLayout()
485
+ self.horizontalLayout_14.setObjectName(u"horizontalLayout_14")
486
+ self.pb_add_directory = QPushButton(self.pg_images)
487
+ self.pb_add_directory.setObjectName(u"pb_add_directory")
488
+
489
+ self.horizontalLayout_14.addWidget(self.pb_add_directory)
490
+
491
+ self.pb_remove_directory = QPushButton(self.pg_images)
492
+ self.pb_remove_directory.setObjectName(u"pb_remove_directory")
493
+
494
+ self.horizontalLayout_14.addWidget(self.pb_remove_directory)
495
+
496
+ self.horizontalSpacer_10 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
497
+
498
+ self.horizontalLayout_14.addItem(self.horizontalSpacer_10)
499
+
500
+
501
+ self.verticalLayout_5.addLayout(self.horizontalLayout_14)
502
+
503
+ self.horizontalLayout_13 = QHBoxLayout()
504
+ self.horizontalLayout_13.setObjectName(u"horizontalLayout_13")
505
+ self.pb_use_img_dir_as_obsid = QPushButton(self.pg_images)
506
+ self.pb_use_img_dir_as_obsid.setObjectName(u"pb_use_img_dir_as_obsid")
507
+
508
+ self.horizontalLayout_13.addWidget(self.pb_use_img_dir_as_obsid)
509
+
510
+ self.horizontalSpacer_9 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
511
+
512
+ self.horizontalLayout_13.addItem(self.horizontalSpacer_9)
513
+
514
+
515
+ self.verticalLayout_5.addLayout(self.horizontalLayout_13)
516
+
517
+ self.groupBox = QGroupBox(self.pg_images)
518
+ self.groupBox.setObjectName(u"groupBox")
519
+ self.horizontalLayout_11 = QHBoxLayout(self.groupBox)
520
+ self.horizontalLayout_11.setObjectName(u"horizontalLayout_11")
521
+ self.horizontalLayout_10 = QHBoxLayout()
522
+ self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
523
+ self.rb_no_time = QRadioButton(self.groupBox)
524
+ self.rb_no_time.setObjectName(u"rb_no_time")
525
+
526
+ self.horizontalLayout_10.addWidget(self.rb_no_time)
527
+
528
+ self.rb_use_exif = QRadioButton(self.groupBox)
529
+ self.rb_use_exif.setObjectName(u"rb_use_exif")
530
+
531
+ self.horizontalLayout_10.addWidget(self.rb_use_exif)
532
+
533
+ self.rb_time_lapse = QRadioButton(self.groupBox)
534
+ self.rb_time_lapse.setObjectName(u"rb_time_lapse")
535
+
536
+ self.horizontalLayout_10.addWidget(self.rb_time_lapse)
537
+
538
+ self.sb_time_lapse = QDoubleSpinBox(self.groupBox)
539
+ self.sb_time_lapse.setObjectName(u"sb_time_lapse")
540
+ self.sb_time_lapse.setDecimals(3)
541
+ self.sb_time_lapse.setMaximum(86400.000000000000000)
542
+
543
+ self.horizontalLayout_10.addWidget(self.sb_time_lapse)
544
+
545
+ self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
546
+
547
+ self.horizontalLayout_10.addItem(self.horizontalSpacer_5)
548
+
549
+
550
+ self.horizontalLayout_11.addLayout(self.horizontalLayout_10)
551
+
552
+
553
+ self.verticalLayout_5.addWidget(self.groupBox)
554
+
555
+ self.sw_observation_type.addWidget(self.pg_images)
556
+
557
+ self.verticalLayout_6.addWidget(self.sw_observation_type)
558
+
559
+ self.horizontalLayout = QHBoxLayout()
560
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
561
+ self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
562
+
563
+ self.horizontalLayout.addItem(self.horizontalSpacer_3)
564
+
565
+ self.pbCancel = QPushButton(Form)
566
+ self.pbCancel.setObjectName(u"pbCancel")
567
+
568
+ self.horizontalLayout.addWidget(self.pbCancel)
569
+
570
+ self.pbSave = QPushButton(Form)
571
+ self.pbSave.setObjectName(u"pbSave")
572
+
573
+ self.horizontalLayout.addWidget(self.pbSave)
574
+
575
+ self.pbLaunch = QPushButton(Form)
576
+ self.pbLaunch.setObjectName(u"pbLaunch")
577
+
578
+ self.horizontalLayout.addWidget(self.pbLaunch)
579
+
580
+
581
+ self.verticalLayout_6.addLayout(self.horizontalLayout)
582
+
583
+
584
+ self.retranslateUi(Form)
585
+
586
+ self.sw_observation_type.setCurrentIndex(1)
587
+ self.tabWidget.setCurrentIndex(0)
588
+
589
+
590
+ QMetaObject.connectSlotsByName(Form)
591
+ # setupUi
592
+
593
+ def retranslateUi(self, Form):
594
+ Form.setWindowTitle(QCoreApplication.translate("Form", u"New observation", None))
595
+ self.label.setText(QCoreApplication.translate("Form", u"Observation id", None))
596
+ self.lb_star.setText(QCoreApplication.translate("Form", u"*", None))
597
+ self.label_8.setText(QCoreApplication.translate("Form", u"Date and time", None))
598
+ self.dteDate.setDisplayFormat(QCoreApplication.translate("Form", u"yyyy-MM-dd hh:mm:ss.zzz", None))
599
+ self.label_9.setText(QCoreApplication.translate("Form", u"Description", None))
600
+ self.cb_time_offset.setText(QCoreApplication.translate("Form", u"Time offset", None))
601
+ self.lbTimeOffset.setText(QCoreApplication.translate("Form", u"Time value", None))
602
+ self.cb_observation_time_interval.setText(QCoreApplication.translate("Form", u"Limit observation to a time interval", None))
603
+ self.label_3.setText(QCoreApplication.translate("Form", u"Independent variables", None))
604
+ ___qtablewidgetitem = self.twIndepVariables.horizontalHeaderItem(0)
605
+ ___qtablewidgetitem.setText(QCoreApplication.translate("Form", u"Variable", None));
606
+ ___qtablewidgetitem1 = self.twIndepVariables.horizontalHeaderItem(1)
607
+ ___qtablewidgetitem1.setText(QCoreApplication.translate("Form", u"Type", None));
608
+ ___qtablewidgetitem2 = self.twIndepVariables.horizontalHeaderItem(2)
609
+ ___qtablewidgetitem2.setText(QCoreApplication.translate("Form", u"Value", None));
610
+ self.gb_observation_type.setTitle(QCoreApplication.translate("Form", u"Observation type", None))
611
+ self.rb_media_files.setText(QCoreApplication.translate("Form", u"Observation from media file(s)", None))
612
+ self.rb_live.setText(QCoreApplication.translate("Form", u"Live observation", None))
613
+ self.rb_images.setText(QCoreApplication.translate("Form", u"Observation from pictures", None))
614
+ ___qtablewidgetitem3 = self.twVideo1.horizontalHeaderItem(0)
615
+ ___qtablewidgetitem3.setText(QCoreApplication.translate("Form", u"Player", None));
616
+ ___qtablewidgetitem4 = self.twVideo1.horizontalHeaderItem(1)
617
+ ___qtablewidgetitem4.setText(QCoreApplication.translate("Form", u"Offset (seconds)", None));
618
+ ___qtablewidgetitem5 = self.twVideo1.horizontalHeaderItem(2)
619
+ ___qtablewidgetitem5.setText(QCoreApplication.translate("Form", u"Path", None));
620
+ ___qtablewidgetitem6 = self.twVideo1.horizontalHeaderItem(3)
621
+ ___qtablewidgetitem6.setText(QCoreApplication.translate("Form", u"Duration", None));
622
+ ___qtablewidgetitem7 = self.twVideo1.horizontalHeaderItem(4)
623
+ ___qtablewidgetitem7.setText(QCoreApplication.translate("Form", u"FPS", None));
624
+ ___qtablewidgetitem8 = self.twVideo1.horizontalHeaderItem(5)
625
+ ___qtablewidgetitem8.setText(QCoreApplication.translate("Form", u"Video", None));
626
+ ___qtablewidgetitem9 = self.twVideo1.horizontalHeaderItem(6)
627
+ ___qtablewidgetitem9.setText(QCoreApplication.translate("Form", u"Audio", None));
628
+ self.pbAddVideo.setText(QCoreApplication.translate("Form", u"Add media", None))
629
+ self.pbRemoveVideo.setText(QCoreApplication.translate("Form", u"Remove selected media", None))
630
+ self.pb_use_media_file_name_as_obsid.setText(QCoreApplication.translate("Form", u"Use media file name as observation id", None))
631
+ self.cbVisualizeSpectrogram.setText(QCoreApplication.translate("Form", u"Visualize the sound spectrogram for the player #1", None))
632
+ self.cb_visualize_waveform.setText(QCoreApplication.translate("Form", u"Visualize the waveform for the player #1", None))
633
+ self.cb_media_creation_date_as_offset.setText(QCoreApplication.translate("Form", u"Use the media creation date/time as offset", None))
634
+ self.label_5.setText(QCoreApplication.translate("Form", u"Scan sampling every (s)", None))
635
+ self.label_2.setText(QCoreApplication.translate("Form", u"Image display duration (s)", None))
636
+ self.cbCloseCurrentBehaviorsBetweenVideo.setText(QCoreApplication.translate("Form", u"Stop ongoing state events between successive media files", None))
637
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_player_1), QCoreApplication.translate("Form", u"Media files", None))
638
+ self.label_7.setText(QCoreApplication.translate("Form", u"Data files to plot", None))
639
+ ___qtablewidgetitem10 = self.tw_data_files.horizontalHeaderItem(0)
640
+ ___qtablewidgetitem10.setText(QCoreApplication.translate("Form", u"Path", None));
641
+ ___qtablewidgetitem11 = self.tw_data_files.horizontalHeaderItem(1)
642
+ ___qtablewidgetitem11.setText(QCoreApplication.translate("Form", u"Columns to plot", None));
643
+ ___qtablewidgetitem12 = self.tw_data_files.horizontalHeaderItem(2)
644
+ ___qtablewidgetitem12.setText(QCoreApplication.translate("Form", u"Plot title", None));
645
+ ___qtablewidgetitem13 = self.tw_data_files.horizontalHeaderItem(3)
646
+ ___qtablewidgetitem13.setText(QCoreApplication.translate("Form", u"Variable name", None));
647
+ ___qtablewidgetitem14 = self.tw_data_files.horizontalHeaderItem(4)
648
+ ___qtablewidgetitem14.setText(QCoreApplication.translate("Form", u"Converters", None));
649
+ ___qtablewidgetitem15 = self.tw_data_files.horizontalHeaderItem(5)
650
+ ___qtablewidgetitem15.setText(QCoreApplication.translate("Form", u"Time interval (s)", None));
651
+ ___qtablewidgetitem16 = self.tw_data_files.horizontalHeaderItem(6)
652
+ ___qtablewidgetitem16.setText(QCoreApplication.translate("Form", u"Start position (s)", None));
653
+ ___qtablewidgetitem17 = self.tw_data_files.horizontalHeaderItem(7)
654
+ ___qtablewidgetitem17.setText(QCoreApplication.translate("Form", u"Substract first value", None));
655
+ ___qtablewidgetitem18 = self.tw_data_files.horizontalHeaderItem(8)
656
+ ___qtablewidgetitem18.setText(QCoreApplication.translate("Form", u"Color", None));
657
+ self.pb_add_data_file.setText(QCoreApplication.translate("Form", u"Add data file", None))
658
+ self.pb_remove_data_file.setText(QCoreApplication.translate("Form", u"Remove selected data file", None))
659
+ self.pb_view_data_head.setText(QCoreApplication.translate("Form", u"View data from file", None))
660
+ self.pb_plot_data.setText(QCoreApplication.translate("Form", u"Show plot", None))
661
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_data_files), QCoreApplication.translate("Form", u"Data files", None))
662
+ self.label_4.setText(QCoreApplication.translate("Form", u"Scan sampling every", None))
663
+ self.label_6.setText(QCoreApplication.translate("Form", u"seconds", None))
664
+ self.cb_start_from_current_time.setText(QCoreApplication.translate("Form", u"Start from current time", None))
665
+ self.rb_day_time.setText(QCoreApplication.translate("Form", u"Day time", None))
666
+ self.rb_epoch_time.setText(QCoreApplication.translate("Form", u"Epoch time (seconds since 1970-01-01)", None))
667
+ self.lb_images_info.setText(QCoreApplication.translate("Form", u"Image info:", None))
668
+ self.pb_add_directory.setText(QCoreApplication.translate("Form", u"Add directory", None))
669
+ self.pb_remove_directory.setText(QCoreApplication.translate("Form", u"Remove directory", None))
670
+ self.pb_use_img_dir_as_obsid.setText(QCoreApplication.translate("Form", u"Use the pictures directory as observation id", None))
671
+ self.groupBox.setTitle(QCoreApplication.translate("Form", u"Time", None))
672
+ self.rb_no_time.setText(QCoreApplication.translate("Form", u"No time", None))
673
+ self.rb_use_exif.setText(QCoreApplication.translate("Form", u"Use the EXIF DateTimeOriginal tag", None))
674
+ self.rb_time_lapse.setText(QCoreApplication.translate("Form", u"Time lapse (s)", None))
675
+ self.pbCancel.setText(QCoreApplication.translate("Form", u"Cancel", None))
676
+ self.pbSave.setText(QCoreApplication.translate("Form", u"Save", None))
677
+ self.pbLaunch.setText(QCoreApplication.translate("Form", u"Start", None))
678
+ # retranslateUi
679
+