cfclient 2017.4__py3-none-any.whl → 2025.12.1__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 (140) hide show
  1. cfclient/__init__.py +16 -11
  2. cfclient/configs/config.json +4 -3
  3. cfclient/configs/input/Generic_OS_X.json +1 -0
  4. cfclient/configs/input/Joystick.json +1 -0
  5. cfclient/configs/input/PS3_Mode_1.json +1 -0
  6. cfclient/configs/input/PS3_Mode_2.json +1 -0
  7. cfclient/configs/input/PS3_Mode_3.json +1 -0
  8. cfclient/configs/input/PS4_Mode_1.json +1 -0
  9. cfclient/configs/input/PS4_Mode_2.json +1 -0
  10. cfclient/configs/input/PS4_shoulder_btns_yaw.json +1 -0
  11. cfclient/configs/input/xbox360_mode1.json +1 -0
  12. cfclient/configs/log/PID_tuning/Attitude.json +46 -0
  13. cfclient/configs/log/PID_tuning/Attitude_rate.json +46 -0
  14. cfclient/configs/log/PID_tuning/Position.json +46 -0
  15. cfclient/configs/log/PID_tuning/Velocity.json +46 -0
  16. cfclient/configs/log/PID_tuning_components/Pitch.json +22 -0
  17. cfclient/configs/log/PID_tuning_components/Pitch_rate.json +22 -0
  18. cfclient/configs/log/PID_tuning_components/Position_x.json +22 -0
  19. cfclient/configs/log/PID_tuning_components/Position_y.json +22 -0
  20. cfclient/configs/log/PID_tuning_components/Position_z.json +22 -0
  21. cfclient/configs/log/PID_tuning_components/Roll.json +22 -0
  22. cfclient/configs/log/PID_tuning_components/Roll_rate.json +22 -0
  23. cfclient/configs/log/PID_tuning_components/Velocity_x.json +22 -0
  24. cfclient/configs/log/PID_tuning_components/Velocity_y.json +22 -0
  25. cfclient/configs/log/PID_tuning_components/Velocity_z.json +22 -0
  26. cfclient/configs/log/PID_tuning_components/Yaw.json +22 -0
  27. cfclient/configs/log/PID_tuning_components/Yaw_rate.json +22 -0
  28. cfclient/gui.py +44 -9
  29. cfclient/headless.py +3 -12
  30. cfclient/resources/log_param_doc.json +1 -0
  31. cfclient/ui/connectivity_manager.py +198 -0
  32. cfclient/ui/dialogs/about.py +53 -36
  33. cfclient/ui/dialogs/about.ui +23 -3
  34. cfclient/ui/dialogs/anchor_position_dialog.py +252 -0
  35. cfclient/ui/dialogs/anchor_position_dialog.ui +138 -0
  36. cfclient/ui/dialogs/basestation_mode_dialog.py +185 -0
  37. cfclient/ui/dialogs/basestation_mode_dialog.ui +186 -0
  38. cfclient/ui/dialogs/bootloader.py +448 -85
  39. cfclient/ui/dialogs/bootloader.ui +387 -134
  40. cfclient/ui/dialogs/cf2config.py +4 -4
  41. cfclient/ui/dialogs/cf2config.ui +3 -4
  42. cfclient/ui/dialogs/inputconfigdialogue.py +24 -19
  43. cfclient/ui/dialogs/inputconfigdialogue.ui +53 -30
  44. cfclient/ui/dialogs/lighthouse_bs_geometry_dialog.py +220 -0
  45. cfclient/ui/dialogs/lighthouse_bs_geometry_dialog.ui +110 -0
  46. cfclient/ui/dialogs/lighthouse_system_type_dialog.py +93 -0
  47. cfclient/ui/dialogs/lighthouse_system_type_dialog.ui +121 -0
  48. cfclient/ui/dialogs/logconfigdialogue.py +401 -101
  49. cfclient/ui/dialogs/logconfigdialogue.ui +117 -72
  50. cfclient/ui/icons/bl.webp +0 -0
  51. cfclient/ui/icons/bolt.webp +0 -0
  52. cfclient/ui/icons/cf21.webp +0 -0
  53. cfclient/ui/icons/checkmark_black.png +0 -0
  54. cfclient/ui/icons/checkmark_white.png +0 -0
  55. cfclient/ui/icons/create.png +0 -0
  56. cfclient/ui/icons/delete.png +0 -0
  57. cfclient/ui/icons/flapper.webp +0 -0
  58. cfclient/ui/icons/tag.webp +0 -0
  59. cfclient/ui/main.py +328 -258
  60. cfclient/ui/main.ui +184 -80
  61. cfclient/ui/pluginhelper.py +7 -1
  62. cfclient/ui/pose_logger.py +116 -0
  63. cfclient/ui/tab_toolbox.py +208 -0
  64. cfclient/ui/tabs/ColorLEDTab.py +752 -0
  65. cfclient/ui/tabs/ConsoleTab.py +48 -13
  66. cfclient/ui/{toolboxes → tabs}/CrtpSharkToolbox.py +19 -34
  67. cfclient/ui/tabs/ExampleTab.py +9 -16
  68. cfclient/ui/tabs/FlightTab.py +437 -325
  69. cfclient/ui/tabs/GpsTab.py +14 -20
  70. cfclient/ui/tabs/LEDRingTab.py +277 -0
  71. cfclient/ui/tabs/LogBlockDebugTab.py +20 -27
  72. cfclient/ui/tabs/LogBlockTab.py +35 -35
  73. cfclient/ui/tabs/LogClientTab.py +85 -0
  74. cfclient/ui/tabs/LogTab.py +50 -27
  75. cfclient/ui/tabs/ParamTab.py +443 -57
  76. cfclient/ui/tabs/PlotTab.py +23 -25
  77. cfclient/ui/tabs/TuningTab.py +292 -0
  78. cfclient/ui/tabs/__init__.py +12 -2
  79. cfclient/ui/tabs/colorLEDTab.ui +624 -0
  80. cfclient/ui/tabs/consoleTab.ui +46 -0
  81. cfclient/ui/tabs/flightActionContainer.ui +103 -0
  82. cfclient/ui/tabs/flightTab.ui +724 -237
  83. cfclient/ui/tabs/{ledTab.ui → ledRingTab.ui} +63 -46
  84. cfclient/ui/tabs/lighthouse_tab.py +714 -0
  85. cfclient/ui/tabs/lighthouse_tab.ui +430 -0
  86. cfclient/ui/tabs/locopositioning_tab.py +606 -389
  87. cfclient/ui/tabs/locopositioning_tab.ui +370 -253
  88. cfclient/ui/tabs/logClientTab.ui +52 -0
  89. cfclient/ui/tabs/logTab.ui +1 -1
  90. cfclient/ui/tabs/paramTab.ui +204 -3
  91. cfclient/ui/tabs/tuningTab.ui +773 -0
  92. cfclient/ui/widgets/ai.py +37 -39
  93. cfclient/ui/widgets/hexspinbox.py +16 -10
  94. cfclient/ui/widgets/plotter.ui +39 -47
  95. cfclient/ui/widgets/plotwidget.py +57 -22
  96. cfclient/ui/widgets/super_slider.py +112 -0
  97. cfclient/ui/wizards/__init__.py +0 -0
  98. cfclient/ui/wizards/bslh_1.png +0 -0
  99. cfclient/ui/wizards/bslh_2.png +0 -0
  100. cfclient/ui/wizards/bslh_3.png +0 -0
  101. cfclient/ui/wizards/bslh_4.png +0 -0
  102. cfclient/ui/wizards/bslh_5.png +0 -0
  103. cfclient/ui/wizards/lighthouse_geo_bs_estimation_wizard.py +465 -0
  104. cfclient/utils/config_manager.py +5 -4
  105. cfclient/utils/input/__init__.py +77 -19
  106. cfclient/utils/input/inputinterfaces/wiimote.py +2 -2
  107. cfclient/utils/input/inputreaderinterface.py +17 -7
  108. cfclient/utils/input/inputreaders/__init__.py +17 -0
  109. cfclient/utils/logconfigreader.py +245 -25
  110. cfclient/utils/logdatawriter.py +3 -1
  111. cfclient/utils/periodictimer.py +1 -1
  112. cfclient/utils/ui.py +336 -0
  113. cfclient/utils/zmq_led_driver.py +5 -0
  114. cfclient/utils/zmq_param.py +6 -0
  115. cfclient/version.py +34 -1
  116. cfclient-2025.12.1.dist-info/METADATA +70 -0
  117. cfclient-2025.12.1.dist-info/RECORD +152 -0
  118. {cfclient-2017.4.dist-info → cfclient-2025.12.1.dist-info}/WHEEL +1 -1
  119. {cfclient-2017.4.dist-info → cfclient-2025.12.1.dist-info}/entry_points.txt +0 -1
  120. cfclient-2025.12.1.dist-info/licenses/LICENSE.txt +350 -0
  121. {cfclient-2017.4.dist-info → cfclient-2025.12.1.dist-info}/top_level.txt +1 -0
  122. cfconfig/Makefile +51 -0
  123. cfconfig/configblock.py +111 -0
  124. cfloader/__init__.py +41 -55
  125. cfzmq/__init__.py +22 -14
  126. cfclient/ui/dialogs/cf1config.py +0 -265
  127. cfclient/ui/dialogs/cf1config.ui +0 -260
  128. cfclient/ui/tab.py +0 -96
  129. cfclient/ui/tabs/LEDTab.py +0 -169
  130. cfclient/ui/toolboxes/ConsoleToolbox.py +0 -69
  131. cfclient/ui/toolboxes/DebugDriverToolbox.py +0 -107
  132. cfclient/ui/toolboxes/__init__.py +0 -45
  133. cfclient/ui/toolboxes/consoleToolbox.ui +0 -62
  134. cfclient/ui/toolboxes/debugDriverToolbox.ui +0 -86
  135. cfclient-2017.4.dist-info/DESCRIPTION.rst +0 -3
  136. cfclient-2017.4.dist-info/METADATA +0 -22
  137. cfclient-2017.4.dist-info/RECORD +0 -104
  138. cfclient-2017.4.dist-info/metadata.json +0 -1
  139. /cfclient/{icon-256.png → ui/icons/icon-256.png} +0 -0
  140. /cfclient/ui/{toolboxes → tabs}/crtpSharkToolbox.ui +0 -0
@@ -3,7 +3,7 @@
3
3
  <class>Form</class>
4
4
  <widget class="QWidget" name="Form">
5
5
  <property name="windowModality">
6
- <enum>Qt::ApplicationModal</enum>
6
+ <enum>Qt::WindowModality::ApplicationModal</enum>
7
7
  </property>
8
8
  <property name="enabled">
9
9
  <bool>true</bool>
@@ -12,15 +12,15 @@
12
12
  <rect>
13
13
  <x>0</x>
14
14
  <y>0</y>
15
- <width>825</width>
16
- <height>338</height>
15
+ <width>675</width>
16
+ <height>551</height>
17
17
  </rect>
18
18
  </property>
19
19
  <property name="windowTitle">
20
20
  <string>Crazyflie Service</string>
21
21
  </property>
22
22
  <layout class="QGridLayout" name="gridLayout_3">
23
- <item row="0" column="0">
23
+ <item row="0" column="1">
24
24
  <layout class="QVBoxLayout" name="verticalLayout">
25
25
  <item>
26
26
  <widget class="QGroupBox" name="groupBox">
@@ -29,117 +29,111 @@
29
29
  </property>
30
30
  <layout class="QVBoxLayout" name="verticalLayout_2">
31
31
  <item>
32
- <layout class="QHBoxLayout" name="horizontalLayout_2">
33
- <item>
34
- <widget class="QPushButton" name="coldBootButton">
35
- <property name="text">
36
- <string>Initiate bootloader cold boot</string>
37
- </property>
38
- </widget>
39
- </item>
40
- <item>
41
- <widget class="QPushButton" name="pushButton_2">
42
- <property name="enabled">
43
- <bool>false</bool>
44
- </property>
45
- <property name="text">
46
- <string>Restart in bootloader mode</string>
47
- </property>
48
- </widget>
49
- </item>
50
- <item>
51
- <widget class="QPushButton" name="resetButton">
52
- <property name="enabled">
53
- <bool>false</bool>
54
- </property>
55
- <property name="text">
56
- <string>Restart in firmware mode</string>
57
- </property>
58
- </widget>
59
- </item>
60
- <item>
61
- <widget class="QPushButton" name="_cancel_bootloading">
62
- <property name="text">
63
- <string>Cancel bootloading</string>
64
- </property>
65
- </widget>
66
- </item>
67
- <item>
68
- <spacer name="horizontalSpacer">
69
- <property name="orientation">
70
- <enum>Qt::Horizontal</enum>
71
- </property>
72
- <property name="sizeHint" stdset="0">
73
- <size>
74
- <width>40</width>
75
- <height>20</height>
76
- </size>
77
- </property>
78
- </spacer>
79
- </item>
80
- </layout>
81
- </item>
82
- <item>
83
- <widget class="QLabel" name="connectionStatus">
84
- <property name="text">
85
- <string>Status: &lt;b&gt;Not connected&lt;/b&gt;</string>
32
+ <widget class="QTabWidget" name="tabWidget">
33
+ <property name="currentIndex">
34
+ <number>0</number>
86
35
  </property>
87
- </widget>
88
- </item>
89
- </layout>
90
- </widget>
91
- </item>
92
- <item>
93
- <layout class="QGridLayout" name="gridLayout">
94
- <property name="horizontalSpacing">
95
- <number>6</number>
96
- </property>
97
- <item row="0" column="0">
98
- <widget class="QGroupBox" name="groupBox_2">
99
- <property name="enabled">
100
- <bool>true</bool>
101
- </property>
102
- <property name="title">
103
- <string>Crazyflie firmware update</string>
104
- </property>
105
- <layout class="QVBoxLayout" name="verticalLayout_3">
106
- <item>
107
- <layout class="QGridLayout" name="gridLayout_4">
108
- <item row="1" column="2">
109
- <widget class="QPushButton" name="imagePathBrowseButton">
36
+ <widget class="QWidget" name="tab">
37
+ <attribute name="title">
38
+ <string>Connect Crazyflie</string>
39
+ </attribute>
40
+ <layout class="QVBoxLayout" name="verticalLayout_4">
41
+ <item>
42
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
43
+ <item>
44
+ <widget class="QComboBox" name="comboBox">
45
+ <property name="sizePolicy">
46
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
47
+ <horstretch>1</horstretch>
48
+ <verstretch>0</verstretch>
49
+ </sizepolicy>
50
+ </property>
51
+ </widget>
52
+ </item>
53
+ <item>
54
+ <widget class="QPushButton" name="connectButton">
55
+ <property name="text">
56
+ <string>Connect</string>
57
+ </property>
58
+ </widget>
59
+ </item>
60
+ <item>
61
+ <widget class="QPushButton" name="scanButton">
62
+ <property name="text">
63
+ <string>Scan</string>
64
+ </property>
65
+ </widget>
66
+ </item>
67
+ </layout>
68
+ </item>
69
+ <item>
70
+ <layout class="QHBoxLayout" name="horizontalLayout">
71
+ <item>
72
+ <widget class="QLabel" name="addressLabel">
73
+ <property name="text">
74
+ <string>Address:</string>
75
+ </property>
76
+ </widget>
77
+ </item>
78
+ <item>
79
+ <widget class="HexSpinBox" name="address">
80
+ <property name="sizePolicy">
81
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
82
+ <horstretch>0</horstretch>
83
+ <verstretch>0</verstretch>
84
+ </sizepolicy>
85
+ </property>
86
+ <property name="minimumSize">
87
+ <size>
88
+ <width>158</width>
89
+ <height>0</height>
90
+ </size>
91
+ </property>
92
+ </widget>
93
+ </item>
94
+ <item>
95
+ <spacer name="horizontalSpacer">
96
+ <property name="orientation">
97
+ <enum>Qt::Orientation::Horizontal</enum>
98
+ </property>
99
+ <property name="sizeHint" stdset="0">
100
+ <size>
101
+ <width>40</width>
102
+ <height>20</height>
103
+ </size>
104
+ </property>
105
+ </spacer>
106
+ </item>
107
+ </layout>
108
+ </item>
109
+ </layout>
110
+ </widget>
111
+ <widget class="QWidget" name="tab_2">
112
+ <attribute name="title">
113
+ <string>Cold boot (recovery)</string>
114
+ </attribute>
115
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
116
+ <item>
117
+ <widget class="QPushButton" name="coldBootButton">
110
118
  <property name="text">
