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.

Files changed (129) hide show
  1. boris/__init__.py +1 -1
  2. boris/__main__.py +1 -1
  3. boris/about.py +36 -39
  4. boris/add_modifier.py +122 -109
  5. boris/add_modifier_ui.py +239 -135
  6. boris/advanced_event_filtering.py +81 -45
  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 +228 -229
  18. boris/behavior_binary_table.py +33 -50
  19. boris/behaviors_coding_map.py +17 -18
  20. boris/boris_cli.py +6 -25
  21. boris/cmd_arguments.py +12 -1
  22. boris/coding_pad.py +42 -49
  23. boris/config.py +161 -77
  24. boris/config_file.py +63 -83
  25. boris/connections.py +112 -57
  26. boris/converters.py +13 -37
  27. boris/converters_ui.py +187 -110
  28. boris/cooccurence.py +250 -0
  29. boris/core.py +2511 -1824
  30. boris/core_qrc.py +15895 -10185
  31. boris/core_ui.py +946 -792
  32. boris/db_functions.py +21 -41
  33. boris/dev.py +134 -0
  34. boris/dialog.py +505 -244
  35. boris/duration_widget.py +15 -20
  36. boris/edit_event.py +84 -28
  37. boris/edit_event_ui.py +214 -78
  38. boris/event_operations.py +517 -415
  39. boris/events_cursor.py +25 -17
  40. boris/events_snapshots.py +36 -82
  41. boris/exclusion_matrix.py +4 -9
  42. boris/export_events.py +213 -583
  43. boris/export_observation.py +98 -611
  44. boris/external_processes.py +156 -97
  45. boris/geometric_measurement.py +652 -287
  46. boris/gui_utilities.py +91 -14
  47. boris/image_overlay.py +9 -9
  48. boris/import_observations.py +190 -98
  49. boris/ipc_mpv.py +325 -0
  50. boris/irr.py +26 -63
  51. boris/latency.py +34 -25
  52. boris/measurement_widget.py +14 -18
  53. boris/media_file.py +52 -84
  54. boris/menu_options.py +17 -6
  55. boris/modifier_coding_map_creator.py +1013 -0
  56. boris/modifiers_coding_map.py +7 -9
  57. boris/mpv.py +1 -0
  58. boris/mpv2.py +732 -705
  59. boris/observation.py +655 -310
  60. boris/observation_operations.py +1036 -404
  61. boris/observation_ui.py +584 -356
  62. boris/observations_list.py +71 -53
  63. boris/otx_parser.py +74 -80
  64. boris/param_panel.py +31 -16
  65. boris/param_panel_ui.py +254 -138
  66. boris/player_dock_widget.py +90 -60
  67. boris/plot_data_module.py +43 -46
  68. boris/plot_events.py +127 -90
  69. boris/plot_events_rt.py +17 -31
  70. boris/plot_spectrogram_rt.py +95 -30
  71. boris/plot_waveform_rt.py +32 -21
  72. boris/plugins.py +431 -0
  73. boris/portion/__init__.py +18 -8
  74. boris/portion/const.py +35 -18
  75. boris/portion/dict.py +5 -5
  76. boris/portion/func.py +2 -2
  77. boris/portion/interval.py +21 -41
  78. boris/portion/io.py +41 -32
  79. boris/preferences.py +306 -83
  80. boris/preferences_ui.py +685 -228
  81. boris/project.py +448 -293
  82. boris/project_functions.py +689 -254
  83. boris/project_import_export.py +213 -222
  84. boris/project_ui.py +674 -438
  85. boris/qrc_boris.py +6 -3
  86. boris/qrc_boris5.py +6 -3
  87. boris/select_modifiers.py +74 -48
  88. boris/select_observations.py +20 -199
  89. boris/select_subj_behav.py +67 -39
  90. boris/state_events.py +53 -37
  91. boris/subjects_pad.py +6 -9
  92. boris/synthetic_time_budget.py +45 -28
  93. boris/time_budget_functions.py +171 -171
  94. boris/time_budget_widget.py +84 -114
  95. boris/transitions.py +41 -47
  96. boris/utilities.py +766 -266
  97. boris/version.py +3 -3
  98. boris/video_equalizer.py +16 -14
  99. boris/video_equalizer_ui.py +199 -130
  100. boris/video_operations.py +125 -28
  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.6.dist-info/METADATA +139 -0
  105. boris_behav_obs-9.7.6.dist-info/RECORD +109 -0
  106. {boris_behav_obs-8.9.16.dist-info → boris_behav_obs-9.7.6.dist-info}/WHEEL +1 -1
  107. boris_behav_obs-9.7.6.dist-info/entry_points.txt +2 -0
  108. boris/README.TXT +0 -22
  109. boris/add_modifier.ui +0 -323
  110. boris/boris_ui.py +0 -886
  111. boris/converters.ui +0 -289
  112. boris/core.qrc +0 -35
  113. boris/core.ui +0 -1543
  114. boris/edit_event.ui +0 -175
  115. boris/icons/logo_eye.ico +0 -0
  116. boris/map_creator.py +0 -850
  117. boris/observation.ui +0 -773
  118. boris/param_panel.ui +0 -379
  119. boris/preferences.ui +0 -537
  120. boris/project.ui +0 -1069
  121. boris/project_server.py +0 -236
  122. boris/vlc.py +0 -10343
  123. boris/vlc_local.py +0 -90
  124. boris_behav_obs-8.9.16.dist-info/LICENSE.TXT +0 -674
  125. boris_behav_obs-8.9.16.dist-info/METADATA +0 -129
  126. boris_behav_obs-8.9.16.dist-info/RECORD +0 -108
  127. boris_behav_obs-8.9.16.dist-info/entry_points.txt +0 -2
  128. {boris → boris_behav_obs-9.7.6.dist-info/licenses}/LICENSE.TXT +0 -0
  129. {boris_behav_obs-8.9.16.dist-info → boris_behav_obs-9.7.6.dist-info}/top_level.txt +0 -0
