class OntologyURIChecker(FeatureChecker): name = "Ontology URI" description = _("This table presents elements (package, schemas, annotation types) that do not have the ontology_uri reference metadata.") def build_widget(self): self.table = GenericTable(controller=self.controller) return self.table.widget def update_model(self, package=None): def check_element(el): return el.getMetaData(config.data.namespace, "ontology_uri") invalid = [] if not check_element(self.controller.package): invalid.append(self.controller.package) invalid.extend(el for el in self.controller.package.schemas if not check_element(el)) invalid.extend(el for el in self.controller.package.annotationTypes if not check_element(el)) self.table.set_elements(invalid)
def build_widget(self): v=Gtk.VBox() tb=Gtk.Toolbar() tb.set_style(Gtk.ToolbarStyle.ICONS) v.pack_start(tb, False, True, 0) top_box=Gtk.HBox() v.pack_start(top_box, False, True, 0) if hasattr(self.query, 'container') and self.query.container.id == '_interactive': b=Gtk.Button(_("Edit query again")) b.connect('clicked', self.edit_query) top_box.pack_start(b, False, True, 0) elif isinstance(self.query, SimpleQuery): b=Gtk.Button(_("Edit query")) b.connect('clicked', lambda b: self.controller.gui.edit_element(self.query)) top_box.pack_start(b, False, True, 0) elif isinstance(self.query, Quicksearch): e=Gtk.Entry() e.set_text(self.query.searched) e.set_width_chars(12) e.connect('activate', self.redo_quicksearch, e) b=get_small_stock_button(Gtk.STOCK_FIND, self.redo_quicksearch, e) e.set_tooltip_text(_('String to search')) b.set_tooltip_text(_('Search again')) top_box.pack_start(e, False, True, 0) top_box.pack_start(b, False, True, 0) # Present choices to display the result if not self.result: v.add(Gtk.Label(label=_("Empty result"))) elif (isinstance(self.result, list) or isinstance(self.result, tuple) or isinstance(self.result, AbstractBundle)): # Check if there are annotations l=[ a for a in self.result if isinstance(a, Annotation) ] cr=len(self.result) cl=len(l) if cr == cl: t=_("Result is a list of %d annotations.") % cr else: t=_("Result is a list of %(number)d elements with %(elements)s.") % { 'elements': helper.format_element_name("annotation", len(l)), 'number': len(self.result)} label=Gtk.Label(label=t) label.set_ellipsize(Pango.EllipsizeMode.END) label.set_line_wrap(True) top_box.add(label) def toggle_highlight(b, annotation_list): if not hasattr(b, 'highlight') or b.highlight: event="AnnotationActivate" label= _("Unhighlight annotations") b.highlight=False else: event="AnnotationDeactivate" label=_("Highlight annotations") b.highlight=True b.set_tooltip_text(label) for a in annotation_list: self.controller.notify(event, annotation=a) return True if l: # Instanciate a table view table=AnnotationTable(controller=self.controller, elements=l) if cr == cl: # Only annotations. v.add(table.widget) else: # Mixed annotations + other elements notebook=Gtk.Notebook() notebook.set_tab_pos(Gtk.PositionType.TOP) notebook.popup_disable() v.add(notebook) notebook.append_page(table.widget, Gtk.Label(label=_("Annotations"))) gtable=GenericTable(controller=self.controller, elements=[ e for e in self.result if not isinstance(e, Annotation) ] ) notebook.append_page(gtable.widget, Gtk.Label(label=_("Other elements"))) for (icon, tip, action) in ( ('timeline.png' , _("Display annotations in timeline"), lambda b: self.open_in_timeline(l)), ('transcription.png', _("Display annotations as transcription"), lambda b: self.controller.gui.open_adhoc_view('transcription', label=self._label, destination=self._destination, elements=l)), ('highlight.png', _("Highlight annotations"), lambda b: toggle_highlight(b, l)), (Gtk.STOCK_CONVERT, _("Export table"), lambda b: table.csv_export()), (Gtk.STOCK_NEW, _("Create annotations from the result"), self.create_annotations), ('montage.png', _("Define a montage with the result"), self.create_montage), ('comment.png', _("Create a comment view with the result"), self.create_comment), (Gtk.STOCK_FIND_AND_REPLACE, _("Search and replace strings in the annotations content"), self.search_replace), ): if icon.endswith('.png'): ti=get_pixmap_toolbutton(icon) else: ti=Gtk.ToolButton(stock_id=icon) ti.connect('clicked', action) ti.set_tooltip_text(tip) tb.insert(ti, -1) self.table=table else: # Only Instanciate a generic table view gtable=GenericTable(controller=self.controller, elements=self.result) v.add(gtable.widget) ti=Gtk.ToolButton(Gtk.STOCK_CONVERT) ti.connect('clicked', lambda b: gtable.csv_export()) ti.set_tooltip_text(_("Export table")) tb.insert(ti, -1) self.table=gtable ti=get_pixmap_toolbutton('editaccumulator.png', lambda b: self.open_in_edit_accumulator(self.table.get_elements())) ti.set_tooltip_text(_("Edit elements")) tb.insert(ti, -1) if config.data.preferences['expert-mode']: ti=get_pixmap_toolbutton('python.png', lambda b: self.open_in_evaluator(self.table.get_elements())) ti.set_tooltip_text(_("Open in python evaluator")) tb.insert(ti, -1) else: v.add(Gtk.Label(label=_("Result:\n%s") % str(self.result))) v.show_all() return v
def build_widget(self): self.table = GenericTable(controller=self.controller) return self.table.widget
def build_widget(self): v=Gtk.VBox() tb=Gtk.Toolbar() tb.set_style(Gtk.ToolbarStyle.ICONS) v.pack_start(tb, False, True, 0) top_box=Gtk.HBox() v.pack_start(top_box, False, True, 0) if hasattr(self.query, 'container') and self.query.container.id == '_interactive': b=Gtk.Button(_("Edit query again")) b.connect('clicked', self.edit_query) top_box.pack_start(b, False, True, 0) elif isinstance(self.query, SimpleQuery): b=Gtk.Button(_("Edit query")) b.connect('clicked', lambda b: self.controller.gui.edit_element(self.query)) top_box.pack_start(b, False, True, 0) elif isinstance(self.query, Quicksearch): e=Gtk.Entry() e.set_text(self.query.searched) e.set_width_chars(12) e.connect('activate', self.redo_quicksearch, e) b=get_small_stock_button(Gtk.STOCK_FIND, self.redo_quicksearch, e) e.set_tooltip_text(_('String to search')) b.set_tooltip_text(_('Search again')) top_box.pack_start(e, False, True, 0) top_box.pack_start(b, False, True, 0) # Present choices to display the result if not self.result: v.add(Gtk.Label(label=_("Empty result"))) elif isinstance(self.result, (list, tuple, AbstractBundle)): # Check if there are annotations l=[ a for a in self.result if isinstance(a, Annotation) ] cr=len(self.result) cl=len(l) if cr == cl: t=_("Result is a list of %d annotations.") % cr else: t=_("Result is a list of %(number)d elements with %(elements)s.") % { 'elements': helper.format_element_name("annotation", len(l)), 'number': len(self.result)} label=Gtk.Label(label=t) label.set_ellipsize(Pango.EllipsizeMode.END) label.set_line_wrap(True) top_box.add(label) def toggle_highlight(b, annotation_list): if not hasattr(b, 'highlight') or b.highlight: event="AnnotationActivate" label= _("Unhighlight annotations") b.highlight=False else: event="AnnotationDeactivate" label=_("Highlight annotations") b.highlight=True b.set_tooltip_text(label) for a in annotation_list: self.controller.notify(event, annotation=a) return True if l: # Instanciate a table view table=AnnotationTable(controller=self.controller, elements=l) if cr == cl: # Only annotations. v.add(table.widget) else: # Mixed annotations + other elements notebook=Gtk.Notebook() notebook.set_tab_pos(Gtk.PositionType.TOP) notebook.popup_disable() v.add(notebook) notebook.append_page(table.widget, Gtk.Label(label=_("Annotations"))) gtable=GenericTable(controller=self.controller, elements=[ e for e in self.result if not isinstance(e, Annotation) ]) notebook.append_page(gtable.widget, Gtk.Label(label=_("Other elements"))) for (icon, tip, action) in ( ('timeline.png' , _("Display annotations in timeline"), lambda b: self.open_in_timeline(l)), ('transcription.png', _("Display annotations as transcription"), lambda b: self.controller.gui.open_adhoc_view('transcription', label=self._label, destination=self._destination, elements=l)), ('highlight.png', _("Highlight annotations"), lambda b: toggle_highlight(b, l)), (Gtk.STOCK_CONVERT, _("Export table"), lambda b: table.csv_export()), (Gtk.STOCK_NEW, _("Create annotations from the result"), self.create_annotations), ('montage.png', _("Define a montage with the result"), self.create_montage), ('comment.png', _("Create a comment view with the result"), self.create_comment), (Gtk.STOCK_FIND_AND_REPLACE, _("Search and replace strings in the annotations content"), self.search_replace), ): if icon.endswith('.png'): ti=get_pixmap_toolbutton(icon) else: ti=Gtk.ToolButton(stock_id=icon) ti.connect('clicked', action) ti.set_tooltip_text(tip) tb.insert(ti, -1) self.table=table else: # Only Instanciate a generic table view gtable=GenericTable(controller=self.controller, elements=self.result) v.add(gtable.widget) ti=Gtk.ToolButton(Gtk.STOCK_CONVERT) ti.connect('clicked', lambda b: gtable.csv_export()) ti.set_tooltip_text(_("Export table")) tb.insert(ti, -1) self.table=gtable ti=get_pixmap_toolbutton('editaccumulator.png', lambda b: self.open_in_edit_accumulator(self.table.get_elements())) ti.set_tooltip_text(_("Edit elements")) tb.insert(ti, -1) if config.data.preferences['expert-mode']: ti=get_pixmap_toolbutton('python.png', lambda b: self.open_in_evaluator(self.table.get_elements())) ti.set_tooltip_text(_("Open in python evaluator")) tb.insert(ti, -1) else: v.add(Gtk.Label(label=_("Result:\n%s") % str(self.result))) v.show_all() return v