tabbed_button_general.py
Go to the documentation of this file.
1 from distutils.version import LooseVersion
2 import math
3 import os
4 import sys
5 
6 import python_qt_binding
7 import python_qt_binding.QtCore as QtCore
8 from python_qt_binding.QtCore import QEvent
9 from python_qt_binding.QtCore import QSize
10 from python_qt_binding.QtCore import Qt
11 from python_qt_binding.QtCore import QTimer
12 from python_qt_binding.QtCore import qWarning
13 from python_qt_binding.QtCore import Slot
14 import python_qt_binding.QtGui as QtGui
15 from python_qt_binding.QtGui import QBrush
16 from python_qt_binding.QtGui import QColor
17 from python_qt_binding.QtGui import QFont
18 from python_qt_binding.QtGui import QIcon
19 from python_qt_binding.QtGui import QPainter
20 from python_qt_binding.QtGui import QPen
21 import yaml
22 
23 from resource_retriever import get_filename
24 import rospy
25 from rqt_gui_py.plugin import Plugin
26 from std_msgs.msg import Bool
27 from std_msgs.msg import Time
28 from std_srvs.srv import Empty
29 from std_srvs.srv import SetBool
30 from std_srvs.srv import Trigger
31 
32 if LooseVersion(python_qt_binding.QT_BINDING_VERSION).version[0] >= 5:
33  from python_qt_binding.QtWidgets import QAction
34  from python_qt_binding.QtWidgets import QComboBox
35  from python_qt_binding.QtWidgets import QCompleter
36  from python_qt_binding.QtWidgets import QDialog
37  from python_qt_binding.QtWidgets import QFileDialog
38  from python_qt_binding.QtWidgets import QGroupBox
39  from python_qt_binding.QtWidgets import QHBoxLayout
40  from python_qt_binding.QtWidgets import QMenu
41  from python_qt_binding.QtWidgets import QMessageBox
42  from python_qt_binding.QtWidgets import QRadioButton
43  from python_qt_binding.QtWidgets import QSizePolicy
44  from python_qt_binding.QtWidgets import QToolButton
45  from python_qt_binding.QtWidgets import QVBoxLayout
46  from python_qt_binding.QtWidgets import QWidget
47  from python_qt_binding.QtWidgets import QTabWidget
48 else:
49  from python_qt_binding.QtGui import QAction
50  from python_qt_binding.QtGui import QComboBox
51  from python_qt_binding.QtGui import QCompleter
52  from python_qt_binding.QtGui import QDialog
53  from python_qt_binding.QtGui import QFileDialog
54  from python_qt_binding.QtGui import QGroupBox
55  from python_qt_binding.QtGui import QHBoxLayout
56  from python_qt_binding.QtGui import QMenu
57  from python_qt_binding.QtGui import QMessageBox
58  from python_qt_binding.QtGui import QRadioButton
59  from python_qt_binding.QtGui import QSizePolicy
60  from python_qt_binding.QtGui import QToolButton
61  from python_qt_binding.QtGui import QVBoxLayout
62  from python_qt_binding.QtGui import QWidget
63  from python_qt_binding.QtGui import QTabWidget
64 
65 from jsk_rqt_plugins.button_general import ServiceButtonGeneralWidget
66 
67 
69  def __init__(self):
70  super(ServiceTabbedButtonGeneralWidget, self).__init__()
71  self._tab_settings = None
72 
73  if rospy.has_param("~tabbed_layout"):
74  tabbed_layout = rospy.get_param("~tabbed_layout")
75  self._tab_list = []
76  if not 'tab_list' in tabbed_layout:
77  self.showError("Cannot find tab_list in %s"%(tabbed_layout))
78  return
79  tab_list = tabbed_layout['tab_list']
80  for tb in tab_list:
81  if tb in tabbed_layout:
82  param_settings = tabbed_layout[tb]
83  settings = {}
84 
85  if 'type' in param_settings:
86  settings['type'] = param_settings['type']
87 
88  if not 'name' in param_settings:
89  settings['name'] = tb
90  else:
91  settings['name'] = param_settings['name']
92 
93  if 'yaml_file' in param_settings:
94  settings['yaml_file'] = param_settings['yaml_file']
95  else:
96  self.showError("Cannot find yaml_file in %s"%(tb))
97  settings = None
98 
99  if 'namespace' in param_settings:
100  settings['namespace'] = param_settings['namespace']
101 
102  if settings:
103  self._tab_list.append(settings)
104  else:
105  self.showError("Cannot find key %s in %s"%(tb, tabbed_layout))
106  else:
107  self.showError("Cannot find rosparam ~tabbed_layout")
108  return
109 
110  if len(self._tab_list) == 0:
111  self.showError("there is no valid param in ~tabbed_layout")
112  return
113 
114  qtab = QTabWidget()
115  for tb in self._tab_list:
117  qtab.addTab(wg, tb['name'] )
118 
119  #self.setWindowTitle('Tab Layout')
120  hbox = QHBoxLayout()
121  hbox.addWidget(qtab)
122  self.setLayout(hbox)
123  self.show()
124 
125  def showError(self, message):
126  QMessageBox.about(self, "ERROR", message)
127 
128  def save_settings(self, plugin_settings, instance_settings):
129 
130  pass
131  def restore_settings(self, plugin_settings, instance_settings):
132 
133  pass
135 
136  pass
137 
138 class ServiceButtonGeneralWidget_in_tab(ServiceButtonGeneralWidget):
139  """
140  Qt widget to visualize multiple buttons
141  """
142  def __init__(self, settings):
143  super(ServiceButtonGeneralWidget_in_tab, self).__init__()
144  yaml_file = settings['yaml_file']
145  namespace = None
146  if 'type' in settings:
147  self.button_type = settings['type']
148  else:
149  self.button_type = 'push'
150 
151  if 'namespace' in settings:
152  namespace = settings['namespace']
153 
154  self._layout_param = None
155  self._dialog = QFileDialog()
156  self._dialog.setFileMode(QFileDialog.ExistingFile)
157  self._dialog.setNameFilter(
158  self._translator.tr("YAML files (*.yaml *.yml)"))
159 
160  resolved_yaml = get_filename(yaml_file)
161  if "file://" == resolved_yaml[0:7]:
162  resolved_yaml = resolved_yaml[len("file://"):]
163 
164  with open(resolved_yaml) as f:
165  yaml_data = yaml.safe_load(f)
166  self.setupButtons_with_yaml_data(yaml_data=yaml_data, namespace=namespace)
167 
168  self.show()
jsk_rqt_plugins.tabbed_button_general.ServiceTabbedButtonGeneralWidget._tab_settings
_tab_settings
Definition: tabbed_button_general.py:71
jsk_rqt_plugins.button_general.ServiceButtonGeneralWidget.setupButtons_with_yaml_data
def setupButtons_with_yaml_data(self, yaml_data, namespace=None)
Definition: button_general.py:108
jsk_rqt_plugins.tabbed_button_general.ServiceTabbedButtonGeneralWidget._tab_list
_tab_list
Definition: tabbed_button_general.py:75
jsk_rqt_plugins.button_general.ServiceButtonGeneralWidget.button_type
button_type
Definition: button_general.py:68
jsk_rqt_plugins.tabbed_button_general.ServiceTabbedButtonGeneralWidget.showError
def showError(self, message)
Definition: tabbed_button_general.py:125
jsk_rqt_plugins.tabbed_button_general.ServiceTabbedButtonGeneralWidget.save_settings
def save_settings(self, plugin_settings, instance_settings)
Definition: tabbed_button_general.py:128
jsk_rqt_plugins.button_general.ServiceButtonGeneralWidget._translator
_translator
Definition: button_general.py:70
jsk_rqt_plugins.button_general
Definition: button_general.py:1
jsk_rqt_plugins.tabbed_button_general.ServiceTabbedButtonGeneralWidget.trigger_configuration
def trigger_configuration(self)
Definition: tabbed_button_general.py:134
jsk_rqt_plugins.tabbed_button_general.ServiceTabbedButtonGeneralWidget.__init__
def __init__(self)
Definition: tabbed_button_general.py:69
jsk_rqt_plugins.tabbed_button_general.ServiceTabbedButtonGeneralWidget
Definition: tabbed_button_general.py:68
jsk_rqt_plugins.button_general.ServiceButtonGeneralWidget._layout_param
_layout_param
Definition: button_general.py:69
jsk_rqt_plugins.tabbed_button_general.ServiceButtonGeneralWidget_in_tab
Definition: tabbed_button_general.py:138
jsk_rqt_plugins.button_general.ServiceButtonGeneralWidget._dialog
_dialog
Definition: button_general.py:71
rqt_gui_py::plugin
jsk_rqt_plugins.tabbed_button_general.ServiceButtonGeneralWidget_in_tab.__init__
def __init__(self, settings)
Definition: tabbed_button_general.py:142
jsk_rqt_plugins.tabbed_button_general.ServiceTabbedButtonGeneralWidget.restore_settings
def restore_settings(self, plugin_settings, instance_settings)
Definition: tabbed_button_general.py:131


jsk_rqt_plugins
Author(s):
autogenerated on Mon Apr 7 2025 02:49:46