boris/converters.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  BORIS
3
3
  Behavioral Observation Research Interactive Software
4
- Copyright 2012-2023 Olivier Friard
4
+ Copyright 2012-2025 Olivier Friard
5
5
 
6
6
  This file is part of BORIS.
7
7
 
@@ -22,14 +22,10 @@ This file is part of BORIS.
22
22
 
23
23
  import sys
24
24
  import json
25
- import urllib.error
26
- import urllib.parse
27
25
  import urllib.request
28
26
 
29
27
 
30
- from PyQt5.QtCore import *
31
- from PyQt5.QtGui import *
32
- from PyQt5.QtWidgets import *
28
+ from PySide6.QtWidgets import QMessageBox, QTableWidgetItem, QFileDialog, QInputDialog, QLineEdit
33
29
 
34
30
  from . import dialog
35
31
  from . import config as cfg
@@ -113,12 +109,8 @@ def modify_converter(self):
113
109
  w.setEnabled(False)
114
110
 
115
111
  self.le_converter_name.setText(self.tw_converters.item(self.tw_converters.selectedIndexes()[0].row(), 0).text())
116
- self.le_converter_description.setText(
117
- self.tw_converters.item(self.tw_converters.selectedIndexes()[0].row(), 1).text()
118
- )
119
- self.pteCode.setPlainText(
120
- self.tw_converters.item(self.tw_converters.selectedIndexes()[0].row(), 2).text().replace("@", "\n")
121
- )
112
+ self.le_converter_description.setText(self.tw_converters.item(self.tw_converters.selectedIndexes()[0].row(), 1).text())
113
+ self.pteCode.setPlainText(self.tw_converters.item(self.tw_converters.selectedIndexes()[0].row(), 2).text().replace("@", "\n"))
122
114
 
123
115
  self.row_in_modification = self.tw_converters.selectedIndexes()[0].row()
124
116
 
@@ -153,9 +145,7 @@ def save_converter(self):
153
145
  return
154
146
 
155
147
  if not self.le_converter_name.text().replace("_", "a").isalnum():
156
- QMessageBox.critical(
157
- self, "BORIS", "Forbidden characters are used in converter name.<br>Use a..z, A..Z, 0..9 _"
158
- )
148
+ QMessageBox.critical(self, "BORIS", "Forbidden characters are used in converter name.<br>Use a..z, A..Z, 0..9 _")
159
149
  return
160
150
 
161
151
  # test code with exec
