boris-behav-obs 9.0.1__py2.py3-none-any.whl → 9.0.4__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/__init__.py +1 -1
- boris/__main__.py +1 -1
- boris/about.py +2 -2
- boris/add_modifier.py +1 -1
- boris/add_modifier_ui.py +22 -22
- boris/advanced_event_filtering.py +1 -1
- boris/analysis_plugins/number_of_occurences.py +6 -3
- boris/analysis_plugins/number_of_occurences_by_independent_variable.py +6 -4
- boris/analysis_plugins/time_budget.py +24 -14
- boris/behav_coding_map_creator.py +1 -1
- boris/behavior_binary_table.py +1 -1
- boris/behaviors_coding_map.py +1 -1
- boris/boris_cli.py +1 -1
- boris/cmd_arguments.py +1 -1
- boris/coding_pad.py +1 -1
- boris/config.py +16 -9
- boris/config_file.py +1 -1
- boris/connections.py +1 -1
- boris/converters.py +1 -1
- boris/cooccurence.py +1 -1
- boris/core.py +144 -176
- boris/db_functions.py +1 -1
- boris/dialog.py +10 -277
- boris/edit_event.py +8 -1
- boris/event_operations.py +1 -1
- boris/events_cursor.py +1 -1
- boris/events_snapshots.py +1 -1
- boris/exclusion_matrix.py +1 -1
- boris/export_events.py +1 -1
- boris/export_observation.py +1 -1
- boris/external_processes.py +1 -1
- boris/geometric_measurement.py +1 -1
- boris/gui_utilities.py +1 -1
- boris/image_overlay.py +1 -1
- boris/import_observations.py +1 -1
- boris/irr.py +1 -1
- boris/latency.py +1 -1
- boris/map_creator.py +1 -1
- boris/measurement_widget.py +1 -1
- boris/media_file.py +1 -1
- boris/menu_options.py +1 -1
- boris/modifiers_coding_map.py +1 -1
- boris/observation.py +1 -1
- boris/observation_operations.py +530 -425
- boris/observations_list.py +3 -3
- boris/otx_parser.py +1 -1
- boris/param_panel.py +1 -1
- boris/player_dock_widget.py +13 -9
- boris/plot_data_module.py +1 -1
- boris/plot_events.py +1 -1
- boris/plot_events_rt.py +1 -1
- boris/plot_spectrogram_rt.py +1 -1
- boris/plot_waveform_rt.py +1 -1
- boris/plugins.py +2 -2
- boris/preferences.py +6 -1
- boris/preferences_ui.py +7 -1
- boris/project.py +1 -1
- boris/project_functions.py +73 -76
- boris/project_import_export.py +1 -1
- boris/select_modifiers.py +1 -1
- boris/select_observations.py +6 -6
- boris/select_subj_behav.py +1 -1
- boris/state_events.py +1 -1
- boris/subjects_pad.py +1 -1
- boris/synthetic_time_budget.py +1 -1
- boris/time_budget_functions.py +1 -1
- boris/time_budget_widget.py +5 -5
- boris/transitions.py +1 -1
- boris/utilities.py +8 -8
- boris/version.py +3 -3
- boris/video_equalizer.py +1 -1
- boris/video_operations.py +1 -1
- boris/write_event.py +1 -1
- {boris_behav_obs-9.0.1.dist-info → boris_behav_obs-9.0.4.dist-info}/METADATA +1 -1
- boris_behav_obs-9.0.4.dist-info/RECORD +103 -0
- boris_behav_obs-9.0.1.dist-info/RECORD +0 -103
- {boris_behav_obs-9.0.1.dist-info → boris_behav_obs-9.0.4.dist-info}/LICENSE.TXT +0 -0
- {boris_behav_obs-9.0.1.dist-info → boris_behav_obs-9.0.4.dist-info}/WHEEL +0 -0
- {boris_behav_obs-9.0.1.dist-info → boris_behav_obs-9.0.4.dist-info}/entry_points.txt +0 -0
- {boris_behav_obs-9.0.1.dist-info → boris_behav_obs-9.0.4.dist-info}/top_level.txt +0 -0
boris/dialog.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
|
|
|
@@ -430,165 +430,6 @@ class get_time_widget(QWidget):
|
|
|
430
430
|
self.rb_datetime.setChecked(True)
|
|
431
431
|
|
|
432
432
|
|
|
433
|
-
'''
|
|
434
|
-
class get_time_widget(QWidget):
|
|
435
|
-
"""
|
|
436
|
-
widget for selecting a time in various formats: secondes, HH:MM:SS:ZZZ or YYYY-mm-DD HH:MM:SS:ZZZ
|
|
437
|
-
"""
|
|
438
|
-
|
|
439
|
-
def __init__(self, time_value=0, parent=None):
|
|
440
|
-
super().__init__(parent)
|
|
441
|
-
|
|
442
|
-
self.setWindowTitle("BORIS")
|
|
443
|
-
|
|
444
|
-
self.widget = QWidget()
|
|
445
|
-
self.widget.setObjectName("widget")
|
|
446
|
-
|
|
447
|
-
self.widget.setGeometry(QRect(60, 171, 278, 124))
|
|
448
|
-
self.verticalLayout = QVBoxLayout(self.widget)
|
|
449
|
-
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
|
450
|
-
self.horizontalLayout_2 = QHBoxLayout()
|
|
451
|
-
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
|
452
|
-
self.pb_sign = QPushButton(self.widget, clicked=self.pb_sign_clicked)
|
|
453
|
-
self.pb_sign.setText("+")
|
|
454
|
-
font = QFont()
|
|
455
|
-
font.setPointSize(14)
|
|
456
|
-
self.pb_sign.setFont(font)
|
|
457
|
-
|
|
458
|
-
self.horizontalLayout_2.addWidget(self.pb_sign)
|
|
459
|
-
|
|
460
|
-
self.gridLayout_3 = QGridLayout()
|
|
461
|
-
self.gridLayout = QGridLayout()
|
|
462
|
-
|
|
463
|
-
self.rb_seconds = QRadioButton(self.widget)
|
|
464
|
-
self.rb_seconds.toggled.connect(self.format_changed)
|
|
465
|
-
self.gridLayout.addWidget(self.rb_seconds, 0, 0, 1, 1)
|
|
466
|
-
|
|
467
|
-
self.le_seconds = QLineEdit(self.widget)
|
|
468
|
-
self.le_seconds.setText("0.000")
|
|
469
|
-
self.le_seconds.setValidator(QRegExpValidator(QRegExp("([0-9]+([.][0-9]*)?|[.][0-9]+)")))
|
|
470
|
-
self.gridLayout.addWidget(self.le_seconds, 0, 1, 1, 1)
|
|
471
|
-
|
|
472
|
-
self.lb_seconds = QLabel(self.widget)
|
|
473
|
-
self.lb_seconds.setText("seconds")
|
|
474
|
-
self.lb_seconds.setIndent(0)
|
|
475
|
-
self.gridLayout.addWidget(self.lb_seconds, 0, 2, 1, 1)
|
|
476
|
-
|
|
477
|
-
self.lb_hour = QLabel(self.widget)
|
|
478
|
-
self.lb_hour.setText("hour")
|
|
479
|
-
self.lb_hour.setIndent(0)
|
|
480
|
-
self.gridLayout.addWidget(self.lb_hour, 1, 1, 1, 1)
|
|
481
|
-
|
|
482
|
-
self.lb_hhmmss = QLabel(self.widget)
|
|
483
|
-
self.lb_hhmmss.setText("mm:ss.ms")
|
|
484
|
-
self.gridLayout.addWidget(self.lb_hhmmss, 1, 2, 1, 1)
|
|
485
|
-
|
|
486
|
-
self.rb_time = QRadioButton(self.widget)
|
|
487
|
-
self.rb_time.toggled.connect(self.format_changed)
|
|
488
|
-
self.gridLayout.addWidget(self.rb_time, 2, 0, 1, 1)
|
|
489
|
-
|
|
490
|
-
self.sb_hour = QSpinBox(self.widget)
|
|
491
|
-
self.sb_hour.setButtonSymbols(QAbstractSpinBox.NoButtons)
|
|
492
|
-
self.sb_hour.setMinimum(0)
|
|
493
|
-
self.sb_hour.setMaximum(cfg.HOUR_CUTOFF)
|
|
494
|
-
self.sb_hour.setDisplayIntegerBase(10)
|
|
495
|
-
self.gridLayout.addWidget(self.sb_hour, 2, 1, 1, 1)
|
|
496
|
-
|
|
497
|
-
self.te_time = QTimeEdit(self.widget)
|
|
498
|
-
self.te_time.setDisplayFormat("mm:ss.zzz")
|
|
499
|
-
self.gridLayout.addWidget(self.te_time, 2, 2, 1, 1)
|
|
500
|
-
|
|
501
|
-
self.gridLayout_3.addLayout(self.gridLayout, 0, 0, 1, 1)
|
|
502
|
-
|
|
503
|
-
self.gridLayout_2 = QGridLayout()
|
|
504
|
-
self.rb_datetime = QRadioButton(self.widget)
|
|
505
|
-
self.rb_datetime.toggled.connect(self.format_changed)
|
|
506
|
-
|
|
507
|
-
self.gridLayout_2.addWidget(self.rb_datetime, 0, 0, 1, 1)
|
|
508
|
-
|
|
509
|
-
self.dte = QDateTimeEdit(self.widget)
|
|
510
|
-
self.dte.setDisplayFormat("yyyy-MM-dd hh:mm:ss.zzz")
|
|
511
|
-
|
|
512
|
-
self.gridLayout_2.addWidget(self.dte, 0, 1, 1, 1)
|
|
513
|
-
|
|
514
|
-
self.gridLayout_3.addLayout(self.gridLayout_2, 1, 0, 1, 1)
|
|
515
|
-
|
|
516
|
-
self.horizontalLayout_2.addLayout(self.gridLayout_3)
|
|
517
|
-
|
|
518
|
-
self.verticalLayout.addLayout(self.horizontalLayout_2)
|
|
519
|
-
|
|
520
|
-
self.setLayout(self.verticalLayout)
|
|
521
|
-
|
|
522
|
-
if time_value:
|
|
523
|
-
self.set_time(time_value)
|
|
524
|
-
|
|
525
|
-
self.format_changed()
|
|
526
|
-
|
|
527
|
-
def format_changed(self):
|
|
528
|
-
self.le_seconds.setEnabled(self.rb_seconds.isChecked())
|
|
529
|
-
self.lb_seconds.setEnabled(self.rb_seconds.isChecked())
|
|
530
|
-
self.sb_hour.setEnabled(self.rb_time.isChecked())
|
|
531
|
-
self.te_time.setEnabled(self.rb_time.isChecked())
|
|
532
|
-
self.lb_hour.setEnabled(self.rb_time.isChecked())
|
|
533
|
-
self.lb_hhmmss.setEnabled(self.rb_time.isChecked())
|
|
534
|
-
self.dte.setEnabled(self.rb_datetime.isChecked())
|
|
535
|
-
|
|
536
|
-
def pb_sign_clicked(self):
|
|
537
|
-
if self.pb_sign.text() == "+":
|
|
538
|
-
self.pb_sign.setText("-")
|
|
539
|
-
else:
|
|
540
|
-
self.pb_sign.setText("+")
|
|
541
|
-
|
|
542
|
-
def get_time(self) -> dec:
|
|
543
|
-
"""
|
|
544
|
-
return time in seconds
|
|
545
|
-
"""
|
|
546
|
-
|
|
547
|
-
if self.rb_seconds.isChecked():
|
|
548
|
-
try:
|
|
549
|
-
time_sec = float(self.le_seconds.text())
|
|
550
|
-
except Exception:
|
|
551
|
-
QMessageBox.warning(
|
|
552
|
-
None,
|
|
553
|
-
cfg.programName,
|
|
554
|
-
"The value is not a decimal number",
|
|
555
|
-
QMessageBox.Ok | QMessageBox.Default,
|
|
556
|
-
QMessageBox.NoButton,
|
|
557
|
-
)
|
|
558
|
-
return None
|
|
559
|
-
|
|
560
|
-
if self.rb_time.isChecked():
|
|
561
|
-
time_sec = self.sb_hour.value() * 3600
|
|
562
|
-
time_sec += self.te_time.time().msecsSinceStartOfDay() / 1000
|
|
563
|
-
|
|
564
|
-
if self.rb_datetime.isChecked():
|
|
565
|
-
time_sec = self.dte.dateTime().toMSecsSinceEpoch() / 1000
|
|
566
|
-
|
|
567
|
-
if self.pb_sign.text() == "-":
|
|
568
|
-
time_sec = -time_sec
|
|
569
|
-
|
|
570
|
-
return dec(time_sec)
|
|
571
|
-
|
|
572
|
-
def set_time(self, new_time: float) -> None:
|
|
573
|
-
self.pb_sign.setText("-" if new_time < 0 else "+")
|
|
574
|
-
|
|
575
|
-
# seconds
|
|
576
|
-
self.le_seconds.setText(f"{new_time:0.3f}")
|
|
577
|
-
|
|
578
|
-
# hh:mm:ss.zzz
|
|
579
|
-
h = int(abs(new_time) // 3600)
|
|
580
|
-
m = int((abs(new_time) - h * 3600) // 60)
|
|
581
|
-
s = int((abs(new_time) - h * 3600 - m * 60))
|
|
582
|
-
ms = round((abs(new_time) - h * 3600 - m * 60 - s) * 1000)
|
|
583
|
-
|
|
584
|
-
self.sb_hour.setValue(h)
|
|
585
|
-
self.te_time.setTime(QTime(0, m, s, ms))
|
|
586
|
-
|
|
587
|
-
if new_time > cfg.DATE_CUTOFF:
|
|
588
|
-
self.dte.setDateTime(QDateTime().fromMSecsSinceEpoch(int(new_time * 1000)))
|
|
589
|
-
'''
|
|
590
|
-
|
|
591
|
-
|
|
592
433
|
class Ask_time(QDialog):
|
|
593
434
|
def __init__(self, time_value=0):
|
|
594
435
|
super().__init__()
|
|
@@ -940,51 +781,12 @@ class ChooseObservationsToImport(QDialog):
|
|
|
940
781
|
return [item.text() for item in self.lw.selectedItems()]
|
|
941
782
|
|
|
942
783
|
|
|
943
|
-
'''
|
|
944
|
-
class Ask_time(QDialog):
|
|
945
|
-
"""
|
|
946
|
-
"Ask time" dialog box using duration widget in duration_widget module
|
|
947
|
-
"""
|
|
948
|
-
|
|
949
|
-
def __init__(self, time_format):
|
|
950
|
-
super().__init__()
|
|
951
|
-
hbox = QVBoxLayout(self)
|
|
952
|
-
self.label = QLabel()
|
|
953
|
-
self.label.setText("Go to time")
|
|
954
|
-
hbox.addWidget(self.label)
|
|
955
|
-
|
|
956
|
-
self.time_widget = duration_widget.Duration_widget()
|
|
957
|
-
if time_format == cfg.HHMMSS:
|
|
958
|
-
self.time_widget.set_format_hhmmss()
|
|
959
|
-
if time_format == cfg.S:
|
|
960
|
-
self.time_widget.set_format_s()
|
|
961
|
-
|
|
962
|
-
hbox.addWidget(self.time_widget)
|
|
963
|
-
|
|
964
|
-
self.pbOK = QPushButton("OK")
|
|
965
|
-
self.pbOK.clicked.connect(self.accept)
|
|
966
|
-
self.pbOK.setDefault(True)
|
|
967
|
-
|
|
968
|
-
self.pbCancel = QPushButton("Cancel")
|
|
969
|
-
self.pbCancel.clicked.connect(self.reject)
|
|
970
|
-
|
|
971
|
-
self.hbox2 = QHBoxLayout(self)
|
|
972
|
-
self.hbox2.addItem(QSpacerItem(241, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
|
|
973
|
-
self.hbox2.addWidget(self.pbCancel)
|
|
974
|
-
self.hbox2.addWidget(self.pbOK)
|
|
975
|
-
hbox.addLayout(self.hbox2)
|
|
976
|
-
self.setLayout(hbox)
|
|
977
|
-
self.setWindowTitle("Time")
|
|
978
|
-
'''
|
|
979
|
-
|
|
980
|
-
|
|
981
784
|
class FindInEvents(QWidget):
|
|
982
785
|
"""
|
|
983
786
|
"find in events" dialog box
|
|
984
787
|
"""
|
|
985
788
|
|
|
986
789
|
clickSignal = Signal(str)
|
|
987
|
-
|
|
988
790
|
currentIdx: int = -1
|
|
989
791
|
|
|
990
792
|
def __init__(self):
|
|
@@ -1028,10 +830,11 @@ class FindInEvents(QWidget):
|
|
|
1028
830
|
hbox.addWidget(self.lb_message)
|
|
1029
831
|
|
|
1030
832
|
hbox2 = QHBoxLayout()
|
|
833
|
+
hbox2.addItem(QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum))
|
|
1031
834
|
self.pbOK = QPushButton("Find")
|
|
1032
835
|
self.pbOK.clicked.connect(lambda: self.click("FIND"))
|
|
1033
836
|
self.pbCancel = QPushButton(cfg.CLOSE)
|
|
1034
|
-
self.pbCancel.clicked.connect(lambda: self.click(
|
|
837
|
+
self.pbCancel.clicked.connect(lambda: self.click("CLOSE"))
|
|
1035
838
|
hbox2.addWidget(self.pbCancel)
|
|
1036
839
|
hbox2.addWidget(self.pbOK)
|
|
1037
840
|
hbox.addLayout(hbox2)
|
|
@@ -1060,22 +863,6 @@ class FindReplaceEvents(QWidget):
|
|
|
1060
863
|
self.combo_fields.addItems(("Choose a field", "Subject", "Behavior", "Modifiers", "Comment"))
|
|
1061
864
|
hbox.addWidget(self.combo_fields)
|
|
1062
865
|
|
|
1063
|
-
# self.cbSubject = QCheckBox("Subject")
|
|
1064
|
-
# self.cbSubject.setChecked(False)
|
|
1065
|
-
# hbox.addWidget(self.cbSubject)
|
|
1066
|
-
|
|
1067
|
-
# self.cbBehavior = QCheckBox("Behavior")
|
|
1068
|
-
# self.cbBehavior.setChecked(False)
|
|
1069
|
-
# hbox.addWidget(self.cbBehavior)
|
|
1070
|
-
|
|
1071
|
-
# self.cbModifier = QCheckBox("Modifiers")
|
|
1072
|
-
# self.cbModifier.setChecked(False)
|
|
1073
|
-
# hbox.addWidget(self.cbModifier)
|
|
1074
|
-
|
|
1075
|
-
# self.cbComment = QCheckBox("Comment")
|
|
1076
|
-
# self.cbComment.setChecked(False)
|
|
1077
|
-
# hbox.addWidget(self.cbComment)
|
|
1078
|
-
|
|
1079
866
|
self.lbFind = QLabel("Find")
|
|
1080
867
|
hbox.addWidget(self.lbFind)
|
|
1081
868
|
|
|
@@ -1098,6 +885,8 @@ class FindReplaceEvents(QWidget):
|
|
|
1098
885
|
|
|
1099
886
|
hbox2 = QHBoxLayout()
|
|
1100
887
|
|
|
888
|
+
hbox2.addItem(QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum))
|
|
889
|
+
|
|
1101
890
|
self.pbCancel = QPushButton(cfg.CANCEL, clicked=lambda: self.click("CANCEL"))
|
|
1102
891
|
hbox2.addWidget(self.pbCancel)
|
|
1103
892
|
|
|
@@ -1118,64 +907,9 @@ class FindReplaceEvents(QWidget):
|
|
|
1118
907
|
self.clickSignal.emit(msg)
|
|
1119
908
|
|
|
1120
909
|
|
|
1121
|
-
'''
|
|
1122
|
-
class explore_project_dialog(QDialog):
|
|
1123
|
-
"""
|
|
1124
|
-
"explore project" dialog box
|
|
1125
|
-
"""
|
|
1126
|
-
|
|
1127
|
-
def __init__(self):
|
|
1128
|
-
super().__init__()
|
|
1129
|
-
|
|
1130
|
-
self.setWindowTitle("Explore project")
|
|
1131
|
-
|
|
1132
|
-
hbox = QVBoxLayout()
|
|
1133
|
-
|
|
1134
|
-
hbox.addWidget(QLabel("Search in all observations"))
|
|
1135
|
-
|
|
1136
|
-
self.lb_subject = QLabel("Subject")
|
|
1137
|
-
hbox.addWidget(self.lb_subject)
|
|
1138
|
-
self.find_subject = QLineEdit()
|
|
1139
|
-
hbox.addWidget(self.find_subject)
|
|
1140
|
-
|
|
1141
|
-
self.lb_behav = QLabel("Behaviors")
|
|
1142
|
-
hbox.addWidget(self.lb_behav)
|
|
1143
|
-
self.find_behavior = QLineEdit()
|
|
1144
|
-
hbox.addWidget(self.find_behavior)
|
|
1145
|
-
|
|
1146
|
-
self.lb_modifier = QLabel("Modifier")
|
|
1147
|
-
hbox.addWidget(self.lb_modifier)
|
|
1148
|
-
self.find_modifier = QLineEdit()
|
|
1149
|
-
hbox.addWidget(self.find_modifier)
|
|
1150
|
-
|
|
1151
|
-
self.lb_comment = QLabel("Comment")
|
|
1152
|
-
hbox.addWidget(self.lb_comment)
|
|
1153
|
-
self.find_comment = QLineEdit()
|
|
1154
|
-
hbox.addWidget(self.find_comment)
|
|
1155
|
-
|
|
1156
|
-
self.cb_case_sensitive = QCheckBox("Case sensitive")
|
|
1157
|
-
self.cb_case_sensitive.setChecked(False)
|
|
1158
|
-
hbox.addWidget(self.cb_case_sensitive)
|
|
1159
|
-
|
|
1160
|
-
self.lb_message = QLabel()
|
|
1161
|
-
hbox.addWidget(self.lb_message)
|
|
1162
|
-
|
|
1163
|
-
hbox2 = QHBoxLayout()
|
|
1164
|
-
self.pbOK = QPushButton("Find")
|
|
1165
|
-
self.pbOK.clicked.connect(self.accept)
|
|
1166
|
-
self.pbCancel = QPushButton("Cancel")
|
|
1167
|
-
self.pbCancel.clicked.connect(self.reject)
|
|
1168
|
-
hbox2.addWidget(self.pbCancel)
|
|
1169
|
-
hbox2.addWidget(self.pbOK)
|
|
1170
|
-
hbox.addLayout(hbox2)
|
|
1171
|
-
|
|
1172
|
-
self.setLayout(hbox)
|
|
1173
|
-
'''
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
910
|
class Results_dialog(QDialog):
|
|
1177
911
|
"""
|
|
1178
|
-
widget for visualizing text output
|
|
912
|
+
widget for visualizing text output in HTML
|
|
1179
913
|
"""
|
|
1180
914
|
|
|
1181
915
|
def __init__(self):
|
|
@@ -1270,10 +1004,10 @@ class View_data(QDialog):
|
|
|
1270
1004
|
|
|
1271
1005
|
hbox2.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
|
|
1272
1006
|
|
|
1273
|
-
self.pbCancel = QPushButton(
|
|
1007
|
+
self.pbCancel = QPushButton(cfg.CANCEL, clicked=self.reject)
|
|
1274
1008
|
hbox2.addWidget(self.pbCancel)
|
|
1275
1009
|
|
|
1276
|
-
self.pbOK = QPushButton(
|
|
1010
|
+
self.pbOK = QPushButton(cfg.OK, clicked=self.accept)
|
|
1277
1011
|
hbox2.addWidget(self.pbOK)
|
|
1278
1012
|
|
|
1279
1013
|
vbox.addLayout(hbox2)
|
|
@@ -1306,13 +1040,12 @@ class View_explore_project_results(QWidget):
|
|
|
1306
1040
|
vbox.addWidget(self.tw)
|
|
1307
1041
|
|
|
1308
1042
|
hbox2 = QHBoxLayout()
|
|
1309
|
-
hbox2.
|
|
1043
|
+
hbox2.addItem(QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum))
|
|
1044
|
+
hbox2.addWidget(QPushButton(cfg.CLOSE, clicked=self.close))
|
|
1310
1045
|
|
|
1311
1046
|
vbox.addLayout(hbox2)
|
|
1312
1047
|
|
|
1313
1048
|
self.setLayout(vbox)
|
|
1314
1049
|
|
|
1315
|
-
# self.resize(540, 640)
|
|
1316
|
-
|
|
1317
1050
|
def tw_cellDoubleClicked(self, r, c):
|
|
1318
1051
|
self.double_click_signal.emit(self.tw.item(r, 0).text(), int(self.tw.item(r, 1).text()))
|
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
|
|
|
@@ -77,6 +77,13 @@ class DlgEditEvent(QDialog, Ui_Form):
|
|
|
77
77
|
# future time widget
|
|
78
78
|
self.time_widget = dialog.get_time_widget(self.time_value)
|
|
79
79
|
|
|
80
|
+
if time_format == cfg.S:
|
|
81
|
+
self.time_widget.rb_seconds.setChecked(True)
|
|
82
|
+
if time_format == cfg.HHMMSS:
|
|
83
|
+
self.time_widget.rb_time.setChecked(True)
|
|
84
|
+
if self.time_value > cfg.DATE_CUTOFF:
|
|
85
|
+
self.time_widget.rb_datetime.setChecked(True)
|
|
86
|
+
|
|
80
87
|
self.horizontalLayout_2.insertWidget(0, self.time_widget)
|
|
81
88
|
|
|
82
89
|
if observation_type == cfg.IMAGES:
|
boris/event_operations.py
CHANGED
boris/events_cursor.py
CHANGED
boris/events_snapshots.py
CHANGED
boris/exclusion_matrix.py
CHANGED
boris/export_events.py
CHANGED
boris/export_observation.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 program is free software; you can redistribute it and/or modify
|
|
7
7
|
it under the terms of the GNU General Public License as published by
|
boris/external_processes.py
CHANGED
boris/geometric_measurement.py
CHANGED
boris/gui_utilities.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 program is free software; you can redistribute it and/or modify
|
|
7
7
|
it under the terms of the GNU General Public License as published by
|
boris/image_overlay.py
CHANGED
boris/import_observations.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 program is free software; you can redistribute it and/or modify
|
|
7
7
|
it under the terms of the GNU General Public License as published by
|
boris/irr.py
CHANGED
boris/latency.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 program is free software; you can redistribute it and/or modify
|
|
7
7
|
it under the terms of the GNU General Public License as published by
|
boris/map_creator.py
CHANGED
boris/measurement_widget.py
CHANGED
boris/media_file.py
CHANGED
boris/menu_options.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 program is free software; you can redistribute it and/or modify
|
|
7
7
|
it under the terms of the GNU General Public License as published by
|
boris/modifiers_coding_map.py
CHANGED