示例#1
0
    def load_layout(self, layout_filename, color_scheme_filename):
        _logger.info("Loading keyboard layout from " + layout_filename)
        if (color_scheme_filename):
            _logger.info("Loading color scheme from " + color_scheme_filename)
        if self.keyboard:
            self.keyboard.cleanup()

        # Fix for LP: #897678, onBoard shifts after changing Language Layout
        # The idea is to no longer recreate the keyboard widget and
        # instead just update its contents. This solves a couple of
        # weird positioning bugs when the keyboard widget changes while
        # the main window is hidden.
        # This is messy but works for now. Trunk will have to replace
        # KeyboardSVG with proper widget-independent loading code.
        vk = self.get_vk()
        keyboard = KeyboardSVG(vk, layout_filename,
                                    color_scheme_filename)
        if not self.keyboard:
            self.keyboard = keyboard
        layout, color_scheme = keyboard.layout, keyboard.color_scheme
        keyboard.cleanup()

        if self.keyboard and keyboard:
            self.keyboard.vk = vk
            self.keyboard.layout = layout
            self.keyboard.color_scheme = color_scheme
            self.keyboard.initial_update()
            self.keyboard.update_ui()
            self.keyboard.redraw()

            if self._window and self._window.icp:
                self._window.icp.queue_draw()