def DoLayout(self): """Visually display input note according to user defined labels. """ # configure keywords for soap_cat in progress_note_keywords.keys(): category = progress_note_keywords[soap_cat] for kwd in category.keys(): category[kwd]['widget_data_sink'] = self.__embedded_data_holder.store_data input_fields = [] # add fields to edit widget # note: this may produce identically labelled lines for line_def in self.__input_defs: input_field = gmResizingWidgets.cResizingSTC(self, -1, data = line_def) input_field.SetText(line_def.text) kwds = progress_note_keywords[line_def.soap_cat] input_field.set_keywords(popup_keywords=kwds) # FIXME: pending matcher setup self.AddWidget(widget=input_field, label=line_def.label) self.Newline() input_fields.append(input_field) # setup tab navigation between input fields for field_idx in range(len(input_fields)): # previous try: input_fields[field_idx].prev_in_tab_order = input_fields[field_idx-1] except IndexError: input_fields[field_idx].prev_in_tab_order = None # next try: input_fields[field_idx].next_in_tab_order = input_fields[field_idx+1] except IndexError: input_fields[field_idx].next_in_tab_order = None