Add support for search and replace
This commit is contained in:
parent
e8dc0c8e99
commit
264dce2449
|
@ -41,12 +41,13 @@ import time
|
|||
import traceback
|
||||
import zipfile
|
||||
|
||||
from collections import OrderedDict
|
||||
from collections.abc import MutableMapping
|
||||
# ~ from collections import OrderedDict
|
||||
# ~ from collections.abc import MutableMapping
|
||||
from functools import wraps
|
||||
from operator import itemgetter
|
||||
from pathlib import Path, PurePath
|
||||
from pprint import pprint
|
||||
from enum import IntEnum
|
||||
from urllib.request import Request, urlopen
|
||||
from urllib.error import URLError, HTTPError
|
||||
from string import Template
|
||||
|
@ -91,6 +92,13 @@ from com.sun.star.awt import XKeyListener
|
|||
from com.sun.star.awt import XItemListener
|
||||
from com.sun.star.awt import XFocusListener
|
||||
|
||||
class FontSlant(IntEnum):
|
||||
NONE = 0
|
||||
OBLIQUE = 1
|
||||
ITALIC = 2
|
||||
DONTKNOW = 3
|
||||
REVERSE_OBLIQUE = 4
|
||||
REVERSE_ITALIC = 5
|
||||
|
||||
try:
|
||||
from fernet import Fernet, InvalidToken
|
||||
|
@ -336,18 +344,17 @@ def run_in_thread(fn):
|
|||
return run
|
||||
|
||||
|
||||
def now():
|
||||
return datetime.datetime.now()
|
||||
def now(only_time=False):
|
||||
now = datetime.datetime.now()
|
||||
if only_time:
|
||||
return now.time()
|
||||
return now
|
||||
|
||||
|
||||
def today():
|
||||
return datetime.date.today()
|
||||
|
||||
|
||||
def time():
|
||||
return datetime.datetime.now().time()
|
||||
|
||||
|
||||
def get_date(year, month, day, hour=-1, minute=-1, second=-1):
|
||||
if hour > -1 or minute > -1 or second > -1:
|
||||
h = hour
|
||||
|
@ -600,9 +607,6 @@ class LODocument(object):
|
|||
|
||||
def _init_values(self):
|
||||
self._type_doc = get_type_doc(self.obj)
|
||||
# ~ if self._type_doc == 'base':
|
||||
# ~ self._cc = self.obj.DatabaseDocument.getCurrentController()
|
||||
# ~ else:
|
||||
self._cc = self.obj.getCurrentController()
|
||||
return
|
||||
|
||||
|
@ -1364,6 +1368,42 @@ class LOWriter(LODocument):
|
|||
self._cc.select(text)
|
||||
return
|
||||
|
||||
def search(self, options):
|
||||
descriptor = self.obj.createSearchDescriptor()
|
||||
descriptor.setSearchString(options.get('Search', ''))
|
||||
descriptor.SearchCaseSensitive = options.get('CaseSensitive', False)
|
||||
descriptor.SearchWords = options.get('Words', False)
|
||||
if 'Attributes' in options:
|
||||
attr = dict_to_property(options['Attributes'])
|
||||
descriptor.setSearchAttributes(attr)
|
||||
if hasattr(descriptor, 'SearchRegularExpression'):
|
||||
descriptor.SearchRegularExpression = options.get('RegularExpression', False)
|
||||
if hasattr(descriptor, 'SearchType') and 'Type' in options:
|
||||
descriptor.SearchType = options['Type']
|
||||
|
||||
if options.get('First', False):
|
||||
found = self.obj.findFirst(descriptor)
|
||||
else:
|
||||
found = self.obj.findAll(descriptor)
|
||||
|
||||
return found
|
||||
|
||||
def replace(self, options):
|
||||
descriptor = self.obj.createReplaceDescriptor()
|
||||
descriptor.setSearchString(options['Search'])
|
||||
descriptor.setReplaceString(options['Replace'])
|
||||
descriptor.SearchCaseSensitive = options.get('CaseSensitive', False)
|
||||
descriptor.SearchWords = options.get('Words', False)
|
||||
if 'Attributes' in options:
|
||||
attr = dict_to_property(options['Attributes'])
|
||||
descriptor.setSearchAttributes(attr)
|
||||
if hasattr(descriptor, 'SearchRegularExpression'):
|
||||
descriptor.SearchRegularExpression = options.get('RegularExpression', False)
|
||||
if hasattr(descriptor, 'SearchType') and 'Type' in options:
|
||||
descriptor.SearchType = options['Type']
|
||||
found = self.obj.replaceAll(descriptor)
|
||||
return found
|
||||
|
||||
|
||||
class LOTextRange(object):
|
||||
|
||||
|
@ -1908,6 +1948,36 @@ class LOCellRange(object):
|
|||
chart.cell = self
|
||||
return chart
|
||||
|
||||
def search(self, options):
|
||||
descriptor = self.obj.Spreadsheet.createSearchDescriptor()
|
||||
descriptor.setSearchString(options.get('Search', ''))
|
||||
descriptor.SearchCaseSensitive = options.get('CaseSensitive', False)
|
||||
descriptor.SearchWords = options.get('Words', False)
|
||||
if hasattr(descriptor, 'SearchRegularExpression'):
|
||||
descriptor.SearchRegularExpression = options.get('RegularExpression', False)
|
||||
if hasattr(descriptor, 'SearchType') and 'Type' in options:
|
||||
descriptor.SearchType = options['Type']
|
||||
|
||||
if options.get('First', False):
|
||||
found = self.obj.findFirst(descriptor)
|
||||
else:
|
||||
found = self.obj.findAll(descriptor)
|
||||
|
||||
return found
|
||||
|
||||
def replace(self, options):
|
||||
descriptor = self.obj.Spreadsheet.createReplaceDescriptor()
|
||||
descriptor.setSearchString(options['Search'])
|
||||
descriptor.setReplaceString(options['Replace'])
|
||||
descriptor.SearchCaseSensitive = options.get('CaseSensitive', False)
|
||||
descriptor.SearchWords = options.get('Words', False)
|
||||
if hasattr(descriptor, 'SearchRegularExpression'):
|
||||
descriptor.SearchRegularExpression = options.get('RegularExpression', False)
|
||||
if hasattr(descriptor, 'SearchType') and 'Type' in options:
|
||||
descriptor.SearchType = options['Type']
|
||||
found = self.obj.replaceAll(descriptor)
|
||||
return found
|
||||
|
||||
|
||||
class EventsListenerBase(unohelper.Base, XEventListener):
|
||||
|
||||
|
@ -3576,7 +3646,7 @@ def get_document(title=''):
|
|||
return doc
|
||||
|
||||
for d in desktop.getComponents():
|
||||
if d.Title == title:
|
||||
if hasattr(d, 'Title') and d.Title == title:
|
||||
doc = d
|
||||
break
|
||||
|
||||
|
@ -3967,6 +4037,7 @@ def url_open(url, options={}, json=False):
|
|||
req = Request(url)
|
||||
try:
|
||||
response = urlopen(req)
|
||||
# ~ response.info()
|
||||
except HTTPError as e:
|
||||
error(e)
|
||||
except URLError as e:
|
||||
|
|
Loading…
Reference in New Issue