import uno
class Office:
'''Frequently used methods in office context'''
def __init__(self, ctx=uno.getComponentContext()):
self.ctx = ctx
self.smgr = self.ctx.ServiceManager
def createUnoService(self, service):
return self.smgr.createInstance(service)
def getDesktop(self):
return self.smgr.createInstanceWithContext("com.sun.star.frame.Desktop",self.ctx)
def getCurrentComponent(self):
return self.getDesktop().getCurrentComponent()
def getCurrentFrame(self):
return self.getDesktop().getCurrentFrame()
def getCurrentComponentWindow(self):
return self.getCurrentFrame().getComponentWindow()
def getCurrentContainerWindow(self):
return self.getCurrentFrame().getContainerWindow()
def getCurrentController(self):
return self.getCurrentFrame().getController()
def callMRI(self,obj=None):
if not obj:
obj = self.getCurrentController().getSelection()
mri = self.createUnoService("mytools.Mri")
mri.inspect(obj)
def getLocaleString(oL):
s = '-'
a = [oL.Language]
if oL.Country:a.append(oL.Country)
if oL.Variant:a.append(oL.Variant)
return s.join(a)
def printAllLocalesToNewSpreadSheet():
office = Office()
StarDesktop = office.getDesktop()
oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc","_default",0,tuple())
oNF = oDoc.getNumberFormats()
oSheet = oDoc.getSheets().getByIndex(0)
i18n = office.createUnoService("com.sun.star.i18n.LocaleData")
a = i18n.getAllInstalledLocaleNames()
cCols = 7
r = list()
r.append(("Locale","Language","Country","Decimal","Date","Time","1000","List"))
for i in a:
oInfo = i18n.getLanguageCountryInfo(i)
oItem = i18n.getLocaleItem(i)
b = (
getLocaleString(i),
oInfo.LanguageDefaultName,
oInfo.CountryDefaultName,
oItem.decimalSeparator,
oItem.dateSeparator,
oItem.timeSeparator,
oItem.thousandSeparator,
oItem.listSeparator
)
r.append(b)
rc = len(r)
nf = oNF.getStandardIndex(i)
oSheet.getCellRangeByPosition(0, rc-1, 255, rc-1).NumberFormat = nf
oSheet.getCellRangeByPosition(0, 0, cCols, rc-1).setDataArray(tuple(r))
g_exportedScripts = (printAllLocalesToNewSpreadSheet,)