Kaydet (Commit) b88aeb62 authored tarafından Javier Fernandez's avatar Javier Fernandez

PyWebWizard: Fixing bugs and implementation of mising features.

The wizard dialog has now support for HighContrast images.

Change-Id: Ic7990d162e11484aad973abb78de3d240bd67a0e
üst b11afacf
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
# except in compliance with the License. You may obtain a copy of # except in compliance with the License. You may obtain a copy of
# the License at http://www.apache.org/licenses/LICENSE-2.0 . # the License at http://www.apache.org/licenses/LICENSE-2.0 .
# #
import traceback
from .event.CommonListener import WindowListenerProcAdapter from .event.CommonListener import WindowListenerProcAdapter
''' '''
...@@ -52,13 +54,13 @@ class PeerConfig(object): ...@@ -52,13 +54,13 @@ class PeerConfig(object):
xVclWindowPeer = i.xControl.Peer xVclWindowPeer = i.xControl.Peer
xVclWindowPeer.setProperty(i.propnames, i.propvalues) xVclWindowPeer.setProperty(i.propnames, i.propvalues)
for i in self.aImageUrlTasks: for aImageUrlTask in self.aImageUrlTasks:
if isinstance(aImageUrlTask.oResource, int): if isinstance(aImageUrlTask.oResource, int):
sImageUrl = oUnoDialog.getWizardImageUrl(aImageUrlTask.oResource, aImageUrlTask.oHCResource) sImageUrl = self.oUnoDialog.getWizardImageUrl(aImageUrlTask.oResource, aImageUrlTask.oHCResource)
elif isinstance(aImageUrlTask.oResource, str): elif isinstance(aImageUrlTask.oResource, str):
sImageUrl = oUnoDialog.getImageUrl(aImageUrlTask.oResource, aImageUrlTask.oHCResource) sImageUrl = self.oUnoDialog.getImageUrl(aImageUrlTask.oResource, aImageUrlTask.oHCResource)
if sImageUrl != "": if sImageUrl != "":
Helper.setUnoPropertyValue(aImageUrlTask.oModel, PropertyNames.PROPERTY_IMAGEURL, sImageUrl) aImageUrlTask.oModel.ImageURL = sImageUrl
except Exception: except Exception:
traceback.print_exc() traceback.print_exc()
......
...@@ -28,6 +28,8 @@ class UnoDialog(object): ...@@ -28,6 +28,8 @@ class UnoDialog(object):
createDict = False createDict = False
dictProperties = None dictProperties = None
BisHighContrastModeActivated = None
xVclWindowPeer = None
def __init__(self, xMSF, PropertyNames, PropertyValues): def __init__(self, xMSF, PropertyNames, PropertyValues):
try: try:
...@@ -125,8 +127,7 @@ class UnoDialog(object): ...@@ -125,8 +127,7 @@ class UnoDialog(object):
except Exception: except Exception:
traceback.print_exc() traceback.print_exc()
def insertControlModel( def insertControlModel(self, serviceName, componentName, sPropNames, oPropValues):
self, serviceName, componentName, sPropNames, oPropValues):
try: try:
xControlModel = self.xDialogModel.createInstance(serviceName) xControlModel = self.xDialogModel.createInstance(serviceName)
uno.invoke(xControlModel, "setPropertyValues", uno.invoke(xControlModel, "setPropertyValues",
...@@ -188,11 +189,14 @@ class UnoDialog(object): ...@@ -188,11 +189,14 @@ class UnoDialog(object):
if self.xWindowPeer is None: if self.xWindowPeer is None:
self.createWindowPeer() self.createWindowPeer()
self.xVclWindowPeer = self.xWindowPeer
self.BisHighContrastModeActivated = self.isHighContrastModeActivated()
return self.xUnoDialog.execute() return self.xUnoDialog.execute()
def setVisible(self, parent): def setVisible(self, parent):
self.calculateDialogPosition(parent.xWindow.getPosSize()) self.calculateDialogPosition(parent.xUnoDialog.getPosSize())
if self.xWindowPeer is None: if self.xWindowPeer == None:
self.createWindowPeer() self.createWindowPeer()
self.xUnoDialog.setVisible(True) self.xUnoDialog.setVisible(True)
...@@ -257,6 +261,14 @@ class UnoDialog(object): ...@@ -257,6 +261,14 @@ class UnoDialog(object):
setControlProperty(ListBoxName, "SelectedItems", [SelPos]) setControlProperty(ListBoxName, "SelectedItems", [SelPos])
xListBox.selectItemPos((short)(SelPos - 1), True) xListBox.selectItemPos((short)(SelPos - 1), True)
@classmethod
def setEnabled(self, control, enabled):
control.Model.Enabled = enabled
@classmethod
def getModel(self, control):
return control.getModel()
@classmethod @classmethod
def getDisplayProperty(self, xServiceInfo): def getDisplayProperty(self, xServiceInfo):
if xServiceInfo.supportsService( if xServiceInfo.supportsService(
...@@ -312,3 +324,61 @@ class UnoDialog(object): ...@@ -312,3 +324,61 @@ class UnoDialog(object):
def addResourceHandler(self, _Unit, _Module): def addResourceHandler(self, _Unit, _Module):
self.m_oResource = Resource(self.xMSF, _Unit, _Module) self.m_oResource = Resource(self.xMSF, _Unit, _Module)
def isHighContrastModeActivated(self):
if (self.xVclWindowPeer is not None):
if (self.BisHighContrastModeActivated is None):
nUIColor = 0
try:
nUIColor = self.xVclWindowPeer.getProperty("DisplayBackgroundColor")
except IllegalArgumentException:
traceback.print_exc()
return False
# TODO: The following methods could be wrapped in an own class implementation
nRed = self.getRedColorShare(nUIColor)
nGreen = self.getGreenColorShare(nUIColor)
nBlue = self.getBlueColorShare(nUIColor)
nLuminance = ((nBlue * 28 + nGreen * 151 + nRed * 77) / 256)
bisactivated = (nLuminance <= 25)
self.BisHighContrastModeActivated = bool(bisactivated)
return bisactivated;
else:
return self.BisHighContrastModeActivated
else:
return False
def getRedColorShare(self, _nColor):
nRed = _nColor / 65536
nRedModulo = _nColor % 65536
nGreen = nRedModulo / 256
nGreenModulo = (nRedModulo % 256)
nBlue = nGreenModulo
return nRed
def getGreenColorShare(self, _nColor):
nRed = _nColor / 65536
nRedModulo = _nColor % 65536
nGreen = nRedModulo / 256
return nGreen
def getBlueColorShare(self, _nColor):
nRed = _nColor / 65536
nRedModulo = _nColor % 65536
nGreen = nRedModulo / 256
nGreenModulo = (nRedModulo % 256)
nBlue = nGreenModulo
return nBlue
def getWizardImageUrl(self, _nResId, _nHCResId):
if (self.isHighContrastModeActivated()):
return "private:resource/wzi/image/" + str(_nHCResId)
else:
return "private:resource/wzi/image/" + str(_nResId)
def getImageUrl(self, _surl, _shcurl):
if (self.isHighContrastModeActivated()):
return _shcurl
else:
return _surl
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment