35 from python_qt_binding.QtCore 
import Qt, Signal
 
   36 from python_qt_binding.QtWidgets 
import QWidget, QVBoxLayout, QCheckBox, QScrollArea, QPushButton
 
   37 from .node_selection 
import NodeSelection
 
   42     recordSettingsSelected = Signal(bool, list)
 
   45         super(TopicSelection, self).
__init__()
 
   46         master = rosgraph.Master(
'rqt_bag_recorder')
 
   47         self.setWindowTitle(
"Select the topics you want to record")
 
   54         self.
area = QScrollArea(self)
 
   73         topic_data_list = master.getPublishedTopics(
'')
 
   74         topic_data_list.sort()
 
   75         for topic, datatype 
in topic_data_list:
 
   85         item = QCheckBox(topic, self)
 
   86         item.stateChanged.connect(
lambda x: self.
updateList(x, topic))
 
   92             if item.text() == topic:
 
   93                 item.setCheckState(state)
 
   96     def updateList(self, state, topic=None, force_update_state=False):
 
   98             if state == Qt.Checked:
 
  101                     if item.checkState() == Qt.Unchecked:
 
  102                         item.setCheckState(Qt.Checked)
 
  103             elif state == Qt.Unchecked:
 
  106                     if item.checkState() == Qt.Checked:
 
  107                         item.setCheckState(Qt.Unchecked)
 
  109             if state == Qt.Checked:
 
  113                 if self.
item_all.checkState() == Qt.Checked:
 
  114                     self.
item_all.setCheckState(Qt.PartiallyChecked)