111
- <string>Browse</string>
119
+ <string>Initiate bootloader cold boot</string>
112
120
  </property>
113
121
  </widget>
114
122
  </item>
115
- <item row="2" column="0">
116
- <widget class="QCheckBox" name="verifyCheckBox">
123
+ <item>
124
+ <widget class="QPushButton" name="resetButton">
117
125
  <property name="enabled">
118
126
  <bool>false</bool>
119
127
  </property>
120
128
  <property name="text">
121
- <string>Verify flashing</string>
122
- </property>
123
- </widget>
124
- </item>
125
- <item row="0" column="0">
126
- <widget class="QLabel" name="label_3">
127
- <property name="text">
128
- <string>Select package to flash:</string>
129
+ <string>Restart in firmware mode</string>
129
130
  </property>
130
131
  </widget>
131
132
  </item>
132
- <item row="1" column="0">
133
- <widget class="QLineEdit" name="imagePathLine"/>
134
- </item>
135
- </layout>
136
- </item>
137
- <item>
138
- <layout class="QHBoxLayout" name="horizontalLayout_3">
139
133
  <item>
140
- <spacer name="horizontalSpacer_2">
134
+ <spacer name="horizontalSpacer_5">
141
135
  <property name="orientation">
142
- <enum>Qt::Horizontal</enum>
136
+ <enum>Qt::Orientation::Horizontal</enum>
143
137
  </property>
144
138
  <property name="sizeHint" stdset="0">
145
139
  <size>
@@ -149,42 +143,294 @@
149
143
  </property>
150
144
  </spacer>
151
145
  </item>
146
+ </layout>
147
+ </widget>
148
+ </widget>
149
+ </item>
150
+ <item>
151
+ <widget class="QLabel" name="connectionStatus">
152
+ <property name="text">
153
+ <string>Status: &lt;b&gt;Not connected&lt;/b&gt;</string>
154
+ </property>
155
+ </widget>
156
+ </item>
157
+ </layout>
158
+ </widget>
159
+ </item>
160
+ <item>
161
+ <widget class="QLabel" name="label_4">
162
+ <property name="text">
163
+ <string>Firmware source</string>
164
+ </property>
165
+ </widget>
166
+ </item>
167
+ <item>
168
+ <widget class="QTabWidget" name="sourceTab">
169
+ <property name="currentIndex">
170
+ <number>0</number>
171
+ </property>
172
+ <widget class="QWidget" name="tabFromRelease">
173
+ <property name="enabled">
174
+ <bool>true</bool>
175
+ </property>
176
+ <attribute name="title">
177
+ <string>From release</string>
178
+ </attribute>
179
+ <layout class="QGridLayout" name="gridLayout">
180
+ <item row="1" column="0">
181
+ <widget class="QGroupBox" name="platform_filter_gb">
182
+ <property name="title">
183
+ <string>Select a platform:</string>
184
+ </property>
185
+ <layout class="QHBoxLayout" name="horizontalLayout_7">
152
186
  <item>
153
- <widget class="QPushButton" name="verifyButton">
154
- <property name="enabled">
155
- <bool>false</bool>
156
- </property>
157
- <property name="text">
158
- <string>Verify</string>
159
- </property>
160
- </widget>
161
- </item>
162
- <item>
163
- <widget class="QPushButton" name="programButton">
164
- <property name="enabled">
165
- <bool>false</bool>
166
- </property>
167
- <property name="text">
168
- <string>Program</string>
169
- </property>
170
- </widget>
187
+ <layout class="QVBoxLayout" name="verticalLayout_5">
188
+ <item>
189
+ <layout class="QGridLayout" name="gridLayout_6">
190
+ <item row="0" column="2">
191
+ <widget class="QLabel" name="image_3">
192
+ <property name="maximumSize">
193
+ <size>
194
+ <width>100</width>
195
+ <height>100</height>
196
+ </size>
197
+ </property>
198
+ <property name="text">
199
+ <string>Image 3</string>
200
+ </property>
201
+ </widget>
202
+ </item>
203
+ <item row="0" column="1">
204
+ <widget class="QLabel" name="image_2">
205
+ <property name="maximumSize">
206
+ <size>
207
+ <width>100</width>
208
+ <height>100</height>
209
+ </size>
210
+ </property>
211
+ <property name="text">
212
+ <string>Image 2</string>
213
+ </property>
214
+ </widget>
215
+ </item>
216
+ <item row="0" column="5">
217
+ <spacer name="horizontalSpacer_7">
218
+ <property name="orientation">
219
+ <enum>Qt::Orientation::Horizontal</enum>
220
+ </property>
221
+ <property name="sizeHint" stdset="0">
222
+ <size>
223
+ <width>40</width>
224
+ <height>20</height>
225
+ </size>
226
+ </property>
227
+ </spacer>
228
+ </item>
229
+ <item row="0" column="3">
230
+ <widget class="QLabel" name="image_4">
231
+ <property name="maximumSize">
232
+ <size>
233
+ <width>100</width>
234
+ <height>100</height>
235
+ </size>
236
+ </property>
237
+ <property name="text">
238
+ <string>Image 4</string>
239
+ </property>
240
+ </widget>
241
+ </item>
242
+ <item row="0" column="0">
243
+ <widget class="QLabel" name="image_1">
244
+ <property name="maximumSize">
245
+ <size>
246
+ <width>100</width>
247
+ <height>100</height>
248
+ </size>
249
+ </property>
250
+ <property name="text">
251
+ <string>Image 1</string>
252
+ </property>
253
+ </widget>
254
+ </item>
255
+ <item row="0" column="4">
256
+ <widget class="QLabel" name="image_5">
257
+ <property name="maximumSize">
258
+ <size>
259
+ <width>100</width>
260
+ <height>100</height>
261
+ </size>
262
+ </property>
263
+ <property name="text">
264
+ <string>Image 5</string>
265
+ </property>
266
+ </widget>
267
+ </item>
268
+ </layout>
269
+ </item>
270
+ <item>
271
+ <layout class="QHBoxLayout" name="filterLayout">
272
+ <item>
273
+ <spacer name="horizontalSpacer_6">
274
+ <property name="orientation">
275
+ <enum>Qt::Orientation::Horizontal</enum>
276
+ </property>
277
+ <property name="sizeHint" stdset="0">
278
+ <size>
279
+ <width>40</width>
280
+ <height>20</height>
281
+ </size>
282
+ </property>
283
+ </spacer>
284
+ </item>
285
+ </layout>
286
+ </item>
287
+ </layout>
171
288
  </item>
