class _testGL_Surface_Impl(base_impl._Base_Surface_Impl):

    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_Surface_Impl.__init__()', self)
        self._surface_native = zPictureBox.PictureBox()
    
    def get_native_surface(self):
        return self._surface_native       
        
    def set_size(self, Width, Height):  
        self._surface_native.SetSize(Width, Height)
        
    def set_location(self, x, y, z):
        self._surface_native.SetLocation( x, y, z)
    
    def set_back_color(self, Red, Green, Blue):
        self._surface_native.SetBackColor(Red, Green, Blue)
        
    def set_alpha_level(self, level):
        self._surface_native.SetAlpha(level*2.55)
        
    def hide(self):
        self._logger.debug('_testGL_Surface_Impl.hide()', self)
        self._surface_native.Hide()

    def show(self):
        self._surface_native.Show()
        
    def set_background_from_buffer(self, buffer, width, height, flip = False):
        self._surface_native.SetBackgroundImageFromBuffer(buffer, width, height, Flip=flip)

    def set_texture(self, impl_texture):
        self._surface_native.SetTexture(impl_texture.get_native_surface())
class _testGL_Window_Impl(base_impl._Base_Window_Impl):
    """
    windows binding class for testGL renderEngine
    """
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_Window_Impl.__init__()', self)
        self._window_native = zForm.Form()
        self._window_native.FpsEnable = False

    def refresh(self):
        self._window_native.Refresh()

    def set_back_color(self, Red, Green, Blue):
        self._window_native.SetBackColor(Red, Green, Blue)

    def set_texture(self, impl_texture):
        self._window_native.SetTexture(impl_texture.get_native_surface())

    def set_background_from_buffer(self, buffer, width, height, flip=False):
        self._window_native.SetBackgroundImageFromBuffer(buffer,
                                                         width,
                                                         height,
                                                         Flip=flip)

    def close(self):
        self._window_native.DisplayStats()

    def add_surface(self, impl_surface):
        self._logger.debug('_testGL_Window_Impl.add_surface()', self)
        self._window_native.AddControl(impl_surface.get_native_surface())

    def remove_surface(self, impl_surface):
        self._window_native.RemoveControl(impl_surface.get_native_surface())
class _testGL_Window_Impl(base_impl._Base_Window_Impl):
    """
    windows binding class for testGL renderEngine
    """

    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_Window_Impl.__init__()', self)
        self._window_native=zForm.Form()
        self._window_native.FpsEnable = False
        
    def refresh(self):
        self._window_native.Refresh()

    def set_back_color(self, Red, Green, Blue):
        self._window_native.SetBackColor(Red, Green, Blue)

    def set_texture(self, impl_texture):
        self._window_native.SetTexture(impl_texture.get_native_surface()) 
        
    def set_background_from_buffer(self, buffer, width, height, flip = False):
        self._window_native.SetBackgroundImageFromBuffer(buffer, width, height, Flip=flip)
        
    def close(self):
        self._window_native.DisplayStats()
     
    def add_surface(self, impl_surface):
        self._logger.debug('_testGL_Window_Impl.add_surface()', self)
        self._window_native.AddControl(impl_surface.get_native_surface())
        
    def remove_surface(self, impl_surface):
        self._window_native.RemoveControl(impl_surface.get_native_surface())
class _testGL_Texture_Impl(object):
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_Texture_Impl.__init__()', self)

        self._surface_native = zOpenGLTexture.OpenGLTexture()

    def init_texture(self, width, height, buffer=None, use_alpha=False):
        if use_alpha == True:
            _format = GL_RGBA
        else:
            _format = GL_RGB
        self._surface_native.init_texture(width, height, _format, buffer)

    def get_native_surface(self):
        return self._surface_native

    def set_buffer(self, buffer):
        self._surface_native.set_buffer(buffer)

    def set_flip_buffer(self, flip):
        self._surface_native.set_flip_buffer(flip)

    def get_size(self):
        return self._surface_native.get_size()

    def set_aspect_ratio(self, respect_aspect_ratio):
        self._surface_native.apply_aspect_ratio(respect_aspect_ratio)
class _testGL_Texture_Impl(object):

    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_Texture_Impl.__init__()', self)
        
        self._surface_native = zOpenGLTexture.OpenGLTexture()
    
    def init_texture(self, width, height, buffer=None, use_alpha=False):
        if use_alpha == True:
            _format = GL_RGBA
        else:
            _format = GL_RGB
        self._surface_native.init_texture(width, height, _format, buffer)
        
    def get_native_surface(self):
        return self._surface_native       
                       
    def set_buffer(self, buffer):
        self._surface_native.set_buffer(buffer)
        
    def set_flip_buffer(self, flip):
        self._surface_native.set_flip_buffer(flip)
        
    def get_size(self):
        return self._surface_native.get_size()
        
    def set_aspect_ratio(self, respect_aspect_ratio):
        self._surface_native.apply_aspect_ratio(respect_aspect_ratio)
Beispiel #6
0
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('Window.__init__()', self)
     self._message_bus = MessageBus()
     self._message_bus.register(self, self.on_message)
     self._window_impl = testgl_impl._testGL_Window_Impl()
     self._events_manager = eventsmanager.EventsManager()
     self._focusedsurface = None
     self._Fps = 50
     self._surface_list = []
     self._background_image_path = None
     self._background_is_movie = False
     self._texture = None
 def __init__(self, text='text'):
     self._logger = Logger()
     self._name=text
     self._logger.debug('Font.__init__()', self)
     self._font_impl = testgl_impl._testGL_Font_Impl(text)
     self._parentsurface = None
     self._x = 0
     self._y = 0
     self._z = 0
     self._width = 100
     self._height = 100
     self._alphalevel = 0
     self._window = None
     self._visible = True
     
     self._font_impl.set_size(self._width, self._height)
class _testGL_EventsManager_Impl(base_impl._Base_EventsManager_Impl):
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_EventsManager_Impl.__init__()', self)

    def process_input_events(self):
        events = []
        for pyevent in pygame.event.get():
            _boxevent = self.pygame_event_converter(pyevent)
            if _boxevent != None:
                events.append(_boxevent)
        return events

    def pygame_event_converter(self, pyevent):

        self._logger.debug_verbose(
            '_testGL_EventsManager_Impl.pygame_event_converter()', self)
        if pyevent.type == pygame.QUIT:
            return events.InputEvent(events.DEV_SYSTEM, events.EVENT_QUIT,
                                     events.SE_QUIT)
        if pyevent.type == pygame.KEYDOWN:
            if pyevent.key == pygame.K_LEFT:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_LEFT,
                                         events.SE_LEFT)
            if pyevent.key == pygame.K_RIGHT:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_RIGHT,
                                         events.SE_RIGHT)
            if pyevent.key == pygame.K_UP:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_UP,
                                         events.SE_UP)
            if pyevent.key == pygame.K_DOWN:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_DOWN,
                                         events.SE_DOWN)
            if pyevent.key == pygame.K_RETURN:
                return events.InputEvent(events.DEV_KEYBOARD,
                                         events.KEY_RETURN, events.SE_OK)
            if pyevent.key == pygame.K_SPACE:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_SPACE,
                                         events.SE_MENU)
            if pyevent.key == pygame.K_ESCAPE:
                return events.InputEvent(events.DEV_KEYBOARD,
                                         events.KEY_ESCAPE, events.SE_QUIT)
            if pyevent.key == pygame.K_BACKSPACE:
                return events.InputEvent(events.DEV_KEYBOARD,
                                         events.KEY_BACKSPACE, events.SE_BACK)

        return None
class EventsManager(object):
    """
    events class
    """
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('EventsManager.__init__()', self)

        self._eventsmanager_impl = testgl_impl._testGL_EventsManager_Impl()

##     def get_event_queue(self):
##         """
##         @return: a list of event is queue and empty the queue
##         """
##         self._logger.debug_verbose('EventsManager.get_event_queue()', self)
##         return self._eventsmanager_impl.get_event_queue()

    def process_input_events(self):
        self._logger.debug_verbose('EventsManager.get_event_queue()', self)
        bus = MessageBus()
        for event in self._eventsmanager_impl.process_input_events():
            bus.send_message(event)
Beispiel #10
0
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('Window.__init__()', self)
     self._message_bus = MessageBus()
     self._message_bus.register(self, self.on_message)
     self._window_impl = testgl_impl._testGL_Window_Impl()
     self._events_manager = eventsmanager.EventsManager()
     self._focusedsurface = None
     self._Fps = 50
     self._surface_list = []
     self._background_image_path = None
     self._background_is_movie = False
     self._texture = None
class _testGL_EventsManager_Impl(base_impl._Base_EventsManager_Impl):

    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_EventsManager_Impl.__init__()', self)

    def process_input_events(self):
        events = []
        for pyevent in pygame.event.get():
            _boxevent = self.pygame_event_converter(pyevent)
            if _boxevent != None:
                events.append(_boxevent)
        return events
            
    def pygame_event_converter(self, pyevent):
    
        self._logger.debug_verbose  ('_testGL_EventsManager_Impl.pygame_event_converter()', self)
        if pyevent.type == pygame.QUIT:   
            return events.InputEvent(events.DEV_SYSTEM, events.EVENT_QUIT, events.SE_QUIT)
        if pyevent.type == pygame.KEYDOWN:
            if pyevent.key == pygame.K_LEFT:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_LEFT, events.SE_LEFT)
            if pyevent.key == pygame.K_RIGHT:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_RIGHT, events.SE_RIGHT)
            if pyevent.key == pygame.K_UP:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_UP, events.SE_UP)
            if pyevent.key == pygame.K_DOWN:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_DOWN, events.SE_DOWN)
            if pyevent.key == pygame.K_RETURN:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_RETURN, events.SE_OK)
            if pyevent.key == pygame.K_SPACE:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_SPACE, events.SE_MENU)
            if pyevent.key == pygame.K_ESCAPE:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_ESCAPE, events.SE_QUIT)
            if pyevent.key == pygame.K_BACKSPACE:
                return events.InputEvent(events.DEV_KEYBOARD, events.KEY_BACKSPACE, events.SE_BACK)
                
        return None
class EventsManager(object):
    """
    events class
    """
    
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('EventsManager.__init__()', self)
        
        self._eventsmanager_impl = testgl_impl._testGL_EventsManager_Impl()
    
##     def get_event_queue(self):
##         """
##         @return: a list of event is queue and empty the queue
##         """
##         self._logger.debug_verbose('EventsManager.get_event_queue()', self)
##         return self._eventsmanager_impl.get_event_queue()

    def process_input_events(self):
        self._logger.debug_verbose('EventsManager.get_event_queue()', self)
        bus = MessageBus()
        for event in self._eventsmanager_impl.process_input_events():
            bus.send_message(event)
class _testGL_Font_Impl(base_impl._Base_Font_Impl):
    def __init__(self, text='text'):
        self._logger = Logger()
        self._logger.debug('_testGL_Surface_Impl.__init__(' + str(text) + ')',
                           self)
        self._surface_native = zFont.Font(text)

    def get_native_surface(self):
        return self._surface_native

    def set_size(self, Width, Height):
        self._surface_native.SetSize(Width, Height)

    def get_size(self):
        return self._surface_native.GetSize()

    def set_location(self, x, y, z):
        self._surface_native.SetLocation(x, y, z)

    def set_back_color(self, Red, Green, Blue):
        self._surface_native.SetBackColor(Red, Green, Blue)

    def set_alpha_level(self, level):
        self._surface_native.SetAlpha(level * 2.55)

    def hide(self):
        self._logger.debug('_testGL_Surface_Impl.hide()', self)
        self._surface_native.Hide()

    def show(self):
        self._surface_native.Show()

    def set_font_size(self, size):
        self._surface_native.SetFontSize(size)

    def set_text(self, text):
        self._surface_native.SetText(text)
