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
@@ -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
  #
@@ -28,38 +28,40 @@ Shows the Log TOC of available variables in the Crazyflie.
28
28
  """
29
29
 
30
30
  import cfclient
31
- from cfclient.ui.tab import Tab
32
- from PyQt5 import QtWidgets
33
- from PyQt5 import uic
34
- from PyQt5.QtCore import pyqtSignal
35
- from PyQt5.QtCore import pyqtSlot
36
- from PyQt5.QtCore import Qt
31
+ from cfclient.ui.tab_toolbox import TabToolbox
32
+ from PyQt6 import QtWidgets
33
+ from PyQt6 import uic
34
+ from PyQt6.QtCore import pyqtSignal
35
+ from PyQt6.QtCore import pyqtSlot
36
+ from PyQt6.QtCore import Qt
37
37
 
38
38
  __author__ = 'Bitcraze AB'
39
39
  __all__ = ['LogTab']
40
40
 
41
- param_tab_class = uic.loadUiType(cfclient.module_path +
42
- "/ui/tabs/logTab.ui")[0]
41
+ param_tab_class = uic.loadUiType(cfclient.module_path + "/ui/tabs/logTab.ui")[0]
43
42
 
44
43
 
45
- class LogTab(Tab, param_tab_class):
44
+ class LogTab(TabToolbox, param_tab_class):
46
45
  connectedSignal = pyqtSignal(str)
47
46
  disconnectedSignal = pyqtSignal(str)
48
47
 
49
- def __init__(self, tabWidget, helper, *args):
50
- super(LogTab, self).__init__(*args)
48
+ def __init__(self, helper):
49
+ super(LogTab, self).__init__(helper, 'Log TOC')
51
50
  self.setupUi(self)
52
51
 
53
- self.tabName = "Log TOC"
54
- self.menuName = "Log TOC"
55
-
56
- self.helper = helper
57
- self.tabWidget = tabWidget
58
-
59
52
  self.cf = helper.cf
60
53
 
61
54
  # Init the tree widget
62
- self.logTree.setHeaderLabels(['Name', 'ID', 'Unpack', 'Storage'])
55
+ self.logTree.setAlternatingRowColors(True)
56
+ if helper.mainUI.isDark:
57
+ self.logTree.setStyleSheet('QTreeWidget { alternate-background-color: #3c3c3c; }')
58
+ else:
59
+ self.logTree.setStyleSheet('QTreeWidget { alternate-background-color: #e9e9e9; }')
60
+
61
+ self.logTree.setHeaderLabels(['Name', 'ID', 'Unpack', 'Storage', 'Description'])
62
+ self.logTree.header().resizeSection(0, 150)
63
+ self.logTree.setSortingEnabled(True)
64
+ self.logTree.sortItems(0, Qt.SortOrder.AscendingOrder)
63
65
 
64
66
  self.cf.connected.add_callback(self.connectedSignal.emit)
65
67
  self.connectedSignal.connect(self.connected)
@@ -70,7 +72,10 @@ class LogTab(Tab, param_tab_class):
70
72
 
71
73
  @pyqtSlot('QString')
72
74
  def disconnected(self, linkname):
73
- self.logTree.clear()
75
+ root = self.logTree.invisibleRootItem()
76
+ for i in range(root.childCount()):
77
+ item = root.child(i)
78
+ item.setFlags(Qt.ItemFlag.NoItemFlags)
74
79
 
75
80
  @pyqtSlot(str)
76
81
  def connected(self, linkURI):
@@ -78,16 +83,34 @@ class LogTab(Tab, param_tab_class):
78
83
 
79
84
  toc = self.cf.log.toc
80
85
 
81
- for group in list(toc.toc.keys()):
86
+ for row_idx, group in enumerate(list(toc.toc.keys())):
82
87
  groupItem = QtWidgets.QTreeWidgetItem()
83
- groupItem.setData(0, Qt.DisplayRole, group)
88
+ groupItem.setData(0, Qt.ItemDataRole.DisplayRole, group)
89
+
84
90
  for param in list(toc.toc[group].keys()):
85
91
  item = QtWidgets.QTreeWidgetItem()
86
- item.setData(0, Qt.DisplayRole, param)
87
- item.setData(1, Qt.DisplayRole, toc.toc[group][param].ident)
88
- item.setData(2, Qt.DisplayRole, toc.toc[group][param].pytype)
89
- item.setData(3, Qt.DisplayRole, toc.toc[group][param].ctype)
92
+ item.setData(0, Qt.ItemDataRole.DisplayRole, param)
93
+ item.setData(1, Qt.ItemDataRole.DisplayRole, toc.toc[group][param].ident)
94
+ item.setData(2, Qt.ItemDataRole.DisplayRole, toc.toc[group][param].pytype)
95
+ item.setData(3, Qt.ItemDataRole.DisplayRole, toc.toc[group][param].ctype)
96
+
97
+ if cfclient.log_param_doc is not None:
98
+ try:
99
+ log_groups = cfclient.log_param_doc['logs'][group]
100
+ log_variable = log_groups['variables'][param]
101
+ item.setData(4, Qt.ItemDataRole.DisplayRole, log_variable['short_desc'])
102
+ except (KeyError, TypeError, AttributeError):
103
+ pass
104
+
90
105
  groupItem.addChild(item)
91
106
 
92
107
  self.logTree.addTopLevelItem(groupItem)
93
- self.logTree.expandItem(groupItem)
108
+
109
+ if cfclient.log_param_doc is not None:
110
+ try:
111
+ log_groups = cfclient.log_param_doc['logs'][group]
112
+ label = QtWidgets.QLabel(log_groups['desc'])
113
+ label.setWordWrap(True)
114
+ self.logTree.setItemWidget(groupItem, 4, label)
115
+ except (KeyError, TypeError, AttributeError):
116
+ pass