def prompt_parameters(self, xml): logging.debug('got back XML from server:\n%s', xml) # Edited by Olof 2013/04/16: Temporary fix for handling messages containing # XML markup #xml_root = etree.fromstring(xml) xml_root = etree.fromstring(xml, parser=etree.XMLParser(recover=True)) # Special case until Olof implements the saner XML format on the server side if xml_root.tag == 'message': message = dict(type='message', level='info', text='no message') for node in xml_root: option = node.tag.strip() # rename type to level, as type is used for the type # this is unfortunate if option == 'type': option = 'level' message[option] = node.text.strip() fields = [message] else: containers = get_field_containers(xml_root) if len(containers) == 0: return fields = get_fields(containers[0]) if self.params_widget is not None: self.layout().removeChild(self.params_widget) self.params_widget = FieldsWidget(fields, self) current_values = self.workflow.get_values_map() logging.debug('current values are: %s', current_values) self.params_widget.set_values(current_values) self.layout().addMultiCellWidget(self.params_widget, 1, 1, 0, 1, Qt.AlignBottom | Qt.AlignLeft) self.params_widget.show() self.ok_button.setEnabled(True)
def open_dialog(self, field_list, async_result): self._async_result = async_result # get special parameters parameters = [] info = None cplx = None for dd0 in field_list: if info is None and dd0.get("variableName") == "_info": # Info text - goes to info_gbox info = dd0 elif cplx is None and dd0.get("variableName") == "_cplx": # Complex parameter - goes to cplx_gbox cplx = dd0 else: parameters.append(dd0) # Info box if info is None: self.info_text.setText("") self.info_gbox.setTitle("Info") self.info_gbox.hide() else: self.info_text.setText(info.get("defaultValue")) self.info_gbox.setTitle(info.get("uiLabel")) self.info_gbox.show() # Complex box if self.cplx_widget: self.cplx_widget.close() if cplx is None: self.cplx_gbox.hide() else: if cplx.get("type") == "selection_table": self.cplx_widget = SelectionTable(self.cplx_gbox, "cplx_widget", cplx["header"]) self.cplx_gbox.setTitle(cplx.get("uiLabel")) for ii, values in enumerate(cplx["defaultValue"]): self.cplx_widget.populateColumn( ii, values, colours=cplx.get("colours")) self.cplx_gbox.show() else: raise NotImplementedError( "GPhL complex widget type %s not recognised for parameter _cplx" % repr(cplx.get("type"))) # parameters widget if self.params_widget is not None: self.params_widget.close() self.params_widget = None if parameters: self.params_widget = FieldsWidget(fields=parameters, parent=self.parameter_gbox) values = {} for dd0 in field_list: name = dd0["variableName"] value = dd0.get("defaultValue") if value is not None: dd0[name] = value self.params_widget.set_values(values) self.parameter_gbox.show() else: self.parameter_gbox.hide() self.show() self.setEnabled(True)
def open_dialog(self, field_list, async_result): self._async_result = async_result # get special parameters parameters = [] info = None cplx = None for dd in field_list: if info is None and dd.get('variableName') == '_info': # Info text - goes to info_gbox info = dd elif cplx is None and dd.get('variableName') == '_cplx': # Complex parameter - goes to cplx_gbox cplx = dd else: parameters.append(dd) # Info box if info is None: self.info_text.setText('') self.info_gbox.setTitle('Info') self.info_gbox.hide() else: self.info_text.setText(info.get('defaultValue')) self.info_gbox.setTitle(info.get('uiLabel')) self.info_gbox.show() # Complex box if self.cplx_widget: self.cplx_widget.close() if cplx is None: self.cplx_gbox.hide() else: if cplx.get('type') == 'selection_table': self.cplx_widget = SelectionTable(self.cplx_gbox, 'cplx_widget', cplx['header']) self.cplx_gbox.setTitle(cplx.get('uiLabel')) for ii, values in enumerate(cplx['defaultValue']): self.cplx_widget.populateColumn( ii, values, colours=cplx.get('colours')) self.cplx_gbox.show() else: raise NotImplementedError( "GPhL complex widget type %s not recognised for parameter _cplx" % repr(cplx.get('type'))) # parameters widget if self.params_widget is not None: self.params_widget.close() self.params_widget = None if parameters: self.params_widget = FieldsWidget(fields=parameters, parent=self.parameter_gbox) values = {} for dd in field_list: name = dd['variableName'] value = dd.get('defaultValue') if value is not None: dd[name] = value self.params_widget.set_values(values) self.parameter_gbox.show() else: self.parameter_gbox.hide() self.show() self.setEnabled(True)