class _testGL_Font_Impl(base_impl._Base_Font_Impl):

    def __init__(self, text='text'):
        self._logger = Logger()
        self._logger.debug('_testGL_Surface_Impl.__init__(' + str(text) + ')', self)
        self._surface_native = zFont.Font(text)
    
    def get_native_surface(self):
        return self._surface_native       
        
    def set_size(self, Width, Height):  
        self._surface_native.SetSize(Width, Height)
        
    def get_size(self):
        return self._surface_native.GetSize()
        
    def set_location(self, x, y, z):
        self._surface_native.SetLocation( x, y, z)
        
    def set_back_color(self, Red, Green, Blue):
        self._surface_native.SetBackColor(Red, Green, Blue)
        
    def set_alpha_level(self, level):
        self._surface_native.SetAlpha(level*2.55)
        
    def hide(self):
        self._logger.debug('_testGL_Surface_Impl.hide()', self)
        self._surface_native.Hide()

    def show(self):
        self._surface_native.Show()   
        
    def set_font_size(self, size):
        self._surface_native.SetFontSize(size)
        
    def set_text(self, text):
        self._surface_native.SetText(text)
Beispiel #15
0
    def __init__(self, name='Surface'):
        self._logger = Logger()
        self._name = name
        self._logger.debug('Surface.__init__()', self)
        self._message_bus = MessageBus()
        self._message_bus.register(self, self.on_message)
        self._surface_impl = testgl_impl._testGL_Surface_Impl()
        self._surface_list = []
        self._parentsurface = None
        self._x = 0
        self._y = 0
        self._z = 0
        self._width = 100
        self._height = 100
        self._alphalevel = 100
        self._background_image_path = None
        self._window = None
        self._visible = True
        self._visible_r = True
        self._background_is_movie = False
        self._texture = None
        self._appli = common.get_application()

        self._surface_impl.set_size(self._width, self._height)
class _testGL_Surface_Impl(base_impl._Base_Surface_Impl):
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_Surface_Impl.__init__()', self)
        self._surface_native = zPictureBox.PictureBox()

    def get_native_surface(self):
        return self._surface_native

    def set_size(self, Width, Height):
        self._surface_native.SetSize(Width, Height)

    def set_location(self, x, y, z):
        self._surface_native.SetLocation(x, y, z)

    def set_back_color(self, Red, Green, Blue):
        self._surface_native.SetBackColor(Red, Green, Blue)

    def set_alpha_level(self, level):
        self._surface_native.SetAlpha(level * 2.55)

    def hide(self):
        self._logger.debug('_testGL_Surface_Impl.hide()', self)
        self._surface_native.Hide()

    def show(self):
        self._surface_native.Show()

    def set_background_from_buffer(self, buffer, width, height, flip=False):
        self._surface_native.SetBackgroundImageFromBuffer(buffer,
                                                          width,
                                                          height,
                                                          Flip=flip)

    def set_texture(self, impl_texture):
        self._surface_native.SetTexture(impl_texture.get_native_surface())
Beispiel #17
0
 def __init__(self, name='Surface'):
     self._logger = Logger()
     self._name=name
     self._logger.debug('Surface.__init__()', self)
     self._message_bus = MessageBus()
     self._message_bus.register(self, self.on_message)
     self._surface_impl = testgl_impl._testGL_Surface_Impl()
     self._surface_list = []
     self._parentsurface = None
     self._x = 0
     self._y = 0
     self._z = 0
     self._width = 100
     self._height = 100
     self._alphalevel = 100
     self._background_image_path = None
     self._window = None
     self._visible = True
     self._visible_r = True
     self._background_is_movie = False
     self._texture = None
     self._appli = common.get_application()
     
     self._surface_impl.set_size(self._width, self._height)
 def __init__(self, text='text'):
     self._logger = Logger()
     self._logger.debug('_testGL_Surface_Impl.__init__(' + str(text) + ')', self)
     self._surface_native = zFont.Font(text)
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('_testGL_Window_Impl.__init__()', self)
     self._window_native = zForm.Form()
     self._window_native.FpsEnable = False
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('EventsManager.__init__()', self)

        self._eventsmanager_impl = testgl_impl._testGL_EventsManager_Impl()
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('_testGL_Texture_Impl.__init__()', self)

        self._surface_native = zOpenGLTexture.OpenGLTexture()
Beispiel #22
0
 def __init__(self, config_file=CONFIG_FILE):
     self._filename = config_file
     self._config = ConfigObj(config_file)
     self._logger = Logger()
Beispiel #23
0
class Config:
    """ Elisa's configuration system

    Each configuration is stored in a text file. The configuration is
    structured in sections. There's at least one section called
    'general'. Each plugin has its own section (ex: 'plugin.foo').
    

    """
    
    def __init__(self, config_file=CONFIG_FILE):
        self._filename = config_file
        self._config = ConfigObj(config_file)
        self._logger = Logger()

    def get_filename(self):
        return self._filename
                    
    def get_option(self, key, section='general', default=None):
        """ Fetch the option value stored in the given section, at the
        given key. Return a default value if the key is not found.
        """
        return self.get_section(section).get(key, default)

    def set_option(self, key, value, section='general'):
        """ Store an option value under key id at the given section.
        """
        self._config[section][key] = value

    def del_option(self, key, section_name='general'):
        """ Remove the option identified by key under the specified
        section.
        """
        section = self.get_section(section_name)
        if section and section.has_key(key):
            del section[key]
        self.set_section(section_name, section)

    def write(self):
        """
        save the config in a text file (handled by ConfigObj)
        
        """
        self._logger.info('saving config...')
        self._config.write()

    def get_section(self, section_name):
        """
        @return the ConfigObj section identified by section_name
        """
        return self._config.get(section_name, {})

    def set_section(self, section_name, section_data):
        """
        Store section_data in a new section identified by section_name
        in the config
        """
        self._config[section_name] = section_data

    def del_section(self, section_name):
        """ Remove the section identified by section_name
        """
        if self._config.has_key(section_name):
            del self._config[section_name]
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('_testGL_EventsManager_Impl.__init__()', self)
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('EventsManager.__init__()', self)
     
     self._eventsmanager_impl = testgl_impl._testGL_EventsManager_Impl()
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('_testGL_Surface_Impl.__init__()', self)
     self._surface_native = zPictureBox.PictureBox()
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('_testGL_Texture_Impl.__init__()', self)
     
     self._surface_native = zOpenGLTexture.OpenGLTexture()
 def __init__(self, text='text'):
     self._logger = Logger()
     self._logger.debug('_testGL_Surface_Impl.__init__(' + str(text) + ')',
                        self)
     self._surface_native = zFont.Font(text)
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('_testGL_Window_Impl.__init__()', self)
     self._window_native=zForm.Form()
     self._window_native.FpsEnable = False