@@ -164,7 +154,7 @@ def save_converter(self):
164
154
  QMessageBox.critical(self, "BORIS", "The converter must have Python code")
165
155
  return
166
156
 
167
- function = code_2_func(self, self.le_converter_name.text(), code)
157
+ function = code_2_func(self, name=self.le_converter_name.text(), code=code)
168
158
 
169
159
  try:
170
160
  exec(function)
@@ -247,8 +237,7 @@ def load_converters_from_file_repo(self, mode: str):
247
237
 
248
238
  converters_from_file = {}
249
239
  if mode == "file":
250
- fn = QFileDialog(self).getOpenFileName(self, "Load converters from file", "", "All files (*)")
251
- file_name = fn[0] if type(fn) is tuple else fn
240
+ file_name, _ = QFileDialog.getOpenFileName(self, "Load converters from file", "", "All files (*)")
252
241
 
253
242
  if file_name:
254
243
  with open(file_name, "r") as f_in:
@@ -259,35 +248,25 @@ def load_converters_from_file_repo(self, mode: str):
259
248
  return
260
249
 
261
250
  if mode == "repo":
262
-
263
- converters_repo_URL = "http://www.boris.unito.it/archive/converters.json"
251
+ converters_repo_URL = "https://www.boris.unito.it/static/converters.json"
264
252
  try:
265
253
  converters_from_repo = urllib.request.urlopen(converters_repo_URL).read().strip().decode("utf-8")
266
254
  except Exception:
267
- QMessageBox.critical(
268
- self, cfg.programName, "An error occured during retrieving converters from BORIS remote repository"
269
- )
255
+ QMessageBox.critical(self, cfg.programName, "An error occured during retrieving converters from BORIS remote repository")
270
256
  return
271
257
 
272
258
  try:
273
259
  converters_from_file = eval(converters_from_repo)["BORIS converters"]
274
260
  except Exception:
275
- QMessageBox.critical(
276
- self, cfg.programName, "An error occured during retrieving converters from BORIS remote repository"
277
- )
261
+ QMessageBox.critical(self, cfg.programName, "An error occured during retrieving converters from BORIS remote repository")
278
262
  return
279
263
 
280
264
  if converters_from_file:
281
-
282
- diag_choose_conv = dialog.ChooseObservationsToImport(
283
- "Choose the converters to load:", sorted(list(converters_from_file.keys()))
284
- )
265
+ diag_choose_conv = dialog.ChooseObservationsToImport("Choose the converters to load:", sorted(list(converters_from_file.keys())))
285
266
 
286
267
  if diag_choose_conv.exec_():
287
-
288
268
  selected_converters = diag_choose_conv.get_selected_observations()
289
269
  if selected_converters:
290
-
291
270
  # extract converter names from table
292
271
  converter_names = []
293
272
  for row in range(self.tw_converters.rowCount()):
@@ -325,7 +304,7 @@ def load_converters_from_file_repo(self, mode: str):
325
304
  else:
326
305
  continue
327
306
  # test if code does not produce error
328
- function = self.code_2_func(converter_name, converters_from_file[converter]["code"])
307
+ function = code_2_func(self, name=converter_name, code=converters_from_file[converter]["code"])
329
308
 
330
309
  try:
331
310
  exec(function)
@@ -333,10 +312,7 @@ def load_converters_from_file_repo(self, mode: str):
333
312
  QMessageBox.critical(
334
313
  self,
335
314
  "BORIS",
336
- (
337
- f"The code of {converter_name} converter produces an error: "
338
- f"<br><b>{sys.exc_info()[1]}</b>"
339
- ),
315
+ (f"The code of {converter_name} converter produces an error: <br><b>{sys.exc_info()[1]}</b>"),
340
316
  )
341
317
 
342
318
  self.tw_converters.setRowCount(self.tw_converters.rowCount() + 1)
boris/converters_ui.py CHANGED
@@ -1,148 +1,225 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- # Form implementation generated from reading ui file 'converters.ui'
4
- #
5
- # Created by: PyQt5 UI code generator 5.9
6
- #
7
- # WARNING! All changes made in this file will be lost!
3
+ ################################################################################
4
+ ## Form generated from reading UI file 'converters.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
+ ################################################################################
8
10
 
