def get_style(self, family, name_or_element=None, display_name=None): """Return the style uniquely identified by the name/family pair. If the argument is already a style object, it will return it. If the name is not the internal name but the name you gave in the desktop application, use display_name instead. Arguments: family -- 'paragraph', 'text', 'graphic', 'table', 'list', 'number' name_or_element -- unicode or odf_style display_name -- unicode Return: odf_style or None if not found """ from style import odf_style if isinstance(name_or_element, odf_style): return name_or_element style_name = name_or_element is_default = not (style_name or display_name) tagname, famattr = self._get_style_tagname(family, is_default=is_default) # famattr became None if no "style:family" attribute return _get_element(self, tagname, style_name=style_name, display_name=display_name, family=famattr)
def get_change_element(self): """Get the change element child. It can be either: <text:insertion>, <text:deletion>, or <text:format-change> as an odf_element object. Return: odf_element. """ request = ('descendant::text:insertion ' '| descendant::text:deletion' '| descendant::text:format-change') return _get_element(self, request, position=0)
def get_item(self, position=0, content=None): """Return the list item that matches the criteria. In nested lists, return the list item that really contains that content. Arguments: position -- int content -- unicode regex Return: odf_element or None if not found """ # Custom implementation because of nested lists if content: # Don't search recursively but on the very own paragraph(s) of # each list item for paragraph in self.get_elements('descendant::text:p'): if paragraph.match(content): return paragraph.get_element('parent::text:list-item') return None return _get_element(self, 'text:list-item', position)
def get_span_by_position(self, position): return _get_element(self, 'descendant::text:span', position=position)
def get_master_page(self, position=0): return _get_element(self, 'descendant::style:master-page', position)
def get_frame_by_title(self, regex): return _get_element(self, 'descendant::draw:frame', svg_title=regex)
def get_frame_by_position(self, position): return _get_element(self, 'descendant::draw:frame', position=position)
def get_list_by_content(self, regex): return _get_element(self, 'descendant::text:list', regex=regex)
def get_heading_by_content(self, regex, level=None): return _get_element(self, 'descendant::text:h', regex=regex, outline_level=level)
def get_draw_rectangle_by_content(self, regex): return _get_element(self, 'descendant::draw:rect', regex=regex)
def get_draw_line_by_content(self, regex): return _get_element(self, 'descendant::draw:line', regex=regex)
def get_reference_mark_end_by_name(self, name): return _get_element(self, 'descendant::text:reference-mark-end', text_name=name)
def get_bookmark_end_by_name(self, name): return _get_element(self, 'descendant::text:bookmark-end', text_name=name)
def get_link_by_path(self, regex): return _get_element(self, 'descendant::text:a', href=regex)
def get_link_by_name(self, name): return _get_element(self, 'descendant::text:a', office_name=name)
def get_draw_page_by_position(self, position): return _get_element(self, 'descendant::draw:page', position=position)
def get_span_by_content(self, regex): return _get_element(self, 'descendant::text:span', regex=regex)
def get_heading_by_position(self, position, level=None): return _get_element(self, 'descendant::text:h', position=position, outline_level=level)
def get_draw_ellipse_by_content(self, regex): return _get_element(self, 'descendant::draw:ellipse', regex=regex)
def get_list_by_position(self, position): return _get_element(self, 'descendant::text:list', position=position)
def get_draw_connector_by_content(self, regex): return _get_element(self, 'descendant::draw:connector', regex=regex)
def get_frame_by_name(self, name): return _get_element(self, 'descendant::draw:frame', draw_name=name)
def get_toc(self): return _get_element(self, 'text:table-of-content')
def get_frame_by_content(self, regex): return _get_element(self, 'descendant::draw:frame', regex=regex)
def get_image_by_name(self, name): # The frame is holding the name frame = _get_element(self, 'descendant::draw:frame', draw_name=name) if frame is None: return None return frame.get_element('draw:image')
def get_frame_by_description(self, regex): return _get_element(self, 'descendant::draw:frame', svg_desc=regex)
def get_level_style(self, level): return _get_element(self, self.any_style, 0, level=level)
def get_changed_region(self, position=0, text_id=None, creator=None, date=None, content=None): return _get_element(self, 'text:changed-region', position, text_id=text_id, dc_creator=creator, dc_date=date, content=content)
def get_paragraph_by_position(self, position): return _get_element(self, 'descendant::text:p', position=position)
def get_paragraph_by_content(self, regex): return _get_element(self, 'descendant::text:p', regex=regex)