class FontSurface(object):
    """
    font class
    """
    
    """
    class of Surface
    """
    
    def __init__(self, text='text'):
        self._logger = Logger()
        self._name=text
        self._logger.debug('Font.__init__()', self)
        self._font_impl = testgl_impl._testGL_Font_Impl(text)
        self._parentsurface = None
        self._x = 0
        self._y = 0
        self._z = 0
        self._width = 100
        self._height = 100
        self._alphalevel = 0
        self._window = None
        self._visible = True
        
        self._font_impl.set_size(self._width, self._height)

    def pretty_print(self, deep = 0):
        """ Textual representation of the tree. This method is recursive
        """
        return " " * deep + "- %s (0 items)" % (self._name)
        
    def remove_surface(self, surface): pass
    
    def on_removed(self): pass
       
    def _get_child_surface(self):
        return []
            
    def fire_event(self, event): 
        #self._logger.debug('Font.fire_event()', self)
        return self.on_event(event)
    
    def on_event(self, event):
        """
        called if new event is fire
        if return False, event will not fired to next event
        """
        self._logger.debug('Font.on_event(' + str(event) + ')', self)
        return True
            
    def _get_surface_impl(self):
        self._logger.debug('Font._get_surface_impl()', self)
        return self._font_impl

    def set_alpha_level(self, level, not_used):
        """
        set the alpha level in percent of the widget [0 to 100%] of opacity
        """
        self._logger.debug('Font.set_alpha_level()', self)
        self._alphalevel = level
        self._font_impl.set_alpha_level(level)

    
    def close(self): pass
    
    def set_size(self, width, height):
        """
        define the size in 2D plan
        """
        self._logger.debug('Font.set_size()', self)
        self._width = width
        self._height = height
        self._font_impl.set_size(width, height)
    
    def get_size(self):
        """
        return current size
        """
        self._logger.debug('Font.get_size()', self)
        #return (self._width, self._height)
        return self._font_impl.get_size()

    def set_location(self, x, y, z):
        """
        set location of widget (relative to parent)
        """
        self._logger.debug_verbose('Font.set_location()', self)
        self._x = x
        self._y = y
        self._z = z
        (ax, ay, az) = self.get_absolute_location()
        self._font_impl.set_location(ax, ay, az)
    
    def _refresh_location(self):
        self._logger.debug_verbose('Font._refresh_location()', self)
        self.set_location(self._x, self._y, self._z)
    
    def get_location(self):
        """ 
        get 3D location (relative to parent)
        """ 
        self._logger.debug('Font.get_location()', self)
        return (self._x, self._y, self._z)
    
    def get_absolute_location(self):
        self._logger.debug_verbose('Font.get_absolute_location()', self)
        _cx = self._x
        _cy = self._y
        _cz = self._z
                
        if self._parentsurface != None and isinstance(self._parentsurface, surface.Surface) :
            (_tx, _ty, _tz) = self._parentsurface.get_absolute_location()
            _cx += _tx
            _cy += _ty
            _cz += _tz
            
        return (_cx, _cy, _cz)
    
    def set_back_color(self, red, green, blue):
        """
        set widget backcolor
        """
        self._logger.debug('Surface.set_back_color(()', self)
        self._surface_impl.set_back_color(red, green, blue)
            
    def refresh(self):
        """
        refresh surface
        """
        self._logger.debug_verbose('Font.refresh()', self)

    def _set_parent(self, parent):
        self._logger.debug_verbose('Font._set_parent()', self)
        self._parentsurface = parent
        
    def get_parent(self):
        self._logger.debug_verbose('Font.get_parent()', self)
        return self._parentsurface
        
    def _set_window(self, window):
        self._logger.debug_verbose('Font._set_window()', self)
        self._window = window
        
    def get_window(self):
        self._logger.debug_verbose_verbose('Font.get_window()', self)
        return self._window
        
    def hide(self, not_used=None):
        self._logger.debug('Font.hide()', self)
        self._font_impl.hide()
        self._visible = False
        
    def show(self, not_used=None):
        self._logger.debug('Font.show()', self)
        self._font_impl.show()
        self._visible = True
        
    def visible(self):
        self._logger.debug('Font.visible()', self)
        return self._visible

    def set_name(self, name):
        self._name=name
        self._logger.debug('Font.set_name()', self)
        
    def get_name(self):
        self._logger.debug('Font.get_name()', self)
        return self._name
        
    def set_font_size(self, size):
        self._font_impl.set_font_size(size)
        
    def set_text(self, text):
        self._font_impl.set_text(text)
        
    def __repr__(self):
        #FIXME str(self) make recursive call
        return self._name #+ str(self)
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('_testGL_Surface_Impl.__init__()', self)
     self._surface_native = zPictureBox.PictureBox()
