Example #1
0
 def __init__(self, appobj, aetes):
     if not self._codecs:
         self.__class__._codecs = aem.Codecs()
         self.__class__._terminology = TerminologyTableBuilder(
             'rb-appscript')
     self.appobj = appobj
     self.typebycode, typebyname, self.referencebycode, referencebyname = \
       self._terminology.tablesforaetes(aetes)
     f = _Formatter(self.typebycode,
                    self.referencebycode,
                    codecs=self._codecs)
     constructor = appobj.AS_appdata.constructor
     identity = appobj.AS_appdata.identifier
     if constructor == 'path':
         self.root = 'app(%s)' % f.format(identity)
     elif constructor == 'pid':
         self.root = 'app.by_pid(%s)' % f.format(identity)
     elif constructor == 'url':
         self.root = 'app.by_url(%s)' % f.format(identity)
     elif constructor == 'current':
         self.root = 'app.current'
     else:  # note: 'aemapp' constructor is unsupported
         raise RuntimeError, 'Unknown constructor: %r' % constructor
Example #2
0
""" eventformatter -- creates custom sendprocs to render Apple events in appscript syntax """

import traceback

from Foundation import NSBundle

from aem import kae, ae
import appscript, aem, mactypes
import appscript.reference

import pythonrenderer, rubyrenderer, objcrenderer
from constants import *

_standardCodecs = aem.Codecs()

_appCache = {}

#######


def _unpackEventAttributes(event):
    atts = []
    for code in [
            kae.keyEventClassAttr, kae.keyEventIDAttr, kae.keyAddressAttr
    ]:
        atts.append(
            _standardCodecs.unpack(event.getattr(code, kae.typeWildCard)))
    return atts[0].code + atts[1].code, atts[2]


def makeCustomSendProc(addResultFn, isLive):
Example #3
0
from aem import kae
from aem.ae import newlist, newrecord, newdesc, MacOSError
from aem.aemreference import InsertionSpecifier, Test

from genericreference import GenericReference
import terminology
from terminology import kProperty, kElement
from referencerenderer import renderreference
from keywordwrapper import Keyword

######################################################################
# PRIVATE
######################################################################
# Codecs

_lowlevelcodecs = aem.Codecs()

###################################
# Application-specific data/codecs


class AppData(aem.Codecs):
    """Provides application-specific:
		- aem.Application instance
		- name-code terminology translation tables
		- pack/unpack methods
		- help system
	"""

    #######
    # constants, etc.
Example #4
0
#!/usr/bin/python

import types, datetime, os.path, re

import aem, appscript
from appscript import mactypes
from osaterminology import makeidentifier

from osaterminology.tables.tablebuilder import *

#######

_formatterCache = {}
_self = aem.Application()
_codecs = aem.Codecs()
_convert = makeidentifier.getconverter('objc-appscript')
_terminology = TerminologyTableBuilder('objc-appscript')

######################################################################
# PRIVATE
######################################################################


class _Formatter:
    def __init__(self, typebycode, referencebycode, appvar, prefix, indent=''):
        self._referencebycode = referencebycode
        self._typebycode = typebycode
        self._prefix = prefix
        self._indent = indent
        self._valueFormatters = {
            types.NoneType: self.formatNone,
Example #5
0
 def setUp(self):
     self.c = aem.Codecs()
#!/usr/local/bin/python

import unittest
import aem

DefaultCodecs = aem.Codecs()


class TC_AEMReferences(unittest.TestCase):
    def test_referenceForms(self):
        for val, res, unpackedVersion in [
          [aem.app.property("ctxt"), "app.property('ctxt')", None],

          [aem.app.elements("docu"), "app.elements('docu')", None],

          [aem.app.elements("docu").byindex(1),
            "app.elements('docu').byindex(1)", None],
          [aem.app.elements("docu").byname("foo"),
            "app.elements('docu').byname('foo')", None],
          [aem.app.elements("docu").byid(300),
            "app.elements('docu').byid(300)", None],

          [aem.app.elements("docu").next("docu"),
            "app.elements('docu').next('docu')", None],
          [aem.app.elements("docu").previous("docu"),
            "app.elements('docu').previous('docu')", None],

          [aem.app.elements("docu").first, "app.elements('docu').first", None],
          [aem.app.elements("docu").middle, "app.elements('docu').middle", None],
          [aem.app.elements("docu").last, "app.elements('docu').last", None],
          [aem.app.elements("docu").any, "app.elements('docu').any", None],
Example #7
0
from CarbonX import kAE
from CarbonX.AE import AECreateList, AECreateDesc
import aem

from genericreference import GenericReference
from terminology import tablesforapp, tablesfordata, kProperty, kElement, kCommand
from referencerenderer import renderreference
from keywordwrapper import Keyword

######################################################################
# PRIVATE
######################################################################
# Codecs

_lowLevelCodecs = aem.Codecs()

# Terminology-aware pack/unpack functions used by the AppData class.
# These replace the default aem pack/unpack functions, which don't understand appscript Keyword and Reference objects.


def _packDict(val, codec):
    # Pack dictionary whose keys are strings (e.g. 'foo'), Keywords (e.g. k.name) or AETypes (e.g. AEType('pnam').
    record = AECreateList('', True)
    usrf = None
    for key, value in val.items():
        if isinstance(key, Keyword):
            try:
                keyCode = codec.typebyname[key.AS_name].code
            except KeyError:
                raise KeyError, "Unknown Keyword: k.%s" % key.AS_name
Example #8
0
class _Base:
	_aemCodecs = _aem.Codecs()
	
	def _encfmt(self, *args):
		return _fmt(*[self._aemCodecs.unpack(self._codecs.pack(arg)) for arg in args])