boris-behav-obs 8.9.16__py3-none-any.whl → 9.7.6__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.
Potentially problematic release.
This version of boris-behav-obs might be problematic. Click here for more details.
- boris/__init__.py +1 -1
- boris/__main__.py +1 -1
- boris/about.py +36 -39
- boris/add_modifier.py +122 -109
- boris/add_modifier_ui.py +239 -135
- boris/advanced_event_filtering.py +81 -45
- boris/analysis_plugins/__init__.py +0 -0
- boris/analysis_plugins/_latency.py +59 -0
- boris/analysis_plugins/irr_cohen_kappa.py +109 -0
- boris/analysis_plugins/irr_cohen_kappa_with_modifiers.py +112 -0
- boris/analysis_plugins/irr_weighted_cohen_kappa.py +157 -0
- boris/analysis_plugins/irr_weighted_cohen_kappa_with_modifiers.py +162 -0
- boris/analysis_plugins/list_of_dataframe_columns.py +22 -0
- boris/analysis_plugins/number_of_occurences.py +22 -0
- boris/analysis_plugins/number_of_occurences_by_independent_variable.py +54 -0
- boris/analysis_plugins/time_budget.py +61 -0
- boris/behav_coding_map_creator.py +228 -229
- boris/behavior_binary_table.py +33 -50
- boris/behaviors_coding_map.py +17 -18
- boris/boris_cli.py +6 -25
- boris/cmd_arguments.py +12 -1
- boris/coding_pad.py +42 -49
- boris/config.py +161 -77
- boris/config_file.py +63 -83
- boris/connections.py +112 -57
- boris/converters.py +13 -37
- boris/converters_ui.py +187 -110
- boris/cooccurence.py +250 -0
- boris/core.py +2511 -1824
- boris/core_qrc.py +15895 -10185
- boris/core_ui.py +946 -792
- boris/db_functions.py +21 -41
- boris/dev.py +134 -0
- boris/dialog.py +505 -244
- boris/duration_widget.py +15 -20
- boris/edit_event.py +84 -28
- boris/edit_event_ui.py +214 -78
- boris/event_operations.py +517 -415
- boris/events_cursor.py +25 -17
- boris/events_snapshots.py +36 -82
- boris/exclusion_matrix.py +4 -9
- boris/export_events.py +213 -583
- boris/export_observation.py +98 -611
- boris/external_processes.py +156 -97
- boris/geometric_measurement.py +652 -287
- boris/gui_utilities.py +91 -14
- boris/image_overlay.py +9 -9
- boris/import_observations.py +190 -98
- boris/ipc_mpv.py +325 -0
- boris/irr.py +26 -63
- boris/latency.py +34 -25
- boris/measurement_widget.py +14 -18
- boris/media_file.py +52 -84
- boris/menu_options.py +17 -6
- boris/modifier_coding_map_creator.py +1013 -0
- boris/modifiers_coding_map.py +7 -9
- boris/mpv.py +1 -0
- boris/mpv2.py +732 -705
- boris/observation.py +655 -310
- boris/observation_operations.py +1036 -404
- boris/observation_ui.py +584 -356
- boris/observations_list.py +71 -53
- boris/otx_parser.py +74 -80
- boris/param_panel.py +31 -16
- boris/param_panel_ui.py +254 -138
- boris/player_dock_widget.py +90 -60
- boris/plot_data_module.py +43 -46
- boris/plot_events.py +127 -90
- boris/plot_events_rt.py +17 -31
- boris/plot_spectrogram_rt.py +95 -30
- boris/plot_waveform_rt.py +32 -21
- boris/plugins.py +431 -0
- boris/portion/__init__.py +18 -8
- boris/portion/const.py +35 -18
- boris/portion/dict.py +5 -5
- boris/portion/func.py +2 -2
- boris/portion/interval.py +21 -41
- boris/portion/io.py +41 -32
- boris/preferences.py +306 -83
- boris/preferences_ui.py +685 -228
- boris/project.py +448 -293
- boris/project_functions.py +689 -254
- boris/project_import_export.py +213 -222
- boris/project_ui.py +674 -438
- boris/qrc_boris.py +6 -3
- boris/qrc_boris5.py +6 -3
- boris/select_modifiers.py +74 -48
- boris/select_observations.py +20 -199
- boris/select_subj_behav.py +67 -39
- boris/state_events.py +53 -37
- boris/subjects_pad.py +6 -9
- boris/synthetic_time_budget.py +45 -28
- boris/time_budget_functions.py +171 -171
- boris/time_budget_widget.py +84 -114
- boris/transitions.py +41 -47
- boris/utilities.py +766 -266
- boris/version.py +3 -3
- boris/video_equalizer.py +16 -14
- boris/video_equalizer_ui.py +199 -130
- boris/video_operations.py +125 -28
- boris/view_df.py +104 -0
- boris/view_df_ui.py +75 -0
- boris/write_event.py +538 -0
- boris_behav_obs-9.7.6.dist-info/METADATA +139 -0
- boris_behav_obs-9.7.6.dist-info/RECORD +109 -0
- {boris_behav_obs-8.9.16.dist-info → boris_behav_obs-9.7.6.dist-info}/WHEEL +1 -1
- boris_behav_obs-9.7.6.dist-info/entry_points.txt +2 -0
- boris/README.TXT +0 -22
- boris/add_modifier.ui +0 -323
- boris/boris_ui.py +0 -886
- boris/converters.ui +0 -289
- boris/core.qrc +0 -35
- boris/core.ui +0 -1543
- boris/edit_event.ui +0 -175
- boris/icons/logo_eye.ico +0 -0
- boris/map_creator.py +0 -850
- boris/observation.ui +0 -773
- boris/param_panel.ui +0 -379
- boris/preferences.ui +0 -537
- boris/project.ui +0 -1069
- boris/project_server.py +0 -236
- boris/vlc.py +0 -10343
- boris/vlc_local.py +0 -90
- boris_behav_obs-8.9.16.dist-info/LICENSE.TXT +0 -674
- boris_behav_obs-8.9.16.dist-info/METADATA +0 -129
- boris_behav_obs-8.9.16.dist-info/RECORD +0 -108
- boris_behav_obs-8.9.16.dist-info/entry_points.txt +0 -2
- {boris → boris_behav_obs-9.7.6.dist-info/licenses}/LICENSE.TXT +0 -0
- {boris_behav_obs-8.9.16.dist-info → boris_behav_obs-9.7.6.dist-info}/top_level.txt +0 -0
boris/duration_widget.py
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
widget to edit duration > 24 h or < 0
|
|
4
4
|
|
|
5
|
-
https://stackoverflow.com/questions/44380202/creating-a-custom-widget-in-
|
|
5
|
+
https://stackoverflow.com/questions/44380202/creating-a-custom-widget-in-PySide6
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
from decimal import Decimal as dec
|
|
9
9
|
|
|
10
|
-
from
|
|
10
|
+
from PySide6.QtWidgets import (
|
|
11
11
|
QWidget,
|
|
12
12
|
QHBoxLayout,
|
|
13
13
|
QPushButton,
|
|
@@ -20,14 +20,13 @@ from PyQt5.QtWidgets import (
|
|
|
20
20
|
QRadioButton,
|
|
21
21
|
)
|
|
22
22
|
|
|
23
|
-
from
|
|
23
|
+
from PySide6.QtCore import Signal
|
|
24
24
|
|
|
25
25
|
from . import config as cfg
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class Widget_hhmmss(QWidget):
|
|
29
|
-
|
|
30
|
-
time_changed_signal = pyqtSignal(float)
|
|
29
|
+
time_changed_signal = Signal(float)
|
|
31
30
|
|
|
32
31
|
def __init__(self, parent=None):
|
|
33
32
|
QWidget.__init__(self, parent=parent)
|
|
@@ -44,7 +43,7 @@ class Widget_hhmmss(QWidget):
|
|
|
44
43
|
self.hours = QSpinBox()
|
|
45
44
|
self.hours.setValue(0)
|
|
46
45
|
self.hours.setMinimum(0)
|
|
47
|
-
self.hours.setMaximum(
|
|
46
|
+
self.hours.setMaximum(2**31 - 1)
|
|
48
47
|
self.hours.valueChanged.connect(self.update_time_value)
|
|
49
48
|
lay.addWidget(self.hours)
|
|
50
49
|
lay.addWidget(QLabel(":"))
|
|
@@ -84,12 +83,7 @@ class Widget_hhmmss(QWidget):
|
|
|
84
83
|
self.update_time_value()
|
|
85
84
|
|
|
86
85
|
def update_time_value(self):
|
|
87
|
-
new_time = (
|
|
88
|
-
self.hours.value() * 3600
|
|
89
|
-
+ self.minutes.value() * 60
|
|
90
|
-
+ self.seconds.value()
|
|
91
|
-
+ self.milliseconds.value() / 1000
|
|
92
|
-
)
|
|
86
|
+
new_time = self.hours.value() * 3600 + self.minutes.value() * 60 + self.seconds.value() + self.milliseconds.value() / 1000
|
|
93
87
|
if self.sign.text() == "-":
|
|
94
88
|
new_time = -new_time
|
|
95
89
|
|
|
@@ -123,8 +117,7 @@ class Widget_hhmmss(QWidget):
|
|
|
123
117
|
|
|
124
118
|
|
|
125
119
|
class Widget_seconds(QWidget):
|
|
126
|
-
|
|
127
|
-
time_changed_signal = pyqtSignal(float)
|
|
120
|
+
time_changed_signal = Signal(float)
|
|
128
121
|
|
|
129
122
|
def __init__(self, parent=None):
|
|
130
123
|
QWidget.__init__(self, parent=parent)
|
|
@@ -151,16 +144,16 @@ class Widget_seconds(QWidget):
|
|
|
151
144
|
|
|
152
145
|
class Duration_widget(QWidget):
|
|
153
146
|
def __init__(self, time_value=0, parent=None):
|
|
154
|
-
|
|
155
147
|
super().__init__()
|
|
156
148
|
|
|
157
|
-
self.time_value = dec
|
|
149
|
+
self.time_value = dec(time_value).quantize(dec(".001"))
|
|
158
150
|
|
|
159
151
|
lay = QHBoxLayout(self)
|
|
160
152
|
lay.setSpacing(0)
|
|
161
153
|
lay.setContentsMargins(0, 0, 0, 0)
|
|
162
154
|
|
|
163
155
|
self.Stack = QStackedWidget()
|
|
156
|
+
|
|
164
157
|
self.w1 = Widget_hhmmss()
|
|
165
158
|
self.w1.time_changed_signal.connect(self.time_changed)
|
|
166
159
|
self.Stack.addWidget(self.w1)
|
|
@@ -171,7 +164,7 @@ class Duration_widget(QWidget):
|
|
|
171
164
|
|
|
172
165
|
lay.addWidget(self.Stack)
|
|
173
166
|
|
|
174
|
-
self.format_hhmmss = QRadioButton(
|
|
167
|
+
self.format_hhmmss = QRadioButton("HH:MM:SS:MS")
|
|
175
168
|
self.format_hhmmss.setChecked(True)
|
|
176
169
|
self.format_hhmmss.clicked.connect(self.set_format_hhmmss)
|
|
177
170
|
lay.addWidget(self.format_hhmmss)
|
|
@@ -192,6 +185,8 @@ class Duration_widget(QWidget):
|
|
|
192
185
|
self.time_value = x
|
|
193
186
|
|
|
194
187
|
def set_time(self, new_time):
|
|
188
|
+
if new_time.is_nan():
|
|
189
|
+
return
|
|
195
190
|
|
|
196
191
|
self.w1.sign.setText("-" if new_time < 0 else "+")
|
|
197
192
|
|
|
@@ -236,8 +231,8 @@ class Duration_widget(QWidget):
|
|
|
236
231
|
if time_format in [cfg.S]:
|
|
237
232
|
self.set_format_s()
|
|
238
233
|
|
|
239
|
-
def get_time(self) -> dec
|
|
234
|
+
def get_time(self) -> dec:
|
|
240
235
|
"""
|
|
241
236
|
return time displayed by widget in seconds
|
|
242
237
|
"""
|
|
243
|
-
return dec
|
|
238
|
+
return dec(self.time_value).quantize(dec(".001"))
|
boris/edit_event.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
BORIS
|
|
3
3
|
Behavioral Observation Research Interactive Software
|
|
4
|
-
Copyright 2012-
|
|
4
|
+
Copyright 2012-2025 Olivier Friard
|
|
5
5
|
|
|
6
6
|
This file is part of BORIS.
|
|
7
7
|
|
|
@@ -20,9 +20,11 @@ This file is part of BORIS.
|
|
|
20
20
|
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
from
|
|
23
|
+
from decimal import Decimal as dec
|
|
24
|
+
import logging
|
|
25
|
+
|
|
26
|
+
from PySide6.QtWidgets import (
|
|
24
27
|
QDialog,
|
|
25
|
-
QSpinBox,
|
|
26
28
|
QHBoxLayout,
|
|
27
29
|
QLabel,
|
|
28
30
|
QLineEdit,
|
|
@@ -34,7 +36,7 @@ from PyQt5.QtWidgets import (
|
|
|
34
36
|
)
|
|
35
37
|
|
|
36
38
|
from . import config as cfg
|
|
37
|
-
from . import
|
|
39
|
+
from . import dialog
|
|
38
40
|
from .edit_event_ui import Ui_Form
|
|
39
41
|
|
|
40
42
|
|
|
@@ -42,54 +44,109 @@ class DlgEditEvent(QDialog, Ui_Form):
|
|
|
42
44
|
def __init__(
|
|
43
45
|
self,
|
|
44
46
|
observation_type: str,
|
|
45
|
-
time_value=
|
|
47
|
+
time_value: dec = dec("NaN"),
|
|
48
|
+
image_idx=None,
|
|
46
49
|
current_time=0,
|
|
47
|
-
time_format=cfg.S,
|
|
48
|
-
show_set_current_time=False,
|
|
50
|
+
time_format: str = cfg.S,
|
|
51
|
+
show_set_current_time: bool = False,
|
|
52
|
+
exif_date_time: dec | None = None,
|
|
49
53
|
parent=None,
|
|
50
54
|
):
|
|
51
|
-
|
|
52
55
|
super().__init__(parent)
|
|
53
56
|
self.setupUi(self)
|
|
54
57
|
self.time_value = time_value
|
|
58
|
+
self.image_idx = image_idx
|
|
55
59
|
self.observation_type = observation_type
|
|
56
60
|
|
|
57
61
|
self.pb_set_to_current_time.setVisible(show_set_current_time)
|
|
58
62
|
self.current_time = current_time
|
|
63
|
+
self.exif_date_time = exif_date_time
|
|
64
|
+
|
|
65
|
+
# hide frame index for all observations
|
|
66
|
+
# frame index is determined in base of time
|
|
67
|
+
for w in (
|
|
68
|
+
self.lb_frame_idx,
|
|
69
|
+
self.sb_frame_idx,
|
|
70
|
+
self.cb_set_frame_idx_na,
|
|
71
|
+
):
|
|
72
|
+
w.setVisible(False)
|
|
73
|
+
|
|
74
|
+
# hide image index
|
|
75
|
+
if observation_type in (cfg.LIVE, cfg.MEDIA):
|
|
76
|
+
# hide image index
|
|
77
|
+
for w in (
|
|
78
|
+
self.cb_set_time_na,
|
|
79
|
+
self.gb_image_index,
|
|
80
|
+
):
|
|
81
|
+
w.setVisible(False)
|
|
59
82
|
|
|
60
|
-
|
|
61
|
-
self.
|
|
83
|
+
# widget for time
|
|
84
|
+
self.time_widget = dialog.get_time_widget(self.time_value)
|
|
62
85
|
|
|
63
|
-
if
|
|
64
|
-
self.time_widget
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
86
|
+
if time_format == cfg.S:
|
|
87
|
+
self.time_widget.rb_seconds.setChecked(True)
|
|
88
|
+
if time_format == cfg.HHMMSS:
|
|
89
|
+
self.time_widget.rb_time.setChecked(True)
|
|
90
|
+
if not self.time_value.is_nan() and int(self.time_value) > cfg.DATE_CUTOFF:
|
|
91
|
+
self.time_widget.rb_datetime.setChecked(True)
|
|
69
92
|
|
|
70
|
-
|
|
93
|
+
self.horizontalLayout_3.insertWidget(0, self.time_widget)
|
|
71
94
|
|
|
72
95
|
if observation_type == cfg.IMAGES:
|
|
73
|
-
|
|
74
|
-
self.pb_set_to_current_time.
|
|
75
|
-
self.
|
|
76
|
-
self.img_idx_widget.setValue(self.time_value)
|
|
77
|
-
|
|
78
|
-
self.horizontalLayout_2.insertWidget(0, self.img_idx_widget)
|
|
96
|
+
# hide frame index widgets
|
|
97
|
+
self.pb_set_to_current_time.setVisible(self.exif_date_time is not None)
|
|
98
|
+
self.sb_image_idx.setValue(self.image_idx)
|
|
79
99
|
|
|
80
100
|
self.pb_set_to_current_time.clicked.connect(self.set_to_current_time)
|
|
81
|
-
self.
|
|
101
|
+
self.pb_set_to_current_image_index.clicked.connect(self.set_to_current_image_index)
|
|
102
|
+
|
|
103
|
+
self.cb_set_time_na.stateChanged.connect(self.time_na)
|
|
104
|
+
|
|
105
|
+
# self.cb_set_frame_idx_na.stateChanged.connect(self.frame_idx_na)
|
|
106
|
+
self.pbOK.clicked.connect(self.close_widget)
|
|
82
107
|
self.pbCancel.clicked.connect(self.reject)
|
|
83
108
|
|
|
109
|
+
def close_widget(self):
|
|
110
|
+
"""
|
|
111
|
+
close the widget
|
|
112
|
+
"""
|
|
113
|
+
if self.observation_type in (cfg.IMAGES):
|
|
114
|
+
if self.sb_image_idx.value() == 0:
|
|
115
|
+
QMessageBox.warning(self, cfg.programName, "The image index cannot be null")
|
|
116
|
+
return
|
|
117
|
+
self.accept()
|
|
118
|
+
|
|
119
|
+
def set_to_current_image_index(self):
|
|
120
|
+
"""
|
|
121
|
+
set image index to current image index
|
|
122
|
+
"""
|
|
123
|
+
if self.observation_type in (cfg.IMAGES):
|
|
124
|
+
self.sb_image_idx.setValue(int(self.current_time))
|
|
125
|
+
|
|
84
126
|
def set_to_current_time(self):
|
|
85
127
|
"""
|
|
86
128
|
set time to current media time
|
|
87
129
|
"""
|
|
130
|
+
|
|
88
131
|
if self.observation_type in (cfg.LIVE, cfg.MEDIA):
|
|
89
|
-
self.time_widget.set_time(float(self.current_time))
|
|
132
|
+
self.time_widget.set_time(dec(float(self.current_time)))
|
|
90
133
|
|
|
91
|
-
if self.observation_type
|
|
92
|
-
self.
|
|
134
|
+
if self.observation_type == cfg.IMAGES:
|
|
135
|
+
if self.exif_date_time is not None:
|
|
136
|
+
self.time_widget.set_time(dec(self.exif_date_time))
|
|
137
|
+
|
|
138
|
+
def time_na(self):
|
|
139
|
+
"""
|
|
140
|
+
set/unset time to NA
|
|
141
|
+
"""
|
|
142
|
+
|
|
143
|
+
logging.debug("time_na function")
|
|
144
|
+
|
|
145
|
+
self.time_widget.setVisible(not self.cb_set_time_na.isChecked())
|
|
146
|
+
self.time_widget.setEnabled(not self.cb_set_time_na.isChecked())
|
|
147
|
+
|
|
148
|
+
self.pb_set_to_current_time.setVisible(not self.cb_set_time_na.isChecked() and self.exif_date_time is not None)
|
|
149
|
+
self.pb_set_to_current_time.setEnabled(not self.cb_set_time_na.isChecked())
|
|
93
150
|
|
|
94
151
|
|
|
95
152
|
class EditSelectedEvents(QDialog):
|
|
@@ -142,7 +199,6 @@ class EditSelectedEvents(QDialog):
|
|
|
142
199
|
self.setLayout(hbox)
|
|
143
200
|
|
|
144
201
|
def rb_changed(self):
|
|
145
|
-
|
|
146
202
|
self.newText.setEnabled(not self.rbComment.isChecked())
|
|
147
203
|
self.commentText.setEnabled(self.rbComment.isChecked())
|
|
148
204
|
|
boris/edit_event_ui.py
CHANGED
|
@@ -1,97 +1,233 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
################################################################################
|
|
4
|
+
## Form generated from reading UI file 'edit_event.ui'
|
|
5
|
+
##
|
|
6
|
+
## Created by: Qt User Interface Compiler version 6.9.0
|
|
7
|
+
##
|
|
8
|
+
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
|
9
|
+
################################################################################
|
|
8
10
|
|
|
9
|
-
from
|
|
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 (QApplication, QCheckBox, QComboBox, QGroupBox,
|
|
19
|
+
QHBoxLayout, QLabel, QPlainTextEdit, QPushButton,
|
|
20
|
+
QSizePolicy, QSpacerItem, QSpinBox, QVBoxLayout,
|
|
21
|
+
QWidget)
|
|
10
22
|
|
|
11
23
|
class Ui_Form(object):
|
|
12
24
|
def setupUi(self, Form):
|
|
13
|
-
Form.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
self.
|
|
17
|
-
self.
|
|
18
|
-
self.
|
|
19
|
-
self.
|
|
20
|
-
self.
|
|
21
|
-
self.
|
|
22
|
-
self.
|
|
23
|
-
self.
|
|
24
|
-
self.
|
|
25
|
-
self.
|
|
26
|
-
|
|
27
|
-
self.
|
|
28
|
-
|
|
29
|
-
self.
|
|
30
|
-
|
|
31
|
-
self.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
self.
|
|
35
|
-
|
|
36
|
-
self.
|
|
37
|
-
|
|
38
|
-
self.
|
|
25
|
+
if not Form.objectName():
|
|
26
|
+
Form.setObjectName(u"Form")
|
|
27
|
+
Form.resize(600, 638)
|
|
28
|
+
self.verticalLayout_3 = QVBoxLayout(Form)
|
|
29
|
+
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
|
|
30
|
+
self.gb_time = QGroupBox(Form)
|
|
31
|
+
self.gb_time.setObjectName(u"gb_time")
|
|
32
|
+
self.verticalLayout = QVBoxLayout(self.gb_time)
|
|
33
|
+
self.verticalLayout.setObjectName(u"verticalLayout")
|
|
34
|
+
self.horizontalLayout_8 = QHBoxLayout()
|
|
35
|
+
self.horizontalLayout_8.setObjectName(u"horizontalLayout_8")
|
|
36
|
+
self.cb_set_time_na = QCheckBox(self.gb_time)
|
|
37
|
+
self.cb_set_time_na.setObjectName(u"cb_set_time_na")
|
|
38
|
+
|
|
39
|
+
self.horizontalLayout_8.addWidget(self.cb_set_time_na)
|
|
40
|
+
|
|
41
|
+
self.horizontalSpacer_7 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
|
42
|
+
|
|
43
|
+
self.horizontalLayout_8.addItem(self.horizontalSpacer_7)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
self.verticalLayout.addLayout(self.horizontalLayout_8)
|
|
47
|
+
|
|
48
|
+
self.horizontalLayout_3 = QHBoxLayout()
|
|
49
|
+
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
|
|
50
|
+
self.lb_time = QLabel(self.gb_time)
|
|
51
|
+
self.lb_time.setObjectName(u"lb_time")
|
|
52
|
+
|
|
53
|
+
self.horizontalLayout_3.addWidget(self.lb_time)
|
|
54
|
+
|
|
55
|
+
self.horizontalLayout_2 = QHBoxLayout()
|
|
56
|
+
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
|
|
57
|
+
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
|
58
|
+
|
|
59
|
+
self.horizontalLayout_2.addItem(self.horizontalSpacer)
|
|
60
|
+
|
|
61
|
+
|
|
39
62
|
self.horizontalLayout_3.addLayout(self.horizontalLayout_2)
|
|
63
|
+
|
|
64
|
+
|
|
40
65
|
self.verticalLayout.addLayout(self.horizontalLayout_3)
|
|
41
|
-
|
|
42
|
-
self.
|
|
43
|
-
self.
|
|
44
|
-
self.
|
|
66
|
+
|
|
67
|
+
self.horizontalLayout_9 = QHBoxLayout()
|
|
68
|
+
self.horizontalLayout_9.setObjectName(u"horizontalLayout_9")
|
|
69
|
+
self.pb_set_to_current_time = QPushButton(self.gb_time)
|
|
70
|
+
self.pb_set_to_current_time.setObjectName(u"pb_set_to_current_time")
|
|
71
|
+
|
|
72
|
+
self.horizontalLayout_9.addWidget(self.pb_set_to_current_time)
|
|
73
|
+
|
|
74
|
+
self.horizontalSpacer_8 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
|
75
|
+
|
|
76
|
+
self.horizontalLayout_9.addItem(self.horizontalSpacer_8)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
self.verticalLayout.addLayout(self.horizontalLayout_9)
|
|
80
|
+
|
|
81
|
+
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
|
82
|
+
|
|
83
|
+
self.verticalLayout.addItem(self.verticalSpacer)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
self.verticalLayout_3.addWidget(self.gb_time)
|
|
87
|
+
|
|
88
|
+
self.gb_image_index = QGroupBox(Form)
|
|
89
|
+
self.gb_image_index.setObjectName(u"gb_image_index")
|
|
90
|
+
self.verticalLayout_2 = QVBoxLayout(self.gb_image_index)
|
|
91
|
+
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
|
|
92
|
+
self.horizontalLayout_7 = QHBoxLayout()
|
|
93
|
+
self.horizontalLayout_7.setObjectName(u"horizontalLayout_7")
|
|
94
|
+
self.sb_image_idx = QSpinBox(self.gb_image_index)
|
|
95
|
+
self.sb_image_idx.setObjectName(u"sb_image_idx")
|
|
96
|
+
self.sb_image_idx.setMaximum(10000000)
|
|
97
|
+
|
|
98
|
+
self.horizontalLayout_7.addWidget(self.sb_image_idx)
|
|
99
|
+
|
|
100
|
+
self.pb_set_to_current_image_index = QPushButton(self.gb_image_index)
|
|
101
|
+
self.pb_set_to_current_image_index.setObjectName(u"pb_set_to_current_image_index")
|
|
102
|
+
|
|
103
|
+
self.horizontalLayout_7.addWidget(self.pb_set_to_current_image_index)
|
|
104
|
+
|
|
105
|
+
self.horizontalSpacer_6 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
|
106
|
+
|
|
107
|
+
self.horizontalLayout_7.addItem(self.horizontalSpacer_6)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
self.verticalLayout_2.addLayout(self.horizontalLayout_7)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
self.verticalLayout_3.addWidget(self.gb_image_index)
|
|
114
|
+
|
|
115
|
+
self.horizontalLayout_4 = QHBoxLayout()
|
|
116
|
+
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
|
|
117
|
+
self.lbSubject = QLabel(Form)
|
|
118
|
+
self.lbSubject.setObjectName(u"lbSubject")
|
|
119
|
+
|
|
45
120
|
self.horizontalLayout_4.addWidget(self.lbSubject)
|
|
46
|
-
|
|
47
|
-
self.cobSubject
|
|
121
|
+
|
|
122
|
+
self.cobSubject = QComboBox(Form)
|
|
123
|
+
self.cobSubject.setObjectName(u"cobSubject")
|
|
124
|
+
|
|
48
125
|
self.horizontalLayout_4.addWidget(self.cobSubject)
|
|
49
|
-
|
|
50
|
-
self.
|
|
51
|
-
|
|
52
|
-
self.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
self.
|
|
126
|
+
|
|
127
|
+
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
|
128
|
+
|
|
129
|
+
self.horizontalLayout_4.addItem(self.horizontalSpacer_2)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
self.verticalLayout_3.addLayout(self.horizontalLayout_4)
|
|
133
|
+
|
|
134
|
+
self.horizontalLayout_5 = QHBoxLayout()
|
|
135
|
+
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
|
|
136
|
+
self.label_2 = QLabel(Form)
|
|
137
|
+
self.label_2.setObjectName(u"label_2")
|
|
138
|
+
|
|
56
139
|
self.horizontalLayout_5.addWidget(self.label_2)
|
|
57
|
-
|
|
58
|
-
self.cobCode
|
|
140
|
+
|
|
141
|
+
self.cobCode = QComboBox(Form)
|
|
142
|
+
self.cobCode.setObjectName(u"cobCode")
|
|
143
|
+
|
|
59
144
|
self.horizontalLayout_5.addWidget(self.cobCode)
|
|
60
|
-
|
|
61
|
-
self.
|
|
62
|
-
|
|
63
|
-
self.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
self.
|
|
67
|
-
|
|
68
|
-
self.
|
|
69
|
-
self.
|
|
70
|
-
self.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
self.
|
|
74
|
-
|
|
145
|
+
|
|
146
|
+
self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
|
147
|
+
|
|
148
|
+
self.horizontalLayout_5.addItem(self.horizontalSpacer_3)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
self.verticalLayout_3.addLayout(self.horizontalLayout_5)
|
|
152
|
+
|
|
153
|
+
self.horizontalLayout_6 = QHBoxLayout()
|
|
154
|
+
self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")
|
|
155
|
+
self.lb_frame_idx = QLabel(Form)
|
|
156
|
+
self.lb_frame_idx.setObjectName(u"lb_frame_idx")
|
|
157
|
+
|
|
158
|
+
self.horizontalLayout_6.addWidget(self.lb_frame_idx)
|
|
159
|
+
|
|
160
|
+
self.sb_frame_idx = QSpinBox(Form)
|
|
161
|
+
self.sb_frame_idx.setObjectName(u"sb_frame_idx")
|
|
162
|
+
self.sb_frame_idx.setMinimum(0)
|
|
163
|
+
self.sb_frame_idx.setMaximum(100000000)
|
|
164
|
+
|
|
165
|
+
self.horizontalLayout_6.addWidget(self.sb_frame_idx)
|
|
166
|
+
|
|
167
|
+
self.cb_set_frame_idx_na = QCheckBox(Form)
|
|
168
|
+
self.cb_set_frame_idx_na.setObjectName(u"cb_set_frame_idx_na")
|
|
169
|
+
|
|
170
|
+
self.horizontalLayout_6.addWidget(self.cb_set_frame_idx_na)
|
|
171
|
+
|
|
172
|
+
self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
|
173
|
+
|
|
174
|
+
self.horizontalLayout_6.addItem(self.horizontalSpacer_5)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
self.verticalLayout_3.addLayout(self.horizontalLayout_6)
|
|
178
|
+
|
|
179
|
+
self.label_4 = QLabel(Form)
|
|
180
|
+
self.label_4.setObjectName(u"label_4")
|
|
181
|
+
|
|
182
|
+
self.verticalLayout_3.addWidget(self.label_4)
|
|
183
|
+
|
|
184
|
+
self.leComment = QPlainTextEdit(Form)
|
|
185
|
+
self.leComment.setObjectName(u"leComment")
|
|
186
|
+
|
|
187
|
+
self.verticalLayout_3.addWidget(self.leComment)
|
|
188
|
+
|
|
189
|
+
self.horizontalLayout = QHBoxLayout()
|
|
190
|
+
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
|
191
|
+
self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
|
192
|
+
|
|
193
|
+
self.horizontalLayout.addItem(self.horizontalSpacer_4)
|
|
194
|
+
|
|
195
|
+
self.pbCancel = QPushButton(Form)
|
|
196
|
+
self.pbCancel.setObjectName(u"pbCancel")
|
|
197
|
+
|
|
75
198
|
self.horizontalLayout.addWidget(self.pbCancel)
|
|
76
|
-
|
|
77
|
-
self.pbOK
|
|
78
|
-
self.pbOK.setObjectName("pbOK")
|
|
199
|
+
|
|
200
|
+
self.pbOK = QPushButton(Form)
|
|
201
|
+
self.pbOK.setObjectName(u"pbOK")
|
|
202
|
+
|
|
79
203
|
self.horizontalLayout.addWidget(self.pbOK)
|
|
80
|
-
|
|
81
|
-
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
self.verticalLayout_3.addLayout(self.horizontalLayout)
|
|
207
|
+
|
|
82
208
|
|
|
83
209
|
self.retranslateUi(Form)
|
|
84
|
-
|
|
210
|
+
|
|
211
|
+
self.pbOK.setDefault(True)
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
QMetaObject.connectSlotsByName(Form)
|
|
215
|
+
# setupUi
|
|
85
216
|
|
|
86
217
|
def retranslateUi(self, Form):
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
self.
|
|
90
|
-
self.
|
|
91
|
-
self.pb_set_to_current_time.setText(
|
|
92
|
-
self.
|
|
93
|
-
self.
|
|
94
|
-
self.
|
|
95
|
-
self.
|
|
96
|
-
self.
|
|
218
|
+
Form.setWindowTitle(QCoreApplication.translate("Form", u"Edit event", None))
|
|
219
|
+
self.gb_time.setTitle(QCoreApplication.translate("Form", u"Time", None))
|
|
220
|
+
self.cb_set_time_na.setText(QCoreApplication.translate("Form", u"Set time to NA", None))
|
|
221
|
+
self.lb_time.setText("")
|
|
222
|
+
self.pb_set_to_current_time.setText(QCoreApplication.translate("Form", u"Set to current time", None))
|
|
223
|
+
self.gb_image_index.setTitle(QCoreApplication.translate("Form", u"Image index", None))
|
|
224
|
+
self.pb_set_to_current_image_index.setText(QCoreApplication.translate("Form", u"Set to current image index", None))
|
|
225
|
+
self.lbSubject.setText(QCoreApplication.translate("Form", u"Subject", None))
|
|
226
|
+
self.label_2.setText(QCoreApplication.translate("Form", u"Behavior", None))
|
|
227
|
+
self.lb_frame_idx.setText(QCoreApplication.translate("Form", u"Frame index", None))
|
|
228
|
+
self.cb_set_frame_idx_na.setText(QCoreApplication.translate("Form", u"Set NA", None))
|
|
229
|
+
self.label_4.setText(QCoreApplication.translate("Form", u"Comment", None))
|
|
230
|
+
self.pbCancel.setText(QCoreApplication.translate("Form", u"Cancel", None))
|
|
231
|
+
self.pbOK.setText(QCoreApplication.translate("Form", u"OK", None))
|
|
232
|
+
# retranslateUi
|
|
97
233
|
|