Beispiel #32
0
class Window(object):
    """
    Main window boxwidget class
    """
    
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('Window.__init__()', self)
        self._message_bus = MessageBus()
        self._message_bus.register(self, self.on_message)
        self._window_impl = testgl_impl._testGL_Window_Impl()
        self._events_manager = eventsmanager.EventsManager()
        self._focusedsurface = None
        self._Fps = 50
        self._surface_list = []
        self._background_image_path = None
        self._background_is_movie = False
        self._texture = None
    
    def _get_window_impl(self):
        self._logger.debug('Window.(_get_window_impl)', self)
        return self._window_impl
        
    def add_surface(self, surface):
        self._logger.debug('Window.add_surface()', self)
        if surface not in self._surface_list:
            self._surface_list.append(surface)
            
        surface._set_parent(self)
        surface._set_window(self)
        self._window_impl.add_surface(surface._get_surface_impl())
        
        #Call AddSurface on child widget for set window, and parent
        for s in surface._get_child_surface():
            surface.add_surface(s)

    
    def remove_surface(self, surface):
        self._logger.debug('Window.remove_surface()', self)
        if surface in self._surface_list:
            self._surface_list.remove(surface)
        self._window_impl.remove_surface(surface._get_surface_impl())
                   
    def run(self):
        """
        run main application loop
        """   
        self._logger.debug('Window.run()', self)  
        self._WidgetLoopingCall =  task.LoopingCall(self.refresh)
        self._WidgetLoopingCall.start(1.0 / self._Fps)
        self.on_load()
        reactor.run()        

    def refresh(self):
        """
        refresh complete window (draw current frame)
        @return: False if loop stop required, True if noting.
        """
        self._logger.debug_verbose('Window.refresh()', self)
        
        self._events_manager.process_input_events()
        self._message_bus.dispatch_messages()
        
        for surface in self._surface_list:
            surface.refresh()
        self._window_impl.refresh()
   
    def on_message(self, receiver, message, sender):
        """
        called if new event is fire
        if return False, event will not fired to next event
        """
        self._logger.debug('Window.on_message(' + str(message) + ')', self)
        if isinstance(message, events.InputEvent):
            e = message.get_simple_event()
            if e == events.SE_QUIT:
                self.close()
                
        return True
             
    def close(self):
        """
        close window
        """
        #FIXME : close also added surface
        self._logger.debug('Window.close()', self)
        reactor.stop()

        for surface in self._surface_list:
            surface.close()
  
    def on_load(self):
        """
        called just before main loop starting
        """
        self._logger.debug('Window.on_load()', self)

    def set_background_from_file(self, path_and_file_name=None):
        """
        set widget background image
        """
        self._logger.debug('Window.set_background_from_file()', self)
        self._background_image_path = path_and_file_name
               
        if elisa.utils.misc.file_is_movie(path_and_file_name):
            p = self._appli.get_player_manager().get_player(path_and_file_name)
            p.play()
            self.set_texture(p.get_texture())
            self._background_is_movie = True
        else:
            _texture = texture.Texture()
            _texture.init_texture_from_picture(path_and_file_name)
            self.set_texture(_texture)
            self._background_is_movie = False

    def background_is_movie(self):
        return self._background_is_movie
        
    def set_background_from_buffer(self, buffer, width, height, flip):
         self._window_impl.set_background_from_buffer(buffer, width, height, flip)
    
    def get_background_file(self):
        """
        return path and filename of background image
        """
        self._logger.debug('Window.get_background_file()', self)
        return self._background_image_path
        
    def set_back_color(self, red, green, blue):
        """
        set widget backcolor
        """
        self._logger.debug('Window.set_back_color(()', self)
        self._window_impl.set_back_color(red, green, blue)
        
    def get_texture(self):
        return self._texture
        
    def set_texture(self, texture):
        self._texture = texture
        if texture != None:
            self._window_impl.set_texture(texture._get_surface_impl())  
 def __init__(self):
     self._logger = Logger()
     self._logger.debug('_testGL_EventsManager_Impl.__init__()', self)