9
- from PyQt5 import QtCore, QtGui, QtWidgets
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, QHBoxLayout, QHeaderView,
19
+ QLabel, QLineEdit, QPlainTextEdit, QPushButton,
20
+ QSizePolicy, QSpacerItem, QTableWidget, QTableWidgetItem,
21
+ QVBoxLayout, QWidget)
10
22
 
11
23
  class Ui_converters(object):
12
24
  def setupUi(self, converters):
13
- converters.setObjectName("converters")
25
+ if not converters.objectName():
26
+ converters.setObjectName(u"converters")
14
27
  converters.resize(1029, 530)
15
- self.verticalLayout = QtWidgets.QVBoxLayout(converters)
16
- self.verticalLayout.setObjectName("verticalLayout")
17
- self.label_4 = QtWidgets.QLabel(converters)
18
- self.label_4.setObjectName("label_4")
28
+ self.verticalLayout = QVBoxLayout(converters)
29
+ self.verticalLayout.setObjectName(u"verticalLayout")
30
+ self.label_4 = QLabel(converters)
31
+ self.label_4.setObjectName(u"label_4")
32
+
19
33
  self.verticalLayout.addWidget(self.label_4)
20
- self.tw_converters = QtWidgets.QTableWidget(converters)
21
- self.tw_converters.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
22
- self.tw_converters.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
23
- self.tw_converters.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
24
- self.tw_converters.setObjectName("tw_converters")
25
- self.tw_converters.setColumnCount(3)
26
- self.tw_converters.setRowCount(0)
27
- item = QtWidgets.QTableWidgetItem()
28
- self.tw_converters.setHorizontalHeaderItem(0, item)
29
- item = QtWidgets.QTableWidgetItem()
30
- self.tw_converters.setHorizontalHeaderItem(1, item)
31
- item = QtWidgets.QTableWidgetItem()
32
- self.tw_converters.setHorizontalHeaderItem(2, item)
34
+
35
+ self.tw_converters = QTableWidget(converters)
36
+ if (self.tw_converters.columnCount() < 3):
37
+ self.tw_converters.setColumnCount(3)
38
+ __qtablewidgetitem = QTableWidgetItem()
39
+ self.tw_converters.setHorizontalHeaderItem(0, __qtablewidgetitem)
40
+ __qtablewidgetitem1 = QTableWidgetItem()
41
+ self.tw_converters.setHorizontalHeaderItem(1, __qtablewidgetitem1)
42
+ __qtablewidgetitem2 = QTableWidgetItem()
43
+ self.tw_converters.setHorizontalHeaderItem(2, __qtablewidgetitem2)
44
+ self.tw_converters.setObjectName(u"tw_converters")
45
+ self.tw_converters.setEditTriggers(QAbstractItemView.NoEditTriggers)
46
+ self.tw_converters.setSelectionMode(QAbstractItemView.SingleSelection)
47
+ self.tw_converters.setSelectionBehavior(QAbstractItemView.SelectRows)
48
+ self.tw_converters.setSortingEnabled(True)
49
+
33
50
  self.verticalLayout.addWidget(self.tw_converters)
34
- self.horizontalLayout = QtWidgets.QHBoxLayout()
35
- self.horizontalLayout.setObjectName("horizontalLayout")
36
- self.pb_add_converter = QtWidgets.QPushButton(converters)
37
- self.pb_add_converter.setObjectName("pb_add_converter")
51
+
52
+ self.horizontalLayout = QHBoxLayout()
53
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
54
+ self.pb_add_converter = QPushButton(converters)
55
+ self.pb_add_converter.setObjectName(u"pb_add_converter")
56
+
38
57
  self.horizontalLayout.addWidget(self.pb_add_converter)
39
- self.pb_modify_converter = QtWidgets.QPushButton(converters)
40
- self.pb_modify_converter.setObjectName("pb_modify_converter")
58
+
59
+ self.pb_modify_converter = QPushButton(converters)
60
+ self.pb_modify_converter.setObjectName(u"pb_modify_converter")
61
+
41
62
  self.horizontalLayout.addWidget(self.pb_modify_converter)
42
- self.pb_delete_converter = QtWidgets.QPushButton(converters)
43
- self.pb_delete_converter.setObjectName("pb_delete_converter")
63
+
64
+ self.pb_delete_converter = QPushButton(converters)
65
+ self.pb_delete_converter.setObjectName(u"pb_delete_converter")
66
+
44
67
  self.horizontalLayout.addWidget(self.pb_delete_converter)
45
- self.pb_load_from_file = QtWidgets.QPushButton(converters)
46
- self.pb_load_from_file.setObjectName("pb_load_from_file")
68
+
69
+ self.pb_load_from_file = QPushButton(converters)
70
+ self.pb_load_from_file.setObjectName(u"pb_load_from_file")
71
+
47
72
  self.horizontalLayout.addWidget(self.pb_load_from_file)
48
- self.pb_load_from_repo = QtWidgets.QPushButton(converters)
49
- self.pb_load_from_repo.setObjectName("pb_load_from_repo")
73
+
74
+ self.pb_load_from_repo = QPushButton(converters)
75
+ self.pb_load_from_repo.setObjectName(u"pb_load_from_repo")
76
+
50
77
  self.horizontalLayout.addWidget(self.pb_load_from_repo)
51
- spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
52
- self.horizontalLayout.addItem(spacerItem)
78
+
79
+ self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
80
+
81
+ self.horizontalLayout.addItem(self.horizontalSpacer)
82
+
83
+
53
84
  self.verticalLayout.addLayout(self.horizontalLayout)
54
- self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
55
- self.horizontalLayout_3.setObjectName("horizontalLayout_3")
56
- self.label_2 = QtWidgets.QLabel(converters)
57
- self.label_2.setMinimumSize(QtCore.QSize(120, 0))
58
- self.label_2.setObjectName("label_2")
85
+
86
+ self.horizontalLayout_3 = QHBoxLayout()
87
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
88
+ self.label_2 = QLabel(converters)
89
+ self.label_2.setObjectName(u"label_2")
90
+ self.label_2.setMinimumSize(QSize(120, 0))
91
+
59
92
  self.horizontalLayout_3.addWidget(self.label_2)
60
- self.le_converter_name = QtWidgets.QLineEdit(converters)
61
- self.le_converter_name.setObjectName("le_converter_name")
93
+
94
+ self.le_converter_name = QLineEdit(converters)
95
+ self.le_converter_name.setObjectName(u"le_converter_name")
96
+
62
97
  self.horizontalLayout_3.addWidget(self.le_converter_name)
