| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import uno
- import unohelper
- import lightproof_opts_en
- from lightproof_impl_en import pkg
- from com.sun.star.lang import XServiceInfo
- from com.sun.star.awt import XContainerWindowEventHandler
- # options
- options = {}
- def load(context):
- try:
- l = LightproofOptionsEventHandler(context)
- for i in lightproof_opts_en.lopts:
- l.load(i)
- except:
- pass
- def get_option(page, option):
- try:
- return options[page + "," + option]
- except:
- try:
- return options[page[:2] + "," + option]
- except:
- return 0
- def set_option(page, option, value):
- options[page + "," + option] = int(value)
- class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWindowEventHandler ):
- def __init__( self, ctx ):
- p = uno.createUnoStruct( "com.sun.star.beans.PropertyValue" )
- p.Name = "nodepath"
- p.Value = "/org.openoffice.Lightproof_%s/Leaves"%pkg
- self.xConfig = ctx.ServiceManager.createInstance( 'com.sun.star.configuration.ConfigurationProvider' )
- self.node = self.xConfig.createInstanceWithArguments( 'com.sun.star.configuration.ConfigurationUpdateAccess', (p, ) )
- self.service = "org.libreoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg
- self.ImplementationName = self.service
- self.services = (self.service, )
- # XContainerWindowEventHandler
- def callHandlerMethod(self, aWindow, aEventObject, sMethod):
- if sMethod == "external_event":
- return self.handleExternalEvent(aWindow, aEventObject)
- def getSupportedMethodNames(self):
- return ("external_event", )
- def handleExternalEvent(self, aWindow, aEventObject):
- sMethod = aEventObject
- if sMethod == "ok":
- self.saveData(aWindow)
- elif sMethod == "back" or sMethod == "initialize":
- self.loadData(aWindow)
- return True
- def load(self, sWindowName):
- child = self.getChild(sWindowName)
- for i in lightproof_opts_en.lopts[sWindowName]:
- sValue = child.getPropertyValue(i)
- if sValue == '':
- if i in lightproof_opts_en.lopts_default[sWindowName]:
- sValue = 1
- else:
- sValue = 0
- set_option(sWindowName, i, sValue)
- def loadData(self, aWindow):
- sWindowName = self.getWindowName(aWindow)
- if (sWindowName == None):
- return
- child = self.getChild(sWindowName)
- for i in lightproof_opts_en.lopts[sWindowName]:
- sValue = child.getPropertyValue(i)
- if sValue == '':
- if i in lightproof_opts_en.lopts_default[sWindowName]:
- sValue = 1
- else:
- sValue = 0
- xControl = aWindow.getControl(i)
- xControl.State = sValue
- set_option(sWindowName, i, sValue)
- def saveData(self, aWindow):
- sWindowName = self.getWindowName(aWindow)
- if (sWindowName == None):
- return
- child = self.getChild(sWindowName)
- for i in lightproof_opts_en.lopts[sWindowName]:
- xControl = aWindow.getControl(i)
- sValue = xControl.State
- child.setPropertyValue(i, str(sValue))
- set_option(sWindowName, i, sValue)
- self.commitChanges()
- def getWindowName(self, aWindow):
- sName = aWindow.getModel().Name
- if sName in lightproof_opts_en.lopts:
- return sName
- return None
- # XServiceInfo method implementations
- def getImplementationName (self):
- return self.ImplementationName
- def supportsService(self, ServiceName):
- return (ServiceName in self.services)
- def getSupportedServiceNames (self):
- return self.services
- def getChild(self, name):
- return self.node.getByName(name)
- def commitChanges(self):
- self.node.commitChanges()
- return True
|