172
289
  </layout>
173
- </item>
174
- <item>
175
- <spacer name="verticalSpacer_3">
176
- <property name="orientation">
177
- <enum>Qt::Vertical</enum>
178
- </property>
179
- <property name="sizeHint" stdset="0">
180
- <size>
181
- <width>20</width>
182
- <height>40</height>
183
- </size>
184
- </property>
185
- </spacer>
186
- </item>
187
- </layout>
290
+ </widget>
291
+ </item>
292
+ <item row="5" column="0">
293
+ <spacer name="verticalSpacer">
294
+ <property name="orientation">
295
+ <enum>Qt::Orientation::Vertical</enum>
296
+ </property>
297
+ <property name="sizeHint" stdset="0">
298
+ <size>
299
+ <width>20</width>
300
+ <height>40</height>
301
+ </size>
302
+ </property>
303
+ </spacer>
304
+ </item>
305
+ <item row="2" column="0">
306
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
307
+ <item>
308
+ <widget class="QLabel" name="label_2">
309
+ <property name="text">
310
+ <string>Available downloads: </string>
311
+ </property>
312
+ </widget>
313
+ </item>
314
+ <item>
315
+ <widget class="QComboBox" name="firmwareDropdown"/>
316
+ </item>
317
+ <item>
318
+ <spacer name="horizontalSpacer_4">
319
+ <property name="orientation">
320
+ <enum>Qt::Orientation::Horizontal</enum>
321
+ </property>
322
+ <property name="sizeHint" stdset="0">
323
+ <size>
324
+ <width>40</width>
325
+ <height>20</height>
326
+ </size>
327
+ </property>
328
+ </spacer>
329
+ </item>
330
+ <item>
331
+ <widget class="QLabel" name="downloadStatus">
332
+ <property name="text">
333
+ <string/>
334
+ </property>
335
+ </widget>
336
+ </item>
337
+ </layout>
338
+ </item>
339
+ </layout>
340
+ </widget>
341
+ <widget class="QWidget" name="tabFromFile">
342
+ <attribute name="title">
343
+ <string>From file</string>
344
+ </attribute>
345
+ <layout class="QVBoxLayout" name="verticalLayout_3">
346
+ <item>
347
+ <layout class="QGridLayout" name="gridLayout_4">
348
+ <item row="1" column="2">
349
+ <widget class="QPushButton" name="imagePathBrowseButton">
350
+ <property name="text">
351
+ <string>Browse</string>
352
+ </property>
353
+ </widget>
354
+ </item>
355
+ <item row="2" column="2">
356
+ <layout class="QHBoxLayout" name="horizontalLayout_11"/>
357
+ </item>
358
+ <item row="0" column="0">
359
+ <widget class="QLabel" name="label_3">
360
+ <property name="text">
361
+ <string>Select file to flash</string>
362
+ </property>
363
+ </widget>
364
+ </item>
365
+ <item row="1" column="0" colspan="2">
366
+ <widget class="QLineEdit" name="imagePathLine"/>
367
+ </item>
368
+ </layout>
369
+ </item>
370
+ <item>
371
+ <layout class="QHBoxLayout" name="chipSelectLayout">
372
+ <item>
373
+ <spacer name="horizontalSpacer_3">
374
+ <property name="orientation">
375
+ <enum>Qt::Orientation::Horizontal</enum>
376
+ </property>
377
+ <property name="sizeHint" stdset="0">
378
+ <size>
379
+ <width>40</width>
380
+ <height>20</height>
381
+ </size>
382
+ </property>
383
+ </spacer>
384
+ </item>
385
+ </layout>
386
+ </item>
387
+ </layout>
388
+ </widget>
389
+ </widget>
390
+ </item>
391
+ <item>
392
+ <spacer name="verticalSpacer_3">
393
+ <property name="orientation">
394
+ <enum>Qt::Orientation::Vertical</enum>
395
+ </property>
396
+ <property name="sizeHint" stdset="0">
397
+ <size>
398
+ <width>20</width>
399
+ <height>40</height>
400
+ </size>
401
+ </property>
402
+ </spacer>
403
+ </item>
404
+ <item>
405
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
406
+ <item>
407
+ <spacer name="horizontalSpacer_2">
408
+ <property name="orientation">
409
+ <enum>Qt::Orientation::Horizontal</enum>
410
+ </property>
411
+ <property name="sizeHint" stdset="0">
412
+ <size>
413
+ <width>40</width>
414
+ <height>20</height>
415
+ </size>
416
+ </property>
417
+ </spacer>
418
+ </item>
419
+ <item>
420
+ <widget class="QLabel" name="label">
421
+ <property name="text">
422
+ <string>The Crazyflie may restart one or more times during the programming process </string>
423
+ </property>
424
+ </widget>
425
+ </item>
426
+ <item>
427
+ <widget class="QPushButton" name="programButton">
428
+ <property name="enabled">
429
+ <bool>false</bool>
430
+ </property>
431
+ <property name="text">
432
+ <string>Program</string>
433
+ </property>
188
434
  </widget>