63
- spacerItem1 = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
64
- self.horizontalLayout_3.addItem(spacerItem1)
98
+
99
+ self.horizontalSpacer_3 = QSpacerItem(10, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
100
+
101
+ self.horizontalLayout_3.addItem(self.horizontalSpacer_3)
102
+
103
+
65
104
  self.verticalLayout.addLayout(self.horizontalLayout_3)
66
- self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
67
- self.horizontalLayout_5.setObjectName("horizontalLayout_5")
68
- self.label_3 = QtWidgets.QLabel(converters)
69
- self.label_3.setMinimumSize(QtCore.QSize(120, 0))
70
- self.label_3.setObjectName("label_3")
105
+
106
+ self.horizontalLayout_5 = QHBoxLayout()
107
+ self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
108
+ self.label_3 = QLabel(converters)
109
+ self.label_3.setObjectName(u"label_3")
110
+ self.label_3.setMinimumSize(QSize(120, 0))
111
+
71
112
  self.horizontalLayout_5.addWidget(self.label_3)
72
- self.le_converter_description = QtWidgets.QLineEdit(converters)
73
- self.le_converter_description.setObjectName("le_converter_description")
113
+
114
+ self.le_converter_description = QLineEdit(converters)
115
+ self.le_converter_description.setObjectName(u"le_converter_description")
116
+
74
117
  self.horizontalLayout_5.addWidget(self.le_converter_description)
75
- spacerItem2 = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
76
- self.horizontalLayout_5.addItem(spacerItem2)
118
+
119
+ self.horizontalSpacer_4 = QSpacerItem(10, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
120
+
121
+ self.horizontalLayout_5.addItem(self.horizontalSpacer_4)
122
+
123
+
77
124
  self.verticalLayout.addLayout(self.horizontalLayout_5)
78
- self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
79
- self.horizontalLayout_2.setObjectName("horizontalLayout_2")
80
- self.verticalLayout_3 = QtWidgets.QVBoxLayout()
81
- self.verticalLayout_3.setObjectName("verticalLayout_3")
82
- self.label = QtWidgets.QLabel(converters)
83
- self.label.setObjectName("label")
125
+
126
+ self.horizontalLayout_2 = QHBoxLayout()
127
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
128
+ self.verticalLayout_3 = QVBoxLayout()
129
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
130
+ self.label = QLabel(converters)
131
+ self.label.setObjectName(u"label")
132
+
84
133
  self.verticalLayout_3.addWidget(self.label)
85
- self.pb_code_help = QtWidgets.QPushButton(converters)
86
- self.pb_code_help.setObjectName("pb_code_help")
134
+
135
+ self.pb_code_help = QPushButton(converters)
136
+ self.pb_code_help.setObjectName(u"pb_code_help")
137
+
87
138
  self.verticalLayout_3.addWidget(self.pb_code_help)
88
- spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
89
- self.verticalLayout_3.addItem(spacerItem3)
139
+
140
+ self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
141
+
142
+ self.verticalLayout_3.addItem(self.verticalSpacer_2)
143
+
144
+
90
145
  self.horizontalLayout_2.addLayout(self.verticalLayout_3)
91
- self.pteCode = QtWidgets.QPlainTextEdit(converters)
92
- font = QtGui.QFont()
93
- font.setFamily("Monospace")
146
+
147
+ self.pteCode = QPlainTextEdit(converters)
148
+ self.pteCode.setObjectName(u"pteCode")
149
+ font = QFont()
150
+ font.setFamilies([u"Monospace"])
94
151
  self.pteCode.setFont(font)
95
- self.pteCode.setObjectName("pteCode")
152
+
96
153
  self.horizontalLayout_2.addWidget(self.pteCode)
97
- self.verticalLayout_2 = QtWidgets.QVBoxLayout()
98
- self.verticalLayout_2.setObjectName("verticalLayout_2")
99
- self.pb_save_converter = QtWidgets.QPushButton(converters)
100
- self.pb_save_converter.setObjectName("pb_save_converter")
154
+
155
+ self.verticalLayout_2 = QVBoxLayout()
156
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
157
+ self.pb_save_converter = QPushButton(converters)
158
+ self.pb_save_converter.setObjectName(u"pb_save_converter")
159
+
101
160
  self.verticalLayout_2.addWidget(self.pb_save_converter)
102
- self.pb_cancel_converter = QtWidgets.QPushButton(converters)
103
- self.pb_cancel_converter.setObjectName("pb_cancel_converter")
161
+
162
+ self.pb_cancel_converter = QPushButton(converters)
163
+ self.pb_cancel_converter.setObjectName(u"pb_cancel_converter")
164
+
104
165
  self.verticalLayout_2.addWidget(self.pb_cancel_converter)
105
- spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
106
- self.verticalLayout_2.addItem(spacerItem4)
166
+
167
+ self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
168
+
169
+ self.verticalLayout_2.addItem(self.verticalSpacer)
170
+
171
+
107
172
  self.horizontalLayout_2.addLayout(self.verticalLayout_2)
173
+
174
+
108
175
  self.verticalLayout.addLayout(self.horizontalLayout_2)
109
- self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
110
- self.horizontalLayout_4.setObjectName("horizontalLayout_4")
111
- spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
112
- self.horizontalLayout_4.addItem(spacerItem5)
113
- self.pb_cancel_widget = QtWidgets.QPushButton(converters)
114
- self.pb_cancel_widget.setObjectName("pb_cancel_widget")
176
+
177
+ self.horizontalLayout_4 = QHBoxLayout()
178
+ self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
179
+ self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
180
+
181
+ self.horizontalLayout_4.addItem(self.horizontalSpacer_2)
182
+
183
+ self.pb_cancel_widget = QPushButton(converters)
184
+ self.pb_cancel_widget.setObjectName(u"pb_cancel_widget")
185
+
115
186
  self.horizontalLayout_4.addWidget(self.pb_cancel_widget)
116
- self.pbOK = QtWidgets.QPushButton(converters)
117
- self.pbOK.setObjectName("pbOK")
187
+
188
+ self.pbOK = QPushButton(converters)
189
+ self.pbOK.setObjectName(u"pbOK")
190
+
118
191
  self.horizontalLayout_4.addWidget(self.pbOK)
192
+
193
+
119
194
  self.verticalLayout.addLayout(self.horizontalLayout_4)
120
195
 
196
+
121
197
  self.retranslateUi(converters)
122
- QtCore.QMetaObject.connectSlotsByName(converters)
198
+
199
+ QMetaObject.connectSlotsByName(converters)
200
+ # setupUi
123
201
 
124
202
  def retranslateUi(self, converters):
125
- _translate = QtCore.QCoreApplication.translate
126
- converters.setWindowTitle(_translate("converters", "Time converters"))
127
- self.label_4.setText(_translate("converters", "Converters"))
128
- self.tw_converters.setSortingEnabled(True)
129
- item = self.tw_converters.horizontalHeaderItem(0)
130
- item.setText(_translate("converters", "Name"))
131
- item = self.tw_converters.horizontalHeaderItem(1)
132
- item.setText(_translate("converters", "Description"))
133
- item = self.tw_converters.horizontalHeaderItem(2)
134
- item.setText(_translate("converters", "Code"))
135
- self.pb_add_converter.setText(_translate("converters", "Add new converter"))
136
- self.pb_modify_converter.setText(_translate("converters", "Modify converter"))
137
- self.pb_delete_converter.setText(_translate("converters", "Delete converter"))
138
- self.pb_load_from_file.setText(_translate("converters", "Load converters from file"))
139
- self.pb_load_from_repo.setText(_translate("converters", "Load converters from BORIS repository"))
140
- self.label_2.setText(_translate("converters", "Name"))
141
- self.label_3.setText(_translate("converters", "Description"))
142
- self.label.setText(_translate("converters", "Python code"))
143
- self.pb_code_help.setText(_translate("converters", "Help"))
144
- self.pb_save_converter.setText(_translate("converters", "Save converter"))
145
- self.pb_cancel_converter.setText(_translate("converters", "Cancel"))
146
- self.pb_cancel_widget.setText(_translate("converters", "Cancel"))
147
- self.pbOK.setText(_translate("converters", "OK"))
203
+ converters.setWindowTitle(QCoreApplication.translate("converters", u"Time converters", None))
204
+ self.label_4.setText(QCoreApplication.translate("converters", u"Converters", None))
205
+ ___qtablewidgetitem = self.tw_converters.horizontalHeaderItem(0)
206
+ ___qtablewidgetitem.setText(QCoreApplication.translate("converters", u"Name", None));
207
+ ___qtablewidgetitem1 = self.tw_converters.horizontalHeaderItem(1)
208
+ ___qtablewidgetitem1.setText(QCoreApplication.translate("converters", u"Description", None));
209
+ ___qtablewidgetitem2 = self.tw_converters.horizontalHeaderItem(2)
210
+ ___qtablewidgetitem2.setText(QCoreApplication.translate("converters", u"Code", None));
211
+ self.pb_add_converter.setText(QCoreApplication.translate("converters", u"Add new converter", None))
212
+ self.pb_modify_converter.setText(QCoreApplication.translate("converters", u"Modify converter", None))
213
+ self.pb_delete_converter.setText(QCoreApplication.translate("converters", u"Delete converter", None))
214
+ self.pb_load_from_file.setText(QCoreApplication.translate("converters", u"Load converters from file", None))
215
+ self.pb_load_from_repo.setText(QCoreApplication.translate("converters", u"Load converters from BORIS repository", None))
216
+ self.label_2.setText(QCoreApplication.translate("converters", u"Name", None))
217
+ self.label_3.setText(QCoreApplication.translate("converters", u"Description", None))
218
+ self.label.setText(QCoreApplication.translate("converters", u"Python code", None))
219
+ self.pb_code_help.setText(QCoreApplication.translate("converters", u"Help", None))
220
+ self.pb_save_converter.setText(QCoreApplication.translate("converters", u"Save converter", None))
221
+ self.pb_cancel_converter.setText(QCoreApplication.translate("converters", u"Cancel", None))
222
+ self.pb_cancel_widget.setText(QCoreApplication.translate("converters", u"Cancel", None))
223
+ self.pbOK.setText(QCoreApplication.translate("converters", u"OK", None))
224
+ # retranslateUi
148
225