Beispiel #34
0
class Surface(object):  
    """
    class of Surface
    """
    
    def __init__(self, name='Surface'):
        self._logger = Logger()
        self._name=name
        self._logger.debug('Surface.__init__()', self)
        self._message_bus = MessageBus()
        self._message_bus.register(self, self.on_message)
        self._surface_impl = testgl_impl._testGL_Surface_Impl()
        self._surface_list = []
        self._parentsurface = None
        self._x = 0
        self._y = 0
        self._z = 0
        self._width = 100
        self._height = 100
        self._alphalevel = 100
        self._background_image_path = None
        self._window = None
        self._visible = True
        self._visible_r = True
        self._background_is_movie = False
        self._texture = None
        self._appli = common.get_application()
        
        self._surface_impl.set_size(self._width, self._height)

    def get_texture(self):
        return self._texture
        
    def set_texture(self, texture):
        self._texture = texture
        if texture != None:
            self._surface_impl.set_texture(texture._get_surface_impl())  
 
    def pretty_print(self, deep = 0):
        """ Textual representation of the tree. This method is recursive
        """
        representation = " " * deep + "- %s (%s items)" % (self._name,
                                              len(self._surface_list))
        deep += 1
        for surface in self._surface_list:
            representation += "\n" + surface.pretty_print(deep)
        return representation
    
    def on_message(self, receiver, message, sender):
        """
        called if new event is fire
        if return False, event will not fired to next event
        """
        self._logger.debug('Surface.on_message')
        return True
    
    def close(self):
        for surface in self._surface_list:
            surface.close()

    def _get_surface_impl(self):
        self._logger.debug('Surface._get_surface_impl()', self)
        return self._surface_impl

    def set_alpha_level(self, level, apply_to_child=False):
        """
        set the alpha level in percent of the widget [0 to 100%] of opacity
        """
        self._logger.debug('Surface.set_alpha_level(' + str(level) + ')', self)
        self._alphalevel = level
        self._surface_impl.set_alpha_level(level)
        
        if apply_to_child == True:
            for s in self._surface_list:
                s.set_alpha_level(level, apply_to_child)
            

    def get_alpha_level(self):
        return self._alphalevel
        
    def set_background_from_file(self, path_and_file_name=None):
        """
        set widget background image
        """
        self._logger.debug('Surface.set_background_from_file()', self)
        self._background_image_path = path_and_file_name
               
        if elisa.utils.misc.file_is_movie(path_and_file_name):
            p = self._appli.get_player_manager().get_player(path_and_file_name)
            p.play()
            self.set_texture(p.get_texture())
            self._background_is_movie = True
        else:
            _texture = texture.Texture()
            _texture.init_texture_from_picture(path_and_file_name)
            self.set_texture(_texture)
            self._background_is_movie = False

    def background_is_movie(self):
        return self._background_is_movie
        
    def set_background_from_buffer(self, buffer, width, height, flip):
         self._surface_impl.set_background_from_buffer(buffer, width, height, flip)
    
    def get_background_file(self):
        """
        return path and filename of background image
        """
        self._logger.debug('Surface.get_background_file()', self)
        return self._background_image_path
        
    def set_size(self, width, height):
        """
        define the size in 2D plan
        """
        self._logger.debug('Surface.set_size()', self)
        self._width = width
        self._height = height
        self._surface_impl.set_size(width, height)
    
    def get_size(self):
        """
        return current size
        """
        self._logger.debug('Surface.get_size()', self)
        return (self._width, self._height)

    def set_location(self, x, y, z):
        """
        set location of widget (relative to parent)
        """
        self._logger.debug_verbose('Surface.set_location()', self)
        self._x = x
        self._y = y
        self._z = z
        (ax, ay, az) = self.get_absolute_location()
        self._surface_impl.set_location(ax, ay, az)
        
        for child in self._surface_list: child._refresh_location()
    
    def _refresh_location(self):
        self._logger.debug_verbose('Surface._refresh_location()', self)
        self.set_location(self._x, self._y, self._z)
    
    def set_background_from_surface(self, surface):
        self._surface_impl.set_background_from_surface(surface._get_surface_impl())
    
    def get_location(self):
        """ 
        get 3D location (relative to parent)
        """ 
        self._logger.debug('Surface.get_location()', self)
        return (self._x, self._y, self._z)
    
    def get_absolute_location(self):
        self._logger.debug_verbose('Surface.get_absolute_location()', self)
        _cx = self._x
        _cy = self._y
        _cz = self._z
                
        if self._parentsurface != None and isinstance(self._parentsurface, Surface) :
            (_tx, _ty, _tz) = self._parentsurface.get_absolute_location()
            _cx += _tx
            _cy += _ty
            _cz += _tz
            
        return (_cx, _cy, _cz)

    def set_back_color(self, red, green, blue):
        """
        set widget backcolor
        """
        self._logger.debug('Surface.set_back_color(()', self)
        self._surface_impl.set_back_color(red, green, blue)
        
    def refresh(self):
        """
        refresh surface
        """
        self._logger.debug_verbose('Surface.refresh()', self)
        
        #if self._background_is_movie == True and self._player != None:
        #    _frame = self._player.get_current_frame()
        #    _videowidth = self._player.get_video_width()
        #    _videoheight = self._player.get_video_height() 
        #    if _frame != None and _videoheight != None and _videowidth != None:
        #        self.set_background_from_buffer(_frame, _videowidth, _videoheight, True)
            
        for surface in self._surface_list:
            surface.refresh()
                    
    def add_surface(self, surface):
        self._logger.debug('Surface.add_surface(' + str(surface) + ')', self)
        if surface not in self._surface_list:
            self._surface_list.append(surface) 
        
        _mainwindow = self.get_window()
        surface._set_parent(self);
        surface._set_window(_mainwindow)
        if _mainwindow != None:
            _mainwindow._get_window_impl().add_surface(surface._get_surface_impl())
            
        #re-set location for apply location offset on child surface
        self._refresh_location()
        
        #Call AddSurface on child widget for set window, and parent
        for s in surface._get_child_surface():
            surface.add_surface(s)

    def get_surface_list(self):
        return self._surface_list
        
    def remove_surface(self, surface):
        self._logger.debug('Surface.remove_surface(' + str(surface) + ')', self)
        if surface in self._get_child_surface():
            self._surface_list.remove(surface)
            surface.on_removed()
        
        _mainwindow = self.get_window()
        if _mainwindow != None:
            _mainwindow._get_window_impl().remove_surface(surface._get_surface_impl())
                
        #remove child surface also
        #copy needeed because list in modified by recursive fct
        _child = surface._get_child_surface()[:]
        for s in _child:
            surface.remove_surface(s)
    
    def on_removed(self): pass
    
    def _get_child_surface(self):
        self._logger.debug_verbose('Surface._get_child_surface()', self)
        return self._surface_list
        
    def _set_parent(self, parent):
        self._logger.debug_verbose('Surface._set_parent()', self)
        self._parentsurface = parent
        
    def get_parent(self):
        self._logger.debug_verbose('Surface.get_parent()', self)
        return self._parentsurface
        
    def _set_window(self, window):
        self._logger.debug_verbose('Surface._set_window()', self)
        self._window = window
        
    def get_window(self):
        self._logger.debug_verbose('Surface.get_window()', self)
        return self._window
        
    def hide(self, recursive = False):
        self._logger.debug('Surface.hide()', self)
        self._surface_impl.hide()
        self._visible = False
        if recursive == True:
            self._visible_r = False
            for s in self._surface_list:
                s.hide(True)
        
    def show(self, recursive = False):
        self._logger.debug('Surface.show()', self)
        self._surface_impl.show()
        self._visible = True
        if recursive == True:
            self._visible_r = True
            for s in self._surface_list:
                s.show(True)
        
    def visible(self, recursive = False):
        self._logger.debug('Surface.visible()', self)
        if recursive == True:
            return self._visible_r
        return self._visible

    def set_name(self, name):
        self._name=name
        self._logger.debug('Surface.set_name()', self)
        
    def get_name(self):
        self._logger.debug('Surface.get_name()', self)
        return self._name
        
    def __repr__(self):
        #FIXME str(self) make recursive call
        return "<%s instance at 0x%x : %s>" % (self.__class__.__name__, id(self),self._name) #+ str(self)
Beispiel #35
0
class Window(object):
    """
    Main window boxwidget class
    """
    def __init__(self):
        self._logger = Logger()
        self._logger.debug('Window.__init__()', self)
        self._message_bus = MessageBus()
        self._message_bus.register(self, self.on_message)
        self._window_impl = testgl_impl._testGL_Window_Impl()
        self._events_manager = eventsmanager.EventsManager()
        self._focusedsurface = None
        self._Fps = 50
        self._surface_list = []
        self._background_image_path = None
        self._background_is_movie = False
        self._texture = None

    def _get_window_impl(self):
        self._logger.debug('Window.(_get_window_impl)', self)
        return self._window_impl

    def add_surface(self, surface):
        self._logger.debug('Window.add_surface()', self)
        if surface not in self._surface_list:
            self._surface_list.append(surface)

        surface._set_parent(self)
        surface._set_window(self)
        self._window_impl.add_surface(surface._get_surface_impl())

        #Call AddSurface on child widget for set window, and parent
        for s in surface._get_child_surface():
            surface.add_surface(s)

    def remove_surface(self, surface):
        self._logger.debug('Window.remove_surface()', self)
        if surface in self._surface_list:
            self._surface_list.remove(surface)
        self._window_impl.remove_surface(surface._get_surface_impl())

    def run(self):
        """
        run main application loop
        """
        self._logger.debug('Window.run()', self)
        self._WidgetLoopingCall = task.LoopingCall(self.refresh)
        self._WidgetLoopingCall.start(1.0 / self._Fps)
        self.on_load()
        reactor.run()

    def refresh(self):
        """
        refresh complete window (draw current frame)
        @return: False if loop stop required, True if noting.
        """
        self._logger.debug_verbose('Window.refresh()', self)

        self._events_manager.process_input_events()
        self._message_bus.dispatch_messages()

        for surface in self._surface_list:
            surface.refresh()
        self._window_impl.refresh()

    def on_message(self, receiver, message, sender):
        """
        called if new event is fire
        if return False, event will not fired to next event
        """
        self._logger.debug('Window.on_message(' + str(message) + ')', self)
        if isinstance(message, events.InputEvent):
            e = message.get_simple_event()
            if e == events.SE_QUIT:
                self.close()

        return True

    def close(self):
        """
        close window
        """
        #FIXME : close also added surface
        self._logger.debug('Window.close()', self)
        reactor.stop()

        for surface in self._surface_list:
            surface.close()

    def on_load(self):
        """
        called just before main loop starting
        """
        self._logger.debug('Window.on_load()', self)

    def set_background_from_file(self, path_and_file_name=None):
        """
        set widget background image
        """
        self._logger.debug('Window.set_background_from_file()', self)
        self._background_image_path = path_and_file_name

        if elisa.utils.misc.file_is_movie(path_and_file_name):
            p = self._appli.get_player_manager().get_player(path_and_file_name)
            p.play()
            self.set_texture(p.get_texture())
            self._background_is_movie = True
        else:
            _texture = texture.Texture()
            _texture.init_texture_from_picture(path_and_file_name)
            self.set_texture(_texture)
            self._background_is_movie = False

    def background_is_movie(self):
        return self._background_is_movie

    def set_background_from_buffer(self, buffer, width, height, flip):
        self._window_impl.set_background_from_buffer(buffer, width, height,
                                                     flip)

    def get_background_file(self):
        """
        return path and filename of background image
        """
        self._logger.debug('Window.get_background_file()', self)
        return self._background_image_path

    def set_back_color(self, red, green, blue):
        """
        set widget backcolor
        """
        self._logger.debug('Window.set_back_color(()', self)
        self._window_impl.set_back_color(red, green, blue)

    def get_texture(self):
        return self._texture

    def set_texture(self, texture):
        self._texture = texture
        if texture != None:
            self._window_impl.set_texture(texture._get_surface_impl())
Beispiel #36
0
class Surface(object):
    """
    class of Surface
    """
    def __init__(self, name='Surface'):
        self._logger = Logger()
        self._name = name
        self._logger.debug('Surface.__init__()', self)
        self._message_bus = MessageBus()
        self._message_bus.register(self, self.on_message)
        self._surface_impl = testgl_impl._testGL_Surface_Impl()
        self._surface_list = []
        self._parentsurface = None
        self._x = 0
        self._y = 0
        self._z = 0
        self._width = 100
        self._height = 100
        self._alphalevel = 100
        self._background_image_path = None
        self._window = None
        self._visible = True
        self._visible_r = True
        self._background_is_movie = False
        self._texture = None
        self._appli = common.get_application()

        self._surface_impl.set_size(self._width, self._height)

    def get_texture(self):
        return self._texture

    def set_texture(self, texture):
        self._texture = texture
        if texture != None:
            self._surface_impl.set_texture(texture._get_surface_impl())

    def pretty_print(self, deep=0):
        """ Textual representation of the tree. This method is recursive
        """
        representation = " " * deep + "- %s (%s items)" % (
            self._name, len(self._surface_list))
        deep += 1
        for surface in self._surface_list:
            representation += "\n" + surface.pretty_print(deep)
        return representation

    def on_message(self, receiver, message, sender):
        """
        called if new event is fire
        if return False, event will not fired to next event
        """
        self._logger.debug('Surface.on_message')
        return True

    def close(self):
        for surface in self._surface_list:
            surface.close()

    def _get_surface_impl(self):
        self._logger.debug('Surface._get_surface_impl()', self)
        return self._surface_impl

    def set_alpha_level(self, level, apply_to_child=False):
        """
        set the alpha level in percent of the widget [0 to 100%] of opacity
        """
        self._logger.debug('Surface.set_alpha_level(' + str(level) + ')', self)
        self._alphalevel = level
        self._surface_impl.set_alpha_level(level)

        if apply_to_child == True:
            for s in self._surface_list:
                s.set_alpha_level(level, apply_to_child)

    def get_alpha_level(self):
        return self._alphalevel

    def set_background_from_file(self, path_and_file_name=None):
        """
        set widget background image
        """
        self._logger.debug('Surface.set_background_from_file()', self)
        self._background_image_path = path_and_file_name

        if elisa.utils.misc.file_is_movie(path_and_file_name):
            p = self._appli.get_player_manager().get_player(path_and_file_name)
            p.play()
            self.set_texture(p.get_texture())
            self._background_is_movie = True
        else:
            _texture = texture.Texture()
            _texture.init_texture_from_picture(path_and_file_name)
            self.set_texture(_texture)
            self._background_is_movie = False

    def background_is_movie(self):
        return self._background_is_movie

    def set_background_from_buffer(self, buffer, width, height, flip):
        self._surface_impl.set_background_from_buffer(buffer, width, height,
                                                      flip)

    def get_background_file(self):
        """
        return path and filename of background image
        """
        self._logger.debug('Surface.get_background_file()', self)
        return self._background_image_path

    def set_size(self, width, height):
        """
        define the size in 2D plan
        """
        self._logger.debug('Surface.set_size()', self)
        self._width = width
        self._height = height
        self._surface_impl.set_size(width, height)

    def get_size(self):
        """
        return current size
        """
        self._logger.debug('Surface.get_size()', self)
        return (self._width, self._height)

    def set_location(self, x, y, z):
        """
        set location of widget (relative to parent)
        """
        self._logger.debug_verbose('Surface.set_location()', self)
        self._x = x
        self._y = y
        self._z = z
        (ax, ay, az) = self.get_absolute_location()
        self._surface_impl.set_location(ax, ay, az)

        for child in self._surface_list:
            child._refresh_location()

    def _refresh_location(self):
        self._logger.debug_verbose('Surface._refresh_location()', self)
        self.set_location(self._x, self._y, self._z)

    def set_background_from_surface(self, surface):
        self._surface_impl.set_background_from_surface(
            surface._get_surface_impl())

    def get_location(self):
        """ 
        get 3D location (relative to parent)
        """
        self._logger.debug('Surface.get_location()', self)
        return (self._x, self._y, self._z)

    def get_absolute_location(self):
        self._logger.debug_verbose('Surface.get_absolute_location()', self)
        _cx = self._x
        _cy = self._y
        _cz = self._z

        if self._parentsurface != None and isinstance(self._parentsurface,
                                                      Surface):
            (_tx, _ty, _tz) = self._parentsurface.get_absolute_location()
            _cx += _tx
            _cy += _ty
            _cz += _tz

        return (_cx, _cy, _cz)

    def set_back_color(self, red, green, blue):
        """
        set widget backcolor
        """
        self._logger.debug('Surface.set_back_color(()', self)
        self._surface_impl.set_back_color(red, green, blue)

    def refresh(self):
        """
        refresh surface
        """
        self._logger.debug_verbose('Surface.refresh()', self)

        #if self._background_is_movie == True and self._player != None:
        #    _frame = self._player.get_current_frame()
        #    _videowidth = self._player.get_video_width()
        #    _videoheight = self._player.get_video_height()
        #    if _frame != None and _videoheight != None and _videowidth != None:
        #        self.set_background_from_buffer(_frame, _videowidth, _videoheight, True)

        for surface in self._surface_list:
            surface.refresh()

    def add_surface(self, surface):
        self._logger.debug('Surface.add_surface(' + str(surface) + ')', self)
        if surface not in self._surface_list:
            self._surface_list.append(surface)

        _mainwindow = self.get_window()
        surface._set_parent(self)
        surface._set_window(_mainwindow)
        if _mainwindow != None:
            _mainwindow._get_window_impl().add_surface(
                surface._get_surface_impl())

        #re-set location for apply location offset on child surface
        self._refresh_location()

        #Call AddSurface on child widget for set window, and parent
        for s in surface._get_child_surface():
            surface.add_surface(s)

    def get_surface_list(self):
        return self._surface_list

    def remove_surface(self, surface):
        self._logger.debug('Surface.remove_surface(' + str(surface) + ')',
                           self)
        if surface in self._get_child_surface():
            self._surface_list.remove(surface)
            surface.on_removed()

        _mainwindow = self.get_window()
        if _mainwindow != None:
            _mainwindow._get_window_impl().remove_surface(
                surface._get_surface_impl())

        #remove child surface also
        #copy needeed because list in modified by recursive fct
        _child = surface._get_child_surface()[:]
        for s in _child:
            surface.remove_surface(s)

    def on_removed(self):
        pass

    def _get_child_surface(self):
        self._logger.debug_verbose('Surface._get_child_surface()', self)
        return self._surface_list

    def _set_parent(self, parent):
        self._logger.debug_verbose('Surface._set_parent()', self)
        self._parentsurface = parent

    def get_parent(self):
        self._logger.debug_verbose('Surface.get_parent()', self)
        return self._parentsurface

    def _set_window(self, window):
        self._logger.debug_verbose('Surface._set_window()', self)
        self._window = window

    def get_window(self):
        self._logger.debug_verbose('Surface.get_window()', self)
        return self._window

    def hide(self, recursive=False):
        self._logger.debug('Surface.hide()', self)
        self._surface_impl.hide()
        self._visible = False
        if recursive == True:
            self._visible_r = False
            for s in self._surface_list:
                s.hide(True)

    def show(self, recursive=False):
        self._logger.debug('Surface.show()', self)
        self._surface_impl.show()
        self._visible = True
        if recursive == True:
            self._visible_r = True
            for s in self._surface_list:
                s.show(True)

    def visible(self, recursive=False):
        self._logger.debug('Surface.visible()', self)
        if recursive == True:
            return self._visible_r
        return self._visible

    def set_name(self, name):
        self._name = name
        self._logger.debug('Surface.set_name()', self)

    def get_name(self):
        self._logger.debug('Surface.get_name()', self)
        return self._name

    def __repr__(self):
        #FIXME str(self) make recursive call
        return "<%s instance at 0x%x : %s>" % (
            self.__class__.__name__, id(self), self._name)  #+ str(self)