Beispiel #1
0
        def pickColorAsync(self,
                           callback,
                           startingcolor,
                           startingalpha,
                           screenX=None,
                           screenY=None):
            from wnd.dlgs.choosecolor import ChooseColor
            global colorDialog
            global customColors

            def _adjustWindow(hwnd, msg, wp, lp):
                #log.debug("pos = (%d, %d)", pos[0], pos[1])
                colorDialog.SetWindowPos(screenX, screenY)

            if not callback or not hasattr(callback, "handleResult"):
                raise COMException(
                    nsError.NS_ERROR_INVALID_ARG,
                    "pickColorAsync got invalid callback %r" % (callback, ))
            if screenX is not None and screenY is None:
                raise COMException(
                    nsError.NS_ERROR_INVALID_ARG,
                    "pickColorAsync: can't have screenX without screenY")

            # parse the starting colors
            try:
                startingcolor = startingcolor.lstrip("#")
                colors = [
                    int(startingcolor[x:x + 2], 16) for x in range(0, 6, 2)
                ]
            except Exception:
                raise COMException(
                    nsError.NS_ERROR_INVALID_ARG,
                    "pickColorAsync: invalid starting color %r" %
                    (startingcolor, ))

            if colorDialog is None:
                colorDialog = ChooseColor()
            bgr = colors[2] * 2**16 + colors[1] * 2**8 + colors[0]
            #log.debug("bgr in: %r -> %x (%r)", colors, bgr, bgr)
            if screenX or screenY:
                colorDialog.onINIT = _adjustWindow
            res = colorDialog.Run(None,
                                  'fullopen',
                                  'hook',
                                  customcolors=customColors,
                                  initcolor=bgr)
            if res is not None:
                b, g, r = [(res & (2**x - 1)) >> (x - 8)
                           for x in range(24, 0, -8)]
                #log.debug("bgr out: %r -> %x (%r)", [r,g,b], res, res)
                for i, x in enumerate(colorDialog._dlgs_colors):
                    customColors[i] = int(x)
                callback.handleResult("#%02x%02x%02x" % (r, g, b),
                                      startingalpha)
            else:
                callback.handleResult(None, startingalpha)
Beispiel #2
0
 def pickColorWithPositioning(self, startingcolor, screenX, screenY):
     from wnd.dlgs.choosecolor import ChooseColor
     global colorDialog
     global customColors
     
     if colorDialog is None:
         colorDialog = ChooseColor()
     r,g,b = startingcolor[1:3], startingcolor[3:5], startingcolor[5:]
     bgr = int(b+g+r, 16)
     #log.debug("bgr in = %x (%r)", bgr, bgr)
     colorDialog.onINIT = _adjustWindow
     res = colorDialog.Run(None, 'fullopen', 'hook',
                           customcolors=customColors, initcolor=bgr)
     if res is not None:
         bgr = "%06x" % res
         #log.debug("bgr out = %r", bgr)
         b,g,r = bgr[:2], bgr[2:4], bgr[4:]
         for i, x in enumerate(colorDialog._dlgs_colors):
             customColors[i] = int(x)
         return '#'+r+g+b
Beispiel #3
0
        def pickColorWithPositioning(self, startingcolor, screenX, screenY):
            from wnd.dlgs.choosecolor import ChooseColor
            global colorDialog
            global customColors

            if colorDialog is None:
                colorDialog = ChooseColor()
            r, g, b = startingcolor[1:3], startingcolor[3:5], startingcolor[5:]
            bgr = int(b + g + r, 16)
            #log.debug("bgr in = %x (%r)", bgr, bgr)
            colorDialog.onINIT = _adjustWindow
            res = colorDialog.Run(None,
                                  'fullopen',
                                  'hook',
                                  customcolors=customColors,
                                  initcolor=bgr)
            if res is not None:
                bgr = "%06x" % res
                #log.debug("bgr out = %r", bgr)
                b, g, r = bgr[:2], bgr[2:4], bgr[4:]
                for i, x in enumerate(colorDialog._dlgs_colors):
                    customColors[i] = int(x)
                return '#' + r + g + b
Beispiel #4
0
        def pickColorAsync(self, callback, startingcolor, startingalpha, screenX=None, screenY=None):
            from wnd.dlgs.choosecolor import ChooseColor
            global colorDialog
            global customColors

            def _adjustWindow(hwnd, msg, wp, lp):
                #log.debug("pos = (%d, %d)", pos[0], pos[1])
                colorDialog.SetWindowPos(screenX, screenY)

            if not callback or not hasattr(callback, "handleResult"):
                raise COMException(nsError.NS_ERROR_INVALID_ARG,
                                   "pickColorAsync got invalid callback %r" % (callback,))

            # parse the starting colors
            try:
                startingcolor = startingcolor.lstrip("#")
                colors = [int(startingcolor[x:x+2], 16) for x in range(0, 6, 2)]
            except Exception:
                raise COMException(nsError.NS_ERROR_INVALID_ARG,
                                   "pickColorAsync: invalid starting color %r" % (startingcolor,))

            if colorDialog is None:
                colorDialog = ChooseColor()
            bgr = colors[2] * 2**16 + colors[1] * 2**8 + colors[0]
            #log.debug("bgr in: %r -> %x (%r)", colors, bgr, bgr)
            if screenX or screenY:
                colorDialog.onINIT = _adjustWindow
            res = colorDialog.Run(None, 'fullopen', 'hook',
                                  customcolors=customColors, initcolor=bgr)
            if res is not None:
                b, g, r = [(res & (2**x-1)) >> (x - 8) for x in range(24, 0, -8)]
                #log.debug("bgr out: %r -> %x (%r)", [r,g,b], res, res)
                for i, x in enumerate(colorDialog._dlgs_colors):
                    customColors[i] = int(x)
                callback.handleResult("#%02x%02x%02x" % (r, g, b), startingalpha)
            else:
                callback.handleResult(None, startingalpha)