コード例 #1
0
ファイル: flipside.py プロジェクト: azoon/pymt
def get_comments(file):
    ext = get_file_ext(file)
    if ext in MUSIC_TYPES:
        return MUSIC_TYPES[ext](file)
    else:
        pymt_logger.warning('File "%s" is not recognized by FlipSide', file)
        return None
コード例 #2
0
    def append(category, key, obj, timeout=None):
        '''Add a new object in the cache.

        :Parameters:
            `category` : str
                Identifier of the category
            `key` : str
                Uniq identifier of the object to store
            `obj` : object
                Object to store in cache
            `timeout` : double (optionnal)
                Custom time to delete the object if it's not used.
        '''
        try:
            cat = Cache._categories[category]
        except KeyError:
            pymt_logger.warning('Cache: category <%s> not exist' % category)
            return
        timeout = timeout or cat['timeout']
        # FIXME: activate purge when limit is hit
        #limit = cat['limit']
        #if limit is not None and len(Cache._objects[category]) >= limit:
        #    Cache._purge_oldest(category)
        Cache._objects[category][key] = {
            'object': obj,
            'timeout': timeout,
            'lastaccess': getClock().get_time(),
            'timestamp': getClock().get_time()
        }
コード例 #3
0
ファイル: probesysfs.py プロジェクト: Markitox/pymt
        def probe(self):
            inputs = get_inputs(self.input_path)
            inputs = [x for x in inputs if x.has_capability(ABS_MT_POSITION_X)]
            for device in inputs:
                pymt_logger.info('ProbeSysfs: found device: %s at %s' % (
                                 device.name, device.device))

                # must ignore ?
                if self.match:
                    if not re.match(self.match, device.name, re.IGNORECASE):
                        pymt_logger.warning('ProbeSysfs: device not match the'
                                            ' rule in config, ignoring.')
                        continue

                devicename = self.device % dict(name=device.device.split(os.path.sep)[-1])

                provider = TouchFactory.get(self.provider)
                if provider is None:
                    pymt_logger.info('ProbeSysfs: unable to found provider %s' %
                                     self.provider)
                    pymt_logger.info('ProbeSysfs: fallback on hidinput')
                    provider = TouchFactory.get('hidinput')
                if provider is None:
                    pymt_logger.critical('ProbeSysfs: no input provider found'
                                         ' to handle this device !')
                    continue

                instance = provider(devicename, '%s,%s' % (device.device,
                                                           ','.join(self.args)))
                if instance:
                    pymt.pymt_providers.append(instance)
コード例 #4
0
 def _set_id(self, id):
     ref = weakref.ref(self)
     if ref in _id_2_widget:
         del _id_2_widget[self._id]
     self._id = id
     if self._id:
         if ref in _id_2_widget:
             pymt_logger.warning("Widget: ID <%s> is already used ! Replacing with new one." % id)
         _id_2_widget[self._id] = ref
コード例 #5
0
 def load(filename):
     '''Load a sound, and return a Sound() instance'''
     ext = filename.split('.')[-1].lower()
     for classobj in SoundLoader._classes:
         if ext in classobj.extensions():
             return classobj(filename=filename)
     pymt_logger.warning('Audio: Unable to found a loader for <%s>' %
                         filename)
     return None
コード例 #6
0
ファイル: __init__.py プロジェクト: Markitox/pymt
 def load(filename):
     '''Load a sound, and return a Sound() instance'''
     ext = filename.split('.')[-1].lower()
     for classobj in SoundLoader._classes:
         if ext in classobj.extensions():
             return classobj(filename=filename)
     pymt_logger.warning('Audio: Unable to found a loader for <%s>' %
                              filename)
     return None
コード例 #7
0
 def _set_id(self, id):
     ref = weakref.ref(self)
     if ref in _id_2_widget:
         del _id_2_widget[self._id]
     self._id = id
     if self._id:
         if ref in _id_2_widget:
             pymt_logger.warning(
                 'Widget: ID <%s> is already used ! Replacing with new one.'
                 % id)
         _id_2_widget[self._id] = ref
コード例 #8
0
ファイル: textinput.py プロジェクト: estemenson/pymt
 def _window_on_key_down(self, key, scancode=None, unicode=None):
     try:
         # XXX Experimental, and work only with pygame.
         modifiers = getWindow().modifiers
         if scancode == 55 and 'ctrl' in modifiers:
             from pygame import SCRAP_TEXT
             from pygame import scrap
             scrap.init()
             text = scrap.get(SCRAP_TEXT)
             if text:
                 self.keyboard.text += text
             return True
     except Exception, e:
         pymt_logger.warning('Unable to use scrap module: %s' % str(e)) 
コード例 #9
0
ファイル: svg.py プロジェクト: Markitox/pymt
    def _set_filename(self, filename):
        global squirtle
        if squirtle is None:
            import squirtle
		# TODO remove this ugly code, improve loader for this
        try:
            pymt_logger.debug('SVGButton: loading %s' % filename)
            self.svg = squirtle.SVG(filename)
        except Exception, e:
            try:
                svgpath = os.path.join(pymt_data_dir, 'icons/svg')
                pymt_logger.exception('SVGButton: unable to load %s' % filename)
                pymt_logger.warning('SVGButton: trying %s' % (
                    svgpath + filename))
                self.svg = squirtle.SVG(os.path.join(svgpath, filename))
            except Exception, e:
                pymt_logger.exception('SVGButton: unable to load file %s' % filename)
コード例 #10
0
    def _set_filename(self, filename):
        global squirtle
        if squirtle is None:
            import squirtle
# TODO remove this ugly code, improve loader for this
        try:
            pymt_logger.debug('SVGButton: loading %s' % filename)
            self.svg = squirtle.SVG(filename)
        except Exception, e:
            try:
                svgpath = os.path.join(pymt_data_dir, 'icons/svg')
                pymt_logger.exception('SVGButton: unable to load %s' %
                                      filename)
                pymt_logger.warning('SVGButton: trying %s' %
                                    (svgpath + filename))
                self.svg = squirtle.SVG(os.path.join(svgpath, filename))
            except Exception, e:
                pymt_logger.exception('SVGButton: unable to load file %s' %
                                      filename)