189
435
  </item>
190
436
  </layout>
@@ -211,6 +457,13 @@
211
457
  </item>
212
458
  </layout>
213
459
  </widget>
460
+ <customwidgets>
461
+ <customwidget>
462
+ <class>HexSpinBox</class>
463
+ <extends>QSpinBox</extends>
464
+ <header>cfclient.ui.widgets.hexspinbox</header>
465
+ </customwidget>
466
+ </customwidgets>
214
467
  <resources/>
215
468
  <connections/>
216
469
  </ui>
@@ -7,7 +7,7 @@
7
7
  # +------+ / /_/ / / /_/ /__/ / / /_/ / / /_/ __/
8
8
  # || || /_____/_/\__/\___/_/ \__,_/ /___/\___/
9
9
  #
10
- # Copyright (C) 2011-2013 Bitcraze AB
10
+ # Copyright (C) 2011-2023 Bitcraze AB
11
11
  #
12
12
  # Crazyflie Nano Quadcopter Client
13
13
  #
@@ -32,9 +32,9 @@ import logging
32
32
  import cfclient
33
33
  from cflib.crazyflie.mem import MemoryElement
34
34
 
35
- from PyQt5 import QtWidgets
36
- from PyQt5 import uic
37
- from PyQt5.QtCore import pyqtSignal
35
+ from PyQt6 import QtWidgets
36
+ from PyQt6 import uic
37
+ from PyQt6.QtCore import pyqtSignal
38
38
 
39
39
  __author__ = 'Bitcraze AB'
40
40
  __all__ = ['Cf2ConfigDialog']
@@ -17,7 +17,7 @@
17
17
  </rect>
18
18
  </property>
19
19
  <property name="windowTitle">
20
- <string>Crazyflie 2.0 config</string>
20
+ <string>Crazyflie 2.x config</string>
21
21
  </property>
22
22
  <layout class="QGridLayout" name="gridLayout_3">
23
23
  <item row="0" column="0">
@@ -56,7 +56,7 @@
56
56
  <string>Ch. </string>
57
57
  </property>
58
58
  <property name="maximum">
59
- <number>127</number>
59
+ <number>125</number>
60
60
  </property>
61
61
  </widget>
62
62
  </item>
@@ -167,8 +167,7 @@
167
167
  </widget>
168
168
  </item>
169
169
  <item row="7" column="1">
170
- <widget class="HexSpinBox" name="_radio_address">
171
- </widget>
170
+ <widget class="HexSpinBox" name="_radio_address"/>
172
171
  </item>
173
172
  </layout>
174
173
  </widget>