コード例 #11
0
ファイル: squirtle.py プロジェクト: vidriloco/pymt
 def endCallback():
     if self.tess_style == GL_TRIANGLE_FAN:
         c = self.curr_shape.pop(0)
         p1 = self.curr_shape.pop(0)
         while self.curr_shape:
             p2 = self.curr_shape.pop(0)
             tlist.extend([c, p1, p2])
             p1 = p2
     elif self.tess_style == GL_TRIANGLE_STRIP:
         p1 = self.curr_shape.pop(0)
         p2 = self.curr_shape.pop(0)
         while self.curr_shape:
             p3 = self.curr_shape.pop(0)
             tlist.extend([p1, p2, p3])
             p1 = p2
             p2 = p3
     elif self.tess_style == GL_TRIANGLES:
         tlist.extend(self.curr_shape)
     else:
         pymt_logger.warning('Squirtle: Unrecognised tesselation style: %d' % (self.tess_style,))
     self.tess_style = None
     self.curr_shape = []
コード例 #12
0
ファイル: svg.py プロジェクト: Markitox/pymt
 def _set_filename(self, filename):
     global squirtle
     if squirtle is None:
         import squirtle
     # TODO remove this ugly code, improve loader for this
     try:
         if self.rawdata is None:
             pymt_logger.debug('SVG: loading %s' % filename)
             self.svg = squirtle.SVG(filename)
         else:
             pymt_logger.debug('SVG: loading %s from rawdata' % filename)
             self.svg = squirtle.SVG(filename=filename, rawdata=self.rawdata)
     except Exception:
         try:
             svgpath = os.path.join(pymt_data_dir, 'icons/svg')
             pymt_logger.exception('SVG: unable to load %s' % filename)
             pymt_logger.warning('SVG: trying %s' % (svgpath + filename))
             self.svg = squirtle.SVG(os.path.join(svgpath, filename))
         except Exception:
             pymt_logger.exception('SVG: unable to load file %s' % filename)
             self._filename = filename
             self.size = (self.svg.width, self.svg.height)
コード例 #13
0
ファイル: keybinding.py プロジェクト: triselectif/pymt
def _screenshot():
    import os
    import pygame
    from OpenGL.GL import glReadBuffer, glReadPixels, GL_RGB, GL_UNSIGNED_BYTE, GL_FRONT
    win = getWindow()
    glReadBuffer(GL_FRONT)
    data = glReadPixels(0, 0, win.width, win.height, GL_RGB, GL_UNSIGNED_BYTE)
    surface = pygame.image.fromstring(str(buffer(data)), win.size, 'RGB', True)
    filename = None
    for i in xrange(9999):
        path = os.path.join(os.getcwd(), 'screenshot%04d.jpg' % i)
        if not os.path.exists(path):
            filename = path
            break
    if filename:
        try:
            pygame.image.save(surface, filename)
            pymt_logger.info('KeyBinding: Screenshot saved at %s' % filename)
        except:
            pymt_logger.exception('KeyBinding: Unable to take a screenshot')
    else:
        pymt_logger.warning('KeyBinding: Unable to take screenshot, no more slot available')
コード例 #14
0
ファイル: keybinding.py プロジェクト: gavine199/pymt
def _screenshot():
    import os
    import pygame
    from OpenGL.GL import glReadBuffer, glReadPixels, GL_RGB, GL_UNSIGNED_BYTE, GL_FRONT
    win = getWindow()
    glReadBuffer(GL_FRONT)
    data = glReadPixels(0, 0, win.width, win.height, GL_RGB, GL_UNSIGNED_BYTE)
    surface = pygame.image.fromstring(str(buffer(data)), win.size, 'RGB', True)
    filename = None
    for i in xrange(9999):
        path = os.path.join(os.getcwd(), 'screenshot%04d.jpg' % i)
        if not os.path.exists(path):
            filename = path
            break
    if filename:
        try:
            pygame.image.save(surface, filename)
            pymt_logger.info('KeyBinding: Screenshot saved at %s' % filename)
        except:
            pymt_logger.exception('KeyBinding: Unable to take a screenshot')
    else:
        pymt_logger.warning(
            'KeyBinding: Unable to take screenshot, no more slot available')
コード例 #15
0
 def _set_filename(self, filename):
     global squirtle
     if squirtle is None:
         import squirtle
     # TODO remove this ugly code, improve loader for this
     try:
         if self.rawdata is None:
             pymt_logger.debug('SVG: loading %s' % filename)
             self.svg = squirtle.SVG(filename)
         else:
             pymt_logger.debug('SVG: loading %s from rawdata' % filename)
             self.svg = squirtle.SVG(filename=filename,
                                     rawdata=self.rawdata)
     except Exception:
         try:
             svgpath = os.path.join(pymt_data_dir, 'icons/svg')
             pymt_logger.exception('SVG: unable to load %s' % filename)
             pymt_logger.warning('SVG: trying %s' % (svgpath + filename))
             self.svg = squirtle.SVG(os.path.join(svgpath, filename))
         except Exception:
             pymt_logger.exception('SVG: unable to load file %s' % filename)
             self._filename = filename
             self.size = (self.svg.width, self.svg.height)
コード例 #16
0
 def endCallback():
     if self.tess_style == GL_TRIANGLE_FAN:
         c = self.curr_shape.pop(0)
         p1 = self.curr_shape.pop(0)
         while self.curr_shape:
             p2 = self.curr_shape.pop(0)
             tlist.extend([c, p1, p2])
             p1 = p2
     elif self.tess_style == GL_TRIANGLE_STRIP:
         p1 = self.curr_shape.pop(0)
         p2 = self.curr_shape.pop(0)
         while self.curr_shape:
             p3 = self.curr_shape.pop(0)
             tlist.extend([p1, p2, p3])
             p1 = p2
             p2 = p3
     elif self.tess_style == GL_TRIANGLES:
         tlist.extend(self.curr_shape)
     else:
         pymt_logger.warning(
             'Squirtle: Unrecognised tesselation style: %d' %
             (self.tess_style, ))
     self.tess_style = None
     self.curr_shape = []
コード例 #17
0
    def load_material_library(self, filename):
        material = None
        file = self.open_material_file(filename)

        for line in file:
            if line.startswith('#'):
                continue
            values = line.split()
            if not values:
                continue

            if values[0] == 'newmtl':
                material = Material(values[1])
                self.materials[material.name] = material
            elif material is None:
                pymt_logger.warning('OBJ: Expected "newmtl" in %s' % filename)
                continue

            try:
                if values[0] == 'Kd':
                    material.diffuse = map(float, values[1:])
                elif values[0] == 'Ka':
                    material.ambient = map(float, values[1:])
                elif values[0] == 'Ks':
                    material.specular = map(float, values[1:])
                elif values[0] == 'Ke':
                    material.emission = map(float, values[1:])
                elif values[0] == 'Ns':
                    material.shininess = float(values[1])
                elif values[0] == 'd':
                    material.opacity = float(values[1])
                elif values[0] == 'map_Kd':
                    try:
                        filename = ' '.join(values[1:])
                        material.texture = Image(filename).texture
                        material.texture.wrap = GL_REPEAT
                    except:
                        pymt_logger.warning('OBJ: Could not load texture %s' %
                                            values[1])
                        raise
            except:
                pymt_logger.warning('OBJ: Parse error in %s.' % filename)
                raise
コード例 #18
0
ファイル: obj.py プロジェクト: OpenWerkplek/pymt
    def load_material_library(self, filename):
        material = None
        file = self.open_material_file(filename)

        for line in file:
            if line.startswith('#'):
                continue
            values = line.split()
            if not values:
                continue

            if values[0] == 'newmtl':
                material = Material(values[1])
                self.materials[material.name] = material
            elif material is None:
                pymt_logger.warning('OBJ: Expected "newmtl" in %s' % filename)
                continue

            try:
                if values[0] == 'Kd':
                    material.diffuse = map(float, values[1:])
                elif values[0] == 'Ka':
                    material.ambient = map(float, values[1:])
                elif values[0] == 'Ks':
                    material.specular = map(float, values[1:])
                elif values[0] == 'Ke':
                    material.emission = map(float, values[1:])
                elif values[0] == 'Ns':
                    material.shininess = float(values[1])
                elif values[0] == 'd':
                    material.opacity = float(values[1])
                elif values[0] == 'map_Kd':
                    try:
                        filename = ' '.join(values[1:])
                        material.texture = Image(filename).texture
                        material.texture.wrap = GL_REPEAT
                    except:
                        pymt_logger.warning('OBJ: Could not load texture %s' % values[1])
                        raise
            except:
                pymt_logger.warning('OBJ: Parse error in %s.' % filename)
                raise
コード例 #19
0
ファイル: bezier.py プロジェクト: gavine199/pymt
 def tess_error(code):
     err = gluErrorString(code)
     pymt_logger.warning('BezierPath: GLU Tesselation Error: %s' % str(err))
コード例 #20
0
            return True

    size = property(EventDispatcher._get_size, _set_size)

    def _set_width(self, x):
        if super(MTWidget, self)._set_width(x):
            self.dispatch_event("on_resize", *self._size)
            return True

    width = property(EventDispatcher._get_width, _set_width)

    def _set_height(self, x):
        if super(MTWidget, self)._set_height(x):
            self.dispatch_event("on_resize", *self._size)
            return True

    height = property(EventDispatcher._get_height, _set_height)


# install acceleration
try:
    import types
    from pymt.accelerate import accelerate

    if accelerate is not None:
        MTWidget.on_update = types.MethodType(accelerate.widget_on_update, None, MTWidget)
        MTWidget.on_draw = types.MethodType(accelerate.widget_on_draw, None, MTWidget)
        MTWidget.collide_point = types.MethodType(accelerate.widget_collide_point, None, MTWidget)
except ImportError, e:
    pymt_logger.warning("Widget: Unable to use accelerate module <%s>" % e)
コード例 #21
0
ファイル: obj.py プロジェクト: OpenWerkplek/pymt
    def __init__(self, filename, file=None, path=None, compat=True):
        self.materials = {}
        self.meshes = {}        # Name mapping
        self.mesh_list = []     # Also includes anonymous meshes
        self.compat = compat

        if file is None:
            file = open(filename, 'r')

        if path is None:
            path = os.path.dirname(filename)
            self.path = path

        mesh = None
        group = None
        material = None

        vertices = [[0., 0., 0.]]
        normals = [[0., 0., 0.]]
        tex_coords = [[0., 0.]]

        for line in open(filename, 'r'):
            if line.startswith('#'):
                continue
            values = line.split()
            if not values:
                continue

            if values[0] == 'v':
                vertices.append(map(float, values[1:4]))
            elif values[0] == 'vn':
                normals.append(map(float, values[1:4]))
            elif values[0] == 'vt':
                tex_coords.append(map(float, values[1:3]))
            elif values[0] == 'mtllib':
                self.load_material_library(values[1])
            elif values[0] in ('usemtl', 'usemat'):
                material = self.materials.get(values[1], None)
                if material is None:
                    pymt_logger.warning('OBJ: Unknown material: %s' % values[1])
                if mesh is not None:
                    group = MaterialGroup(material)
                    mesh.groups.append(group)
            elif values[0] == 'o':
                mesh = Mesh(values[1])
                self.meshes[mesh.name] = mesh
                self.mesh_list.append(mesh)
                group = None
            elif values[0] == 'f':
                if mesh is None:
                    mesh = Mesh('')
                    self.mesh_list.append(mesh)
                if material is None:
                    material = Material('')
                if group is None:
                    group = MaterialGroup(material)
                    mesh.groups.append(group)

                # For fan triangulation, remember first and latest vertices
                v1 = None
                vlast = None
                for i, v in enumerate(values[1:]):
                    v_index, t_index, n_index = \
                        (map(int, [j or 0 for j in v.split('/')]) + [0, 0])[:3]
                    if v_index < 0:
                        v_index += len(vertices) - 1
                    if t_index < 0:
                        t_index += len(tex_coords) - 1
                    if n_index < 0:
                        n_index += len(normals) - 1
                    vertex = tex_coords[t_index] + \
                            normals[n_index] + \
                            vertices[v_index]

                    if i >= 3:
                        # Triangulate
                        group.vertices += v1 + vlast
                    group.vertices += vertex

                    if i == 0:
                        v1 = vertex
                    vlast = vertex
コード例 #22
0
    size = property(EventDispatcher._get_size, _set_size)

    def _set_width(self, x):
        if super(MTWidget, self)._set_width(x):
            self.dispatch_event('on_resize', *self._size)
            return True

    width = property(EventDispatcher._get_width, _set_width)

    def _set_height(self, x):
        if super(MTWidget, self)._set_height(x):
            self.dispatch_event('on_resize', *self._size)
            return True

    height = property(EventDispatcher._get_height, _set_height)


# install acceleration
try:
    import types
    from pymt.accelerate import accelerate
    if accelerate is not None:
        MTWidget.on_update = types.MethodType(accelerate.widget_on_update,
                                              None, MTWidget)
        MTWidget.on_draw = types.MethodType(accelerate.widget_on_draw, None,
                                            MTWidget)
        MTWidget.collide_point = types.MethodType(
            accelerate.widget_collide_point, None, MTWidget)
except ImportError, e:
    pymt_logger.warning('Widget: Unable to use accelerate module <%s>' % e)
コード例 #23
0
ファイル: markup.py プロジェクト: gavine199/pymt
 def _pop_style(self, k):
     if len(self._style_stack[k]) == 0:
         pymt_logger.warning('Label: pop style stack without push')
         return
     v = self._style_stack[k].pop()
     self.options[k] = v
コード例 #24
0
 def errorCallback(code):
     err = gluErrorString(code)
     pymt_logger.warning('Squirtle: GLU Tesselation Error: ' + err)
コード例 #25
0
ファイル: markup.py プロジェクト: Markitox/pymt
 def _pop_style(self, k):
     if len(self._style_stack[k]) == 0:
         pymt_logger.warning('Label: pop style stack without push')
         return
     v = self._style_stack[k].pop()
     self.options[k] = v
コード例 #26
0
ファイル: squirtle.py プロジェクト: vidriloco/pymt
 def errorCallback(code):
     err = gluErrorString(code)
     pymt_logger.warning('Squirtle: GLU Tesselation Error: ' + err)
コード例 #27
0
ファイル: vector.py プロジェクト: azoon/pymt
'''

__all__ = ['Vector', 'matrix_inv_mult', 'matrix_trans_mult', 'matrix_mult']

import math
from pymt.logger import pymt_logger

_use_numpy = False

try:
    import numpy
    _use_numpy = True
except:
    pymt_logger.warning('you do not have numpy installed.  Computing '
        'transformations for MTScatterWidget can get painfully '
        'slow without numpy. You should install numpy: '
        'http://numpy.scipy.org/')
    from matrix import Matrix, RowVector

class Vector(list):
    '''Represents a 2D vector.'''

    def __init__(self, *largs):
        if len(largs) == 1:
            super(Vector, self).__init__(largs[0])
        elif len(largs) == 2:
            super(Vector, self).__init__(largs)
        else:
            raise Exception('Invalid vector')

    def _get_x(self):
コード例 #28
0
 def warn(self, message):
     pymt_logger.warning('Squirtle: svg parser on %s: %s' %
                         (self.filename, message))
コード例 #29
0
ファイル: flipside.py プロジェクト: azoon/pymt
def main():
    # Parse command line options
    parser = OptionParser()
    parser.add_option('-d', '--directory',
                      action='store',
                      type='string',
                      default='~/Music',
                      dest='directory',
                      help="The directory to search for Music Files")
    parser.add_option('-s', '--scan',
                      action='store_true',
                      dest='scan',
                      help='Scan for music files and load them into the library')
    #parser.add_option('-r', '--reset'

    opts, args = parser.parse_args()
    if args:
        pymt_logger.warning("FlipSide doesn't know what to do with: %s")

    if opts.scan and not os.path.exists(opts.directory):
        pymt_logger.warning("Your specified music directory %s does not exist")
        sys.exit()

    w = MTWindow()

    k = MTKinetic()
    w.add_widget(k)

    p = MTScatterPlane()
    k.add_widget(p)

    player = PlayManager()
    p.add_widget(player)
            
    #SQL Stuff
    if not os.path.exists('library.sql'):
        #There is no library, lets generate one
        pymt_logger.warning("You don't have a music library!  To generate one, flipside.py -d /path/to/music -s")
        sys.exit()

    engine = sql.create_engine('sqlite:///library.sql', echo=False, echo_pool=False)

    metadata = MetaData()
    songs_table = Table('songs', metadata,
                        Column('id', Integer, primary_key=True),
                        Column('title', String),
                        Column('path', String),
                        Column('album', String),
                        Column('artist', String),
                        Column('date', String),
                        Column('tracknumber', Integer),
                        Column('albumart', String)
                        )

    metadata.create_all(engine)

    mapper(SQLSongMeta, songs_table)

    session = sessionmaker(bind=engine, echo_uow=False)()

    ## NEW METHOD##
    #Find all the music in MUSIC_DIR and put it in our SQL DB
    if opts.scan:
        music_tree = os.walk(os.path.expanduser(opts.directory))
        for branch in music_tree:
            try:
                cover = os.path.join(branch[0], filter(lambda x: get_file_ext(x) in IMAGE_TYPES, branch[2]).pop())
            except:
                cover = 'cover_default.jpg'

            for file in branch[2]:
                path = os.path.join(branch[0], file)
                comments = parse_comments(path)
                if comments:
                    comments['albumart'] = cover
                    song = SQLSongMeta(**comments)
                    session.add(song)

        session.commit()
        
    #Create a list of every album in the database
    #We use list(set()) so each album only appears once
    #The list comprehension is to get it out of the list tuple and out of unicode
    albums = [str(e[0]) for e in set(session.query(SQLSongMeta.album).all())]

    for album in albums:
        #Get a list of every song in the album "album" in the order that they appear on the CD
        songs = session.query(SQLSongMeta).filter(SQLSongMeta.album==album).order_by(SQLSongMeta.tracknumber)
        f = AlbumFloater(filename=songs[0].albumart, player=player, album=album, artist=songs[0].artist)
        for song in songs:
            #Add all the songs on the album to the floater
            f.list.add(KineticSong(meta=song))
        
        p.add_widget(f)

    runTouchApp()
コード例 #30
0
    def create_window(self, params):
        # force display to show (available only for fullscreen)
        displayidx = pymt.pymt_config.getint('graphics', 'display')
        if not 'SDL_VIDEO_FULLSCREEN_HEAD' in os.environ and displayidx != -1:
            os.environ['SDL_VIDEO_FULLSCREEN_HEAD'] = '%d' % displayidx

        # init some opengl, same as before.
        self.flags = pygame.HWSURFACE | pygame.OPENGL | pygame.DOUBLEBUF

        pygame.display.init()

        multisamples = pymt.pymt_config.getint('graphics', 'multisamples')

        if multisamples > 0:
            pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLEBUFFERS, 1)
            pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLESAMPLES,
                                            multisamples)
        pygame.display.gl_set_attribute(pygame.GL_DEPTH_SIZE, 16)
        pygame.display.gl_set_attribute(pygame.GL_STENCIL_SIZE, 1)
        pygame.display.gl_set_attribute(pygame.GL_ALPHA_SIZE, 8)
        pygame.display.set_caption('pymt')

        if params['position'] == 'auto':
            self._pos = None
        elif params['position'] == 'custom':
            self._pos = params['left'], params['top']
        else:
            raise ValueError('position token in configuration accept only '
                             '"auto" or "custom"')

        self._fullscreenmode = params['fullscreen']
        if self._fullscreenmode == 'fake':
            pymt_logger.debug('WinPygame: Set window to fake fullscreen mode')
            self.flags |= pygame.NOFRAME
            # if no position set, in fake mode, we always need to set the
            # position. so replace 0, 0.
            if self._pos is None:
                self._pos = (0, 0)
            os.environ['SDL_VIDEO_WINDOW_POS'] = '%d,%d' % self._pos

        elif self._fullscreenmode:
            pymt_logger.debug('WinPygame: Set window to fullscreen mode')
            self.flags |= pygame.FULLSCREEN

        elif self._pos is not None:
            os.environ['SDL_VIDEO_WINDOW_POS'] = '%d,%d' % self._pos

        # never stay with a None pos, application using w.center will be fired.
        self._pos = (0, 0)

        # prepare keyboard
        repeat_delay = int(pymt.pymt_config.get('keyboard', 'repeat_delay'))
        repeat_rate = float(pymt.pymt_config.get('keyboard', 'repeat_rate'))
        pygame.key.set_repeat(repeat_delay, int(1000. / repeat_rate))

        # set window icon before calling set_mode
        icon = pygame.image.load(
            pymt.pymt_config.get('graphics', 'window_icon'))
        pygame.display.set_icon(icon)

        # init ourself size + setmode
        # before calling on_resize
        self._size = params['width'], params['height']
        self._vsync = params['vsync']
        self._fps = float(params['fps'])

        # ensure the default fps will be 60 if vsync is actived
        # and if user didn't set any maximum fps.
        if self._vsync and self._fps <= 0:
            self._fps = 60.

        # try to use mode with multisamples
        try:
            self._pygame_set_mode()
        except pygame.error:
            if multisamples:
                pymt_logger.warning(
                    'WinPygame: Video: failed (multisamples=%d)' %
                    multisamples)
                pymt_logger.warning('Video: trying without antialiasing')
                pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLEBUFFERS,
                                                0)
                pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLESAMPLES,
                                                0)
                multisamples = 0
                self._pygame_set_mode()
            else:
                pymt_logger.warning('WinPygame: Video setup failed :-(')
                raise

        if multisamples:
            try:
                glEnable(GL_MULTISAMPLE_ARB)
            except Exception:
                pass

        super(MTWindowPygame, self).create_window(params)

        # set mouse visibility
        pygame.mouse.set_visible(
            pymt.pymt_config.getboolean('graphics', 'show_cursor'))

        # set rotation
        self.rotation = params['rotation']
コード例 #31
0
ファイル: __init__.py プロジェクト: rileydutton/pymt
    'spelling': ('enchant', 'osxappkit',),
    'clipboard': ('pygame', 'dummy'),
}

# Read environment
for option in pymt_options:
    key = 'PYMT_%s' % option.upper()
    if key in os.environ:
        try:
            if type(pymt_options[option]) in (list, tuple):
                pymt_options[option] = (str(os.environ[key]),)
            else:
                pymt_options[option] = os.environ[key].lower() in \
                    ('true', '1', 'yes', 'yup')
        except Exception:
            pymt_logger.warning('Core: Wrong value for %s'
                                'environment key' % key)
            pymt_logger.exception('')

# Extract all needed path in pymt
#: PyMT directory
pymt_base_dir        = os.path.dirname(sys.modules[__name__].__file__)
#: PyMT external libraries directory
pymt_libs_dir        = os.path.join(pymt_base_dir, 'lib')
#: PyMT modules directory
pymt_modules_dir     = os.path.join(pymt_base_dir, 'modules')
#: PyMT data directory
pymt_data_dir        = os.path.join(pymt_base_dir, 'data')
#: PyMT input provider directory
pymt_providers_dir   = os.path.join(pymt_base_dir, 'input', 'providers')
#: PyMT icons config path (don't remove last '')
pymt_icons_dir        = os.path.join(pymt_data_dir, 'icons', '')
コード例 #32
0
ファイル: base.py プロジェクト: OpenWerkplek/pymt
def runTouchApp(widget=None, slave=False):
    '''Static main function that starts the application loop.
    You got some magic things, if you are using argument like this :

    :Parameters:
        `<empty>`
            To make dispatching work, you need at least one
            input listener. If not, application will leave.
            (MTWindow act as an input listener)

        `widget`
            If you pass only a widget, a MTWindow will be created,
            and your widget will be added on the window as the root
            widget.

        `slave`
            No event dispatching are done. This will be your job.

        `widget + slave`
            No event dispatching are done. This will be your job, but
            we are trying to get the window (must be created by you before),
            and add the widget on it. Very usefull for embedding PyMT
            in another toolkit. (like Qt, check pymt-designed)

    '''

    global pymt_evloop

    # Ok, we got one widget, and we are not in slave mode
    # so, user don't create the window, let's create it for him !
    ### Not needed, since we always create window ?!
    #if not slave and widget:
    #    global pymt_window
    #    from ui.window import MTWindow
    #    pymt_window = MTWindow()

    # Instance all configured input
    for key, value in pymt.pymt_config.items('input'):
        pymt_logger.debug('Base: Create provider from %s' % (str(value)))

        # split value
        args = str(value).split(',', 1)
        if len(args) == 1:
            args.append('')
        provider_id, args = args
        provider = TouchFactory.get(provider_id)
        if provider is None:
            pymt_logger.warning('Base: Unknown <%s> provider' % \
                                str(provider_id))
            continue

        # create provider
        p = provider(key, args)
        if p:
            pymt_providers.append(p)

    pymt_evloop = TouchEventLoop()

    # add postproc modules
    for mod in pymt_postproc_modules.values():
        pymt_evloop.add_postproc_module(mod)

    # add main widget
    if widget and getWindow():
        getWindow().add_widget(widget)

    # start event loop
    pymt_logger.info('Base: Start application main loop')
    pymt_evloop.start()

    # we are in a slave mode, don't do dispatching.
    if slave:
        return

    # in non-slave mode, they are 2 issues
    #
    # 1. if user created a window, call the mainloop from window.
    #    This is due to glut, it need to be called with
    #    glutMainLoop(). Only FreeGLUT got a gluMainLoopEvent().
    #    So, we are executing the dispatching function inside
    #    a redisplay event.
    #
    # 2. if no window is created, we are dispatching event lopp
    #    ourself (previous behavior.)
    #
    try:
        if pymt_window is None:
            _run_mainloop()
        else:
            pymt_window.mainloop()
    finally:
        stopTouchApp()
コード例 #33
0
ファイル: win_pygame.py プロジェクト: OpenWerkplek/pymt
    def create_window(self, params):
        # force display to show (available only for fullscreen)
        displayidx = pymt.pymt_config.getint('graphics', 'display')
        if not 'SDL_VIDEO_FULLSCREEN_HEAD' in os.environ and displayidx != -1:
            os.environ['SDL_VIDEO_FULLSCREEN_HEAD'] = '%d' % displayidx

        # init some opengl, same as before.
        self.flags = pygame.HWSURFACE | pygame.OPENGL | pygame.DOUBLEBUF

        pygame.display.init()

        multisamples = pymt.pymt_config.getint('graphics', 'multisamples')

        if multisamples > 0:
            pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLEBUFFERS, 1)
            pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLESAMPLES, multisamples)
        pygame.display.gl_set_attribute(pygame.GL_DEPTH_SIZE, 16)
        pygame.display.gl_set_attribute(pygame.GL_STENCIL_SIZE, 1)
        pygame.display.gl_set_attribute(pygame.GL_ALPHA_SIZE, 8)
        pygame.display.set_caption('pymt')

        if params['position'] == 'auto':
            self._pos = None
        elif params['position'] == 'custom':
            self._pos = params['left'], params['top']
        else:
            raise ValueError('position token in configuration accept only '
                             '"auto" or "custom"')

        self._fullscreenmode = params['fullscreen']
        if self._fullscreenmode == 'fake':
            pymt_logger.debug('WinPygame: Set window to fake fullscreen mode')
            self.flags |= pygame.NOFRAME
            # if no position set, in fake mode, we always need to set the
            # position. so replace 0, 0.
            if self._pos is None:
                self._pos = (0, 0)
            os.environ['SDL_VIDEO_WINDOW_POS'] = '%d,%d' % self._pos

        elif self._fullscreenmode:
            pymt_logger.debug('WinPygame: Set window to fullscreen mode')
            self.flags |= pygame.FULLSCREEN

        elif self._pos is not None:
            os.environ['SDL_VIDEO_WINDOW_POS'] = '%d,%d' % self._pos

        # never stay with a None pos, application using w.center will be fired.
        self._pos = (0, 0)

        # prepare keyboard
        repeat_delay = int(pymt.pymt_config.get('keyboard', 'repeat_delay'))
        repeat_rate = float(pymt.pymt_config.get('keyboard', 'repeat_rate'))
        pygame.key.set_repeat(repeat_delay, int(1000. / repeat_rate))

        # set window icon before calling set_mode
        icon = pygame.image.load(pymt.pymt_config.get('graphics', 'window_icon'))
        pygame.display.set_icon(icon)

        # init ourself size + setmode
        # before calling on_resize
        self._size = params['width'], params['height']
        self._vsync = params['vsync']
        self._fps = float(params['fps'])

        # ensure the default fps will be 60 if vsync is actived
        # and if user didn't set any maximum fps.
        if self._vsync and self._fps <= 0:
            self._fps = 60.

        # try to use mode with multisamples
        try:
            self._pygame_set_mode()
        except pygame.error:
            if multisamples:
                pymt_logger.warning('WinPygame: Video: failed (multisamples=%d)' %
                                    multisamples)
                pymt_logger.warning('Video: trying without antialiasing')
                pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLEBUFFERS, 0)
                pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLESAMPLES, 0)
                multisamples = 0
                self._pygame_set_mode()
            else:
                pymt_logger.warning('WinPygame: Video setup failed :-(')
                raise

        if multisamples:
            try:
                glEnable(GL_MULTISAMPLE_ARB)
            except Exception:
                pass

        super(MTWindowPygame, self).create_window(params)

        # set mouse visibility
        pygame.mouse.set_visible(
            pymt.pymt_config.getboolean('graphics', 'show_cursor'))

        # set rotation
        self.rotation = params['rotation']
コード例 #34
0
    def create_window(self, params):
        # force display to show (available only for fullscreen)
        displayidx = pymt.pymt_config.getint('graphics', 'display')
        if not 'SDL_VIDEO_FULLSCREEN_HEAD' in os.environ and displayidx != -1:
            os.environ['SDL_VIDEO_FULLSCREEN_HEAD'] = '%d' % displayidx

        # init some opengl, same as before.
        self.flags = pygame.HWSURFACE | pygame.OPENGL | pygame.DOUBLEBUF

        pygame.display.init()

        multisamples = pymt.pymt_config.getint('graphics', 'multisamples')

        if multisamples > 0:
            pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLEBUFFERS, 1)
            pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLESAMPLES, multisamples)
        pygame.display.gl_set_attribute(pygame.GL_DEPTH_SIZE, 16)
        pygame.display.gl_set_attribute(pygame.GL_STENCIL_SIZE, 1)
        pygame.display.gl_set_attribute(pygame.GL_ALPHA_SIZE, 8)
        pygame.display.set_caption('pymt')

        self._fullscreenmode = params['fullscreen']
        if self._fullscreenmode == 'fake':
            pymt_logger.debug('WinPygame: Set window to fake fullscreen mode')
            self.flags |= pygame.NOFRAME
            os.environ['SDL_VIDEO_WINDOW_POS'] = '0,0'

        elif self._fullscreenmode:
            pymt_logger.debug('WinPygame: Set window to fullscreen mode')
            self.flags |= pygame.FULLSCREEN


        # init ourself size + setmode
        # before calling on_resize
        self._size = params['width'], params['height']
        self._vsync = params['vsync']

        # try to use mode with multisamples
        try:
            self._pygame_set_mode()
        except pygame.error:
            if multisamples:
                pymt_logger.warning('WinPygame: Video: failed (multisamples=%d)' %
                                    multisamples)
                pymt_logger.warning('Video: trying without antialiasing')
                pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLEBUFFERS, 0)
                pygame.display.gl_set_attribute(pygame.GL_MULTISAMPLESAMPLES, 0)
                multisamples = 0
                self._pygame_set_mode()
            else:
                pymt_logger.warning('WinPygame: Video setup failed :-(')
                raise

        if multisamples:
            try:
                glEnable(GL_MULTISAMPLE_ARB)
            except Exception:
                pass

        super(MTWindowPygame, self).create_window(params)

        # set mouse visibility
        pygame.mouse.set_visible(
            pymt.pymt_config.getboolean('graphics', 'show_cursor'))
コード例 #35
0
ファイル: config.py プロジェクト: gavine199/pymt
    pymt_config_version = pymt_config.getdefault('pymt', 'config_version', 0)

    # Add defaults section
    pymt_config.adddefaultsection('pymt')
    pymt_config.adddefaultsection('keyboard')
    pymt_config.adddefaultsection('graphics')
    pymt_config.adddefaultsection('input')
    pymt_config.adddefaultsection('dump')
    pymt_config.adddefaultsection('modules')
    pymt_config.adddefaultsection('widgets')

    # Upgrade default configuration until having the current version
    need_save = False
    if pymt_config_version != PYMT_CONFIG_VERSION:
        pymt_logger.warning('Config: Older configuration version detected'
                            '(%d instead of %d)' % (
                            pymt_config_version, PYMT_CONFIG_VERSION))
        pymt_logger.warning('Config: Upgrading configuration in progress.')
        need_save = True

    while pymt_config_version < PYMT_CONFIG_VERSION:
        pymt_logger.debug('Config: Upgrading from %d' % pymt_config_version)

        # Versionning introduced in version 0.4.
        if pymt_config_version == 0:

            pymt_config.setdefault('pymt', 'show_fps', '0')
            pymt_config.setdefault('pymt', 'log_level', 'info')
            pymt_config.setdefault('pymt', 'double_tap_time', '250')
            pymt_config.setdefault('pymt', 'double_tap_distance', '20')
            pymt_config.setdefault('pymt', 'enable_simulator', '1')
コード例 #36
0
    pymt_config_version = pymt_config.getdefault('pymt', 'config_version', 0)

    # Add defaults section
    pymt_config.adddefaultsection('pymt')
    pymt_config.adddefaultsection('keyboard')
    pymt_config.adddefaultsection('graphics')
    pymt_config.adddefaultsection('input')
    pymt_config.adddefaultsection('dump')
    pymt_config.adddefaultsection('modules')
    pymt_config.adddefaultsection('widgets')

    # Upgrade default configuration until having the current version
    need_save = False
    if pymt_config_version != PYMT_CONFIG_VERSION:
        pymt_logger.warning('Config: Older configuration version detected'
                            '(%d instead of %d)' % (
                            pymt_config_version, PYMT_CONFIG_VERSION))
        pymt_logger.warning('Config: Upgrading configuration in progress.')
        need_save = True

    while pymt_config_version < PYMT_CONFIG_VERSION:
        pymt_logger.debug('Config: Upgrading from %d' % pymt_config_version)

        # Versionning introduced in version 0.4.
        if pymt_config_version == 0:

            pymt_config.setdefault('pymt', 'show_fps', '0')
            pymt_config.setdefault('pymt', 'log_level', 'info')
            pymt_config.setdefault('pymt', 'double_tap_time', '250')
            pymt_config.setdefault('pymt', 'double_tap_distance', '20')
            pymt_config.setdefault('pymt', 'enable_simulator', '1')
コード例 #37
0
    def __init__(self, filename, file=None, path=None, compat=True):
        self.materials = {}
        self.meshes = {}  # Name mapping
        self.mesh_list = []  # Also includes anonymous meshes
        self.compat = compat

        if file is None:
            file = open(filename, 'r')

        if path is None:
            path = os.path.dirname(filename)
            self.path = path

        mesh = None
        group = None
        material = None

        vertices = [[0., 0., 0.]]
        normals = [[0., 0., 0.]]
        tex_coords = [[0., 0.]]

        for line in open(filename, 'r'):
            if line.startswith('#'):
                continue
            values = line.split()
            if not values:
                continue

            if values[0] == 'v':
                vertices.append(map(float, values[1:4]))
            elif values[0] == 'vn':
                normals.append(map(float, values[1:4]))
            elif values[0] == 'vt':
                tex_coords.append(map(float, values[1:3]))
            elif values[0] == 'mtllib':
                self.load_material_library(values[1])
            elif values[0] in ('usemtl', 'usemat'):
                material = self.materials.get(values[1], None)
                if material is None:
                    pymt_logger.warning('OBJ: Unknown material: %s' %
                                        values[1])
                if mesh is not None:
                    group = MaterialGroup(material)
                    mesh.groups.append(group)
            elif values[0] == 'o':
                mesh = Mesh(values[1])
                self.meshes[mesh.name] = mesh
                self.mesh_list.append(mesh)
                group = None
            elif values[0] == 'f':
                if mesh is None:
                    mesh = Mesh('')
                    self.mesh_list.append(mesh)
                if material is None:
                    material = Material('')
                if group is None:
                    group = MaterialGroup(material)
                    mesh.groups.append(group)

                # For fan triangulation, remember first and latest vertices
                v1 = None
                vlast = None
                for i, v in enumerate(values[1:]):
                    v_index, t_index, n_index = \
                        (map(int, [j or 0 for j in v.split('/')]) + [0, 0])[:3]
                    if v_index < 0:
                        v_index += len(vertices) - 1
                    if t_index < 0:
                        t_index += len(tex_coords) - 1
                    if n_index < 0:
                        n_index += len(normals) - 1
                    vertex = tex_coords[t_index] + \
                            normals[n_index] + \
                            vertices[v_index]

                    if i >= 3:
                        # Triangulate
                        group.vertices += v1 + vlast
                    group.vertices += vertex

                    if i == 0:
                        v1 = vertex
                    vlast = vertex
コード例 #38
0
import os
import pymt
from time import sleep, time
from pymt.clock import getClock
from pymt.ui.window import BaseWindow
from pymt.exceptions import pymt_exception_manager, ExceptionManager
from pymt.logger import pymt_logger
from pymt.base import stopTouchApp, getEventLoop
from OpenGL.GL import glEnable
from OpenGL.GL.ARB.multisample import GL_MULTISAMPLE_ARB

try:
    import pygame
except:
    pymt_logger.warning('WinPygame: Pygame is not installed !')
    raise


class MTWindowPygame(BaseWindow):
    def create_window(self, params):
        # force display to show (available only for fullscreen)
        displayidx = pymt.pymt_config.getint('graphics', 'display')
        if not 'SDL_VIDEO_FULLSCREEN_HEAD' in os.environ and displayidx != -1:
            os.environ['SDL_VIDEO_FULLSCREEN_HEAD'] = '%d' % displayidx

        # init some opengl, same as before.
        self.flags = pygame.HWSURFACE | pygame.OPENGL | pygame.DOUBLEBUF

        pygame.display.init()
コード例 #39
0
__all__ = ('MTWindowPygame', )

import os
import pymt
from pymt.ui.window import BaseWindow
from pymt.exceptions import pymt_exception_manager, ExceptionManager
from pymt.logger import pymt_logger
from pymt.base import stopTouchApp, getEventLoop
from OpenGL.GL import glEnable
from OpenGL.GL.ARB.multisample import GL_MULTISAMPLE_ARB

try:
    import pygame
except:
    pymt_logger.warning('WinPygame: Pygame is not installed !')
    raise

class MTWindowPygame(BaseWindow):
    def create_window(self, params):
        # force display to show (available only for fullscreen)
        displayidx = pymt.pymt_config.getint('graphics', 'display')
        if not 'SDL_VIDEO_FULLSCREEN_HEAD' in os.environ and displayidx != -1:
            os.environ['SDL_VIDEO_FULLSCREEN_HEAD'] = '%d' % displayidx

        # init some opengl, same as before.
        self.flags = pygame.HWSURFACE | pygame.OPENGL | pygame.DOUBLEBUF

        pygame.display.init()

        multisamples = pymt.pymt_config.getint('graphics', 'multisamples')
コード例 #40
0
 def add_widget(self, widget):
     pymt_logger.warning(
         'MTContainer: cannot add MTWidget, only take BaseObject')
コード例 #41
0
def runTouchApp(widget=None, slave=False):
    '''Static main function that starts the application loop.
    You got some magic things, if you are using argument like this :

    :Parameters:
        `<empty>`
            To make dispatching work, you need at least one
            input listener. If not, application will leave.
            (MTWindow act as an input listener)

        `widget`
            If you pass only a widget, a MTWindow will be created,
            and your widget will be added on the window as the root
            widget.

        `slave`
            No event dispatching are done. This will be your job.

        `widget + slave`
            No event dispatching are done. This will be your job, but
            we are trying to get the window (must be created by you before),
            and add the widget on it. Very usefull for embedding PyMT
            in another toolkit. (like Qt, check pymt-designed)

    '''

    global pymt_evloop

    # Ok, we got one widget, and we are not in slave mode
    # so, user don't create the window, let's create it for him !
    ### Not needed, since we always create window ?!
    #if not slave and widget:
    #    global pymt_window
    #    from ui.window import MTWindow
    #    pymt_window = MTWindow()

    # Instance all configured input
    for key, value in pymt.pymt_config.items('input'):
        pymt_logger.debug('Base: Create provider from %s' % (str(value)))

        # split value
        args = str(value).split(',', 1)
        if len(args) == 1:
            args.append('')
        provider_id, args = args
        provider = TouchFactory.get(provider_id)
        if provider is None:
            pymt_logger.warning('Base: Unknown <%s> provider' % \
                                str(provider_id))
            continue

        # create provider
        p = provider(key, args)
        if p:
            pymt_providers.append(p)

    pymt_evloop = TouchEventLoop()

    # add postproc modules
    for mod in pymt_postproc_modules.values():
        pymt_evloop.add_postproc_module(mod)

    # add main widget
    if widget and getWindow():
        getWindow().add_widget(widget)

    # start event loop
    pymt_logger.info('Base: Start application main loop')
    pymt_evloop.start()

    # we are in a slave mode, don't do dispatching.
    if slave:
        return

    # in non-slave mode, they are 2 issues
    #
    # 1. if user created a window, call the mainloop from window.
    #    This is due to glut, it need to be called with
    #    glutMainLoop(). Only FreeGLUT got a gluMainLoopEvent().
    #    So, we are executing the dispatching function inside
    #    a redisplay event.
    #
    # 2. if no window is created, we are dispatching event lopp
    #    ourself (previous behavior.)
    #
    try:
        if pymt_window is None:
            _run_mainloop()
        else:
            pymt_window.mainloop()
    finally:
        stopTouchApp()
コード例 #42
0
ファイル: event.py プロジェクト: Markitox/pymt
                    raise
                for p in p2:
                    if p is None:
                        continue
                    w2.__setattr__(p, type(w2.__getattribute__(p))(
                        func(largs[p2.index(p)])))
            else:
                dtype = type(w2.__getattribute__(p2))
                try:
                    if len(largs) == 1:
                        w2.__setattr__(p2, dtype(func(*largs)))
                    else:
                        w2.__setattr__(p2, dtype(func(largs)))
                except Exception:
                    pymt_logger.exception('Widget: cannot connect with'
                                          'different size')
                    raise
        if p2 is None:
            self.push_handlers(**{p1: w2})
        else:
            self.push_handlers(**{p1: lambda_connect})

# install acceleration
try:
    from pymt.accelerate import accelerate
    if accelerate is not None:
        EventDispatcher.dispatch_event = types.MethodType(
            accelerate.eventdispatcher_dispatch_event, None, EventDispatcher)
except ImportError, e:
    pymt_logger.warning('Event: Unable to use accelerate module <%s>' % e)
コード例 #43
0
ファイル: __init__.py プロジェクト: gavine199/pymt
    ),
    'clipboard': ('pygame', 'dummy'),
}

# Read environment
for option in pymt_options:
    key = 'PYMT_%s' % option.upper()
    if key in os.environ:
        try:
            if type(pymt_options[option]) in (list, tuple):
                pymt_options[option] = (str(os.environ[key]), )
            else:
                pymt_options[option] = os.environ[key].lower() in \
                    ('true', '1', 'yes', 'yup')
        except Exception:
            pymt_logger.warning('Core: Wrong value for %s'
                                'environment key' % key)
            pymt_logger.exception('')

# Extract all needed path in pymt
#: PyMT directory
pymt_base_dir = os.path.dirname(sys.modules[__name__].__file__)
#: PyMT external libraries directory
pymt_libs_dir = os.path.join(pymt_base_dir, 'lib')
#: PyMT modules directory
pymt_modules_dir = os.path.join(pymt_base_dir, 'modules')
#: PyMT data directory
pymt_data_dir = os.path.join(pymt_base_dir, 'data')
#: PyMT input provider directory
pymt_providers_dir = os.path.join(pymt_base_dir, 'input', 'providers')
#: PyMT icons config path (don't remove last '')
pymt_icons_dir = os.path.join(pymt_data_dir, 'icons', '')
コード例 #44
0
ファイル: scatter.py プロジェクト: bernt/pymt
'''
Scatter package: provide lot of widgets based on scatter (base, svg, plane, image...)
'''

__all__ = ('MTScatterWidget', 'MTScatterSvg', 'MTScatterPlane',
           'MTScatterImage')

import pymt
from pymt.logger import pymt_logger
from numpy import array, dot, float64

try:
    from pymt.c_ext._transformations import *
except ImportError:
    pymt_logger.warning('Unable to import accelerated transformation, falling back to plain python.');
    from pymt.lib.transformations import *

from math import atan,cos, radians, degrees
from OpenGL.GL import *

from pymt.graphx import drawRectangle, drawCSSRectangle, gx_matrix, gx_matrix_identity, set_color, \
    drawTexturedRectangle, gx_blending, drawTriangle
from pymt.vector import Vector, matrix_mult, matrix_inv_mult
from pymt.utils import deprecated, serialize_numpy, deserialize_numpy
from pymt.ui.animation import Animation, AnimationAlpha
from pymt.ui.factory import MTWidgetFactory
from pymt.ui.widgets.widget import MTWidget
from pymt.ui.widgets.svg import MTSvg


class MTScatter(MTWidget):
コード例 #45
0
ファイル: squirtle.py プロジェクト: vidriloco/pymt
 def warn(self, message):
     pymt_logger.warning('Squirtle: svg parser on %s: %s' % (self.filename, message))
コード例 #46
0
ファイル: container.py プロジェクト: Markitox/pymt
 def add_widget(self, widget):
     pymt_logger.warning('MTContainer: cannot add MTWidget, only take BaseObject')