コード例 #1
0
ファイル: test_macos.py プロジェクト: AkshayJoshi/python
    def testOpenRF(self):
        try:
            fp = open(test_support.TESTFN, 'w')
            fp.write('hello world\n')
            fp.close()

            rfp = MacOS.openrf(test_support.TESTFN, '*wb')
            rfp.write('goodbye world\n')
            rfp.close()


            fp = open(test_support.TESTFN, 'r')
            data = fp.read()
            fp.close()
            self.assertEquals(data, 'hello world\n')

            rfp = MacOS.openrf(test_support.TESTFN, '*rb')
            data = rfp.read(100)
            data2 = rfp.read(100)
            rfp.close()
            self.assertEquals(data, 'goodbye world\n')
            self.assertEquals(data2, '')


        finally:
            os.unlink(test_support.TESTFN)
コード例 #2
0
ファイル: shell.py プロジェクト: muromec/qtopia-ezx
    def _platform_cp(self, source_path, destination_path):
        ## copy file data
        source = self._open(source_path, 'rb')
        destination = self._open(destination_path, 'wb')

        self._raw_copy(source, destination)
        source.close()
        destination.close()

        ## copy resource file data
        source = MacOS.openrf(source_path, '*rb')
        destination = MacOS.openrf(destination_path, '*wb')
        self._raw_copy(source, destination)
        source.close()
        destination.close()

        ## set creator/type on the Macintosh
        source_spec = macfs.FSSpec(source_path)
        (creator, type) = source_spec.GetCreatorType()
        destination_spec = macfs.FSSpec(destination_path)
        destination_spec.SetCreatorType(creator, type)

        ## copy file mode/time bits
        st = os.stat(source_path)
        mtime = st[stat.ST_MTIME]
        destination_spec.SetDates(mtime, mtime, mtime)
コード例 #3
0
 def compareData(self, isrf, data):
     if isrf:
         fp = MacOS.openrf(TESTFN2, '*rb')
     else:
         fp = open(TESTFN2, 'rb')
     filedata = fp.read(1000)
     self.assertEqual(data, filedata)
コード例 #4
0
 def setUp(self):
     fp = open(test_support.TESTFN, 'w')
     fp.write('hello world\n')
     fp.close()
     rfp = MacOS.openrf(test_support.TESTFN, '*wb')
     rfp.write('goodbye world\n')
     rfp.close()
コード例 #5
0
 def compareData(self):
     fp = open(test_support.TESTFN, 'r')
     data1 = fp.read()
     fp.close()
     fp = open(TESTFN2, 'r')
     data2 = fp.read()
     fp.close()
     if data1 != data2:
         return 'Data forks differ'
     rfp = MacOS.openrf(test_support.TESTFN, '*rb')
     data1 = rfp.read(1000)
     rfp.close()
     rfp = MacOS.openrf(TESTFN2, '*rb')
     data2 = rfp.read(1000)
     rfp.close()
     if data1 != data2:
         return 'Resource forks differ'
     return ''
コード例 #6
0
def openrf(path, mode):

    if have_macos:
        try:
            return MacOS.openrf(mac_path(path), "*" + mode)
        except MacOS.Error:
            pass

    try:
        return open(os.path.join(path, "..namedfork", "rsrc"), mode)
    except IOError:
        pass

    return None
コード例 #7
0
ファイル: kmagic.py プロジェクト: zinedine/pyMagic
 def fromFile(self, path):
     s = os.lstat(path)
     
     self.md5 = ''
     self.rfmd5 = ''
     
     # Find resource fork size manually
     if S_ISREG(s[ST_MODE]):
         rf = MacOS.openrf(path, 'r')
         rf.seek(0, 2) #seeks to end of file
         self.rfSize = rf.tell()
         
         rfNumBytes = int(self.rfSize)
         
         if gUseMD5 and rfNumBytes > 0:
             rf.seek(0)
             h = hashlib.md5()
             h.update(rf.read(rfNumBytes))
             self.rfmd5 = h.hexdigest()
         
         rf.close()
     else:
         self.rfSize = 0
         
     # Find data md5
     if gUseMD5 and S_ISREG(s[ST_MODE]) and s[ST_SIZE] > 0:
         f = open(path, 'r')
         h = hashlib.md5()
         
         d = f.read(4096)
         while d:
             h.update(d)
             d = f.read(4096)
         
         #h.update(f.read())
         self.md5 = h.hexdigest()
     
     self.name = path
     self.mode = s[ST_MODE]
     self.uid = s[ST_UID]
     self.gid = s[ST_GID]
     self.size = s[ST_SIZE]
     self.creationDate = s[ST_CTIME]
     self.modificationDate = s[ST_MTIME]
     
     if S_ISLNK(s[ST_MODE]):
         self.linkPath = os.readlink(path)
     else:
         self.linkPath = ''
コード例 #8
0
ファイル: applesingle.py プロジェクト: alkorzt/pypy
 def tofile(self, path, resonly=False):
     outfile = open(path, "wb")
     data = False
     if resonly:
         if self.resourcefork is None:
             raise Error, "No resource fork found"
         fp = open(path, "wb")
         fp.write(self.resourcefork)
         fp.close()
     elif self.resourcefork is None and self.datafork is None:
         raise Error, "No useful forks found"
     else:
         if self.datafork is not None:
             fp = open(path, "wb")
             fp.write(self.datafork)
             fp.close()
         if self.resourcefork is not None:
             fp = MacOS.openrf(path, "*wb")
             fp.write(self.resourcefork)
             fp.close()
コード例 #9
0
ファイル: _app_ex.py プロジェクト: wangdyna/wxPython
    def __init__(self,
                 redirect=_defRedirect,
                 filename=None,
                 useBestVisual=False,
                 clearSigInt=True):
        """
        Construct a ``wx.App`` object.  

        :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be
            redirected?  Defaults to True on Windows and Mac, False
            otherwise.  If `filename` is None then output will be
            redirected to a window that pops up as needed.  (You can
            control what kind of window is created for the output by
            resetting the class variable ``outputWindowClass`` to a
            class of your choosing.)

        :param filename: The name of a file to redirect output to, if
            redirect is True.

        :param useBestVisual: Should the app try to use the best
            available visual provided by the system (only relevant on
            systems that have more than one visual.)  This parameter
            must be used instead of calling `SetUseBestVisual` later
            on because it must be set before the underlying GUI
            toolkit is initialized.

        :param clearSigInt: Should SIGINT be cleared?  This allows the
            app to terminate upon a Ctrl-C in the console like other
            GUI apps will.

        :note: You should override OnInit to do applicaition
            initialization to ensure that the system, toolkit and
            wxWidgets are fully initialized.
        """
        wx.PyApp.__init__(self)

        if wx.Platform == "__WXMAC__":
            try:
                import MacOS
                if not MacOS.WMAvailable():
                    print """\
This program needs access to the screen. Please run with 'pythonw',
not 'python', and only when you are logged in on the main display of
your Mac."""
                    _sys.exit(1)
            except SystemExit:
                raise
            except:
                pass

        # This has to be done before OnInit
        self.SetUseBestVisual(useBestVisual)

        # Set the default handler for SIGINT.  This fixes a problem
        # where if Ctrl-C is pressed in the console that started this
        # app then it will not appear to do anything, (not even send
        # KeyboardInterrupt???)  but will later segfault on exit.  By
        # setting the default handler then the app will exit, as
        # expected (depending on platform.)
        if clearSigInt:
            try:
                import signal
                signal.signal(signal.SIGINT, signal.SIG_DFL)
            except:
                pass

        # Save and redirect the stdio to a window?
        self.stdioWin = None
        self.saveStdio = (_sys.stdout, _sys.stderr)
        if redirect:
            self.RedirectStdio(filename)

        # Use Python's install prefix as the default
        wx.StandardPaths.Get().SetInstallPrefix(_sys.prefix)

        # This finishes the initialization of wxWindows and then calls
        # the OnInit that should be present in the derived class
        self._BootstrapApp()
コード例 #10
0
ファイル: errors.py プロジェクト: wkschwartz/appscript
def errorMessage(errorNum):
    if _errors.has_key(errorNum):
        return _errors[errorNum]
    else:
        return MacOS.GetErrorString(errorNum)
コード例 #11
0
def GetArgv(optionlist=None,
            commandlist=None,
            addoldfile=1,
            addnewfile=1,
            addfolder=1,
            id=ARGV_ID):
    _initialize()
    _interact()
    d = GetNewDialog(id, -1)
    if not d:
        print "EasyDialogs: Can't get DLOG resource with id =", id, " (missing resource file?)"
        return


#       h = d.GetDialogItemAsControl(3)
#       SetDialogItemText(h, lf2cr(prompt))
#       h = d.GetDialogItemAsControl(4)
#       SetDialogItemText(h, lf2cr(default))
#       d.SelectDialogItemText(4, 0, 999)
#       d.SetDialogItem(4, 0, 255)
    if optionlist:
        _setmenu(d.GetDialogItemAsControl(ARGV_OPTION_GROUP), optionlist)
        _selectoption(d, optionlist, 0)
    else:
        d.GetDialogItemAsControl(ARGV_OPTION_GROUP).DeactivateControl()
    if commandlist:
        _setmenu(d.GetDialogItemAsControl(ARGV_COMMAND_GROUP), commandlist)
        if type(commandlist[0]) == type(()) and len(commandlist[0]) > 1:
            help = commandlist[0][-1]
            h = d.GetDialogItemAsControl(ARGV_COMMAND_EXPLAIN)
            Dlg.SetDialogItemText(h, help)
    else:
        d.GetDialogItemAsControl(ARGV_COMMAND_GROUP).DeactivateControl()
    if not addoldfile:
        d.GetDialogItemAsControl(ARGV_ADD_OLDFILE).DeactivateControl()
    if not addnewfile:
        d.GetDialogItemAsControl(ARGV_ADD_NEWFILE).DeactivateControl()
    if not addfolder:
        d.GetDialogItemAsControl(ARGV_ADD_FOLDER).DeactivateControl()
    d.SetDialogDefaultItem(ARGV_ITEM_OK)
    d.SetDialogCancelItem(ARGV_ITEM_CANCEL)
    d.GetDialogWindow().ShowWindow()
    d.DrawDialog()
    if hasattr(MacOS, 'SchedParams'):
        appsw = MacOS.SchedParams(1, 0)
    try:
        while 1:
            stringstoadd = []
            n = ModalDialog(None)
            if n == ARGV_ITEM_OK:
                break
            elif n == ARGV_ITEM_CANCEL:
                raise SystemExit
            elif n == ARGV_OPTION_GROUP:
                idx = d.GetDialogItemAsControl(
                    ARGV_OPTION_GROUP).GetControlValue() - 1
                _selectoption(d, optionlist, idx)
            elif n == ARGV_OPTION_VALUE:
                pass
            elif n == ARGV_OPTION_ADD:
                idx = d.GetDialogItemAsControl(
                    ARGV_OPTION_GROUP).GetControlValue() - 1
                if 0 <= idx < len(optionlist):
                    option = optionlist[idx]
                    if type(option) == type(()):
                        option = option[0]
                    if option[-1] == '=' or option[-1] == ':':
                        option = option[:-1]
                        h = d.GetDialogItemAsControl(ARGV_OPTION_VALUE)
                        value = Dlg.GetDialogItemText(h)
                    else:
                        value = ''
                    if len(option) == 1:
                        stringtoadd = '-' + option
                    else:
                        stringtoadd = '--' + option
                    stringstoadd = [stringtoadd]
                    if value:
                        stringstoadd.append(value)
                else:
                    MacOS.SysBeep()
            elif n == ARGV_COMMAND_GROUP:
                idx = d.GetDialogItemAsControl(
                    ARGV_COMMAND_GROUP).GetControlValue() - 1
                if 0 <= idx < len(commandlist) and type(commandlist[idx]) == type(()) and \
                        len(commandlist[idx]) > 1:
                    help = commandlist[idx][-1]
                    h = d.GetDialogItemAsControl(ARGV_COMMAND_EXPLAIN)
                    Dlg.SetDialogItemText(h, help)
            elif n == ARGV_COMMAND_ADD:
                idx = d.GetDialogItemAsControl(
                    ARGV_COMMAND_GROUP).GetControlValue() - 1
                if 0 <= idx < len(commandlist):
                    command = commandlist[idx]
                    if type(command) == type(()):
                        command = command[0]
                    stringstoadd = [command]
                else:
                    MacOS.SysBeep()
            elif n == ARGV_ADD_OLDFILE:
                pathname = AskFileForOpen()
                if pathname:
                    stringstoadd = [pathname]
            elif n == ARGV_ADD_NEWFILE:
                pathname = AskFileForSave()
                if pathname:
                    stringstoadd = [pathname]
            elif n == ARGV_ADD_FOLDER:
                pathname = AskFolder()
                if pathname:
                    stringstoadd = [pathname]
            elif n == ARGV_CMDLINE_DATA:
                pass  # Nothing to do
            else:
                raise RuntimeError, "Unknown dialog item %d" % n

            for stringtoadd in stringstoadd:
                if '"' in stringtoadd or "'" in stringtoadd or " " in stringtoadd:
                    stringtoadd = repr(stringtoadd)
                h = d.GetDialogItemAsControl(ARGV_CMDLINE_DATA)
                oldstr = GetDialogItemText(h)
                if oldstr and oldstr[-1] != ' ':
                    oldstr = oldstr + ' '
                oldstr = oldstr + stringtoadd
                if oldstr[-1] != ' ':
                    oldstr = oldstr + ' '
                SetDialogItemText(h, oldstr)
                d.SelectDialogItemText(ARGV_CMDLINE_DATA, 0x7fff, 0x7fff)
        h = d.GetDialogItemAsControl(ARGV_CMDLINE_DATA)
        oldstr = GetDialogItemText(h)
        tmplist = string.split(oldstr)
        newlist = []
        while tmplist:
            item = tmplist[0]
            del tmplist[0]
            if item[0] == '"':
                while item[-1] != '"':
                    if not tmplist:
                        raise RuntimeError, "Unterminated quoted argument"
                    item = item + ' ' + tmplist[0]
                    del tmplist[0]
                item = item[1:-1]
            if item[0] == "'":
                while item[-1] != "'":
                    if not tmplist:
                        raise RuntimeError, "Unterminated quoted argument"
                    item = item + ' ' + tmplist[0]
                    del tmplist[0]
                item = item[1:-1]
            newlist.append(item)
        return newlist
    finally:
        if hasattr(MacOS, 'SchedParams'):
            MacOS.SchedParams(*appsw)
        del d
コード例 #12
0
ファイル: ConfigurePython.py プロジェクト: mcyril/ravel-ftn
# This python script creates Finder aliases for all the
コード例 #13
0
ファイル: m_compile.py プロジェクト: vishalbelsare/ompc
 def set_creator_type(file):
     MacOS.SetCreatorAndType(file, 'Pyth', 'PYC ')
コード例 #14
0
ファイル: FrameWork.py プロジェクト: Oize/pspstacklesspython
 def do_menu(self, id, item, window, event):
     if hasattr(MacOS, 'OutputSeen'):
         MacOS.OutputSeen()
     self.menubar.dispatch(id, item, window, event)
コード例 #15
0
def compileaete(aete,
                resinfo,
                fname,
                output=None,
                basepkgname=None,
                edit_modnames=None,
                creatorsignature=None,
                verbose=None):
    """Generate code for a full aete resource. fname passed for doc purposes"""
    version, language, script, suites = aete
    major, minor = divmod(version, 256)
    if not creatorsignature:
        creatorsignature, dummy = MacOS.GetCreatorAndType(fname)
    packagename = identify(os.path.splitext(os.path.basename(fname))[0])
    if language:
        packagename = packagename + '_lang%d' % language
    if script:
        packagename = packagename + '_script%d' % script
    if len(packagename) > 27:
        packagename = packagename[:27]
    if output:
        if not os.path.exists(output):
            os.mkdir(output)
        pathname = output
    else:
        pathname = EasyDialogs.AskFolder(
            message='Create and select package folder for %s' % packagename,
            defaultLocation=DEFAULT_USER_PACKAGEFOLDER)
        output = pathname
    if not pathname:
        return
    else:
        packagename = os.path.split(os.path.normpath(pathname))[1]
        if not basepkgname:
            basepkgname = EasyDialogs.AskFolder(
                message='Package folder for base suite (usually StdSuites)',
                defaultLocation=DEFAULT_STANDARD_PACKAGEFOLDER)
        if basepkgname:
            dirname, basepkgname = os.path.split(os.path.normpath(basepkgname))
            if dirname and dirname not in sys.path:
                sys.path.insert(0, dirname)
            basepackage = __import__(basepkgname)
        else:
            basepackage = None
        suitelist = []
        allprecompinfo = []
        allsuites = []
        for suite in suites:
            compiler = SuiteCompiler(suite, basepackage, output, edit_modnames,
                                     verbose)
            code, modname, precompinfo = compiler.precompilesuite()
            if not code:
                continue
            allprecompinfo = allprecompinfo + precompinfo
            suiteinfo = (suite, pathname, modname)
            suitelist.append((code, modname))
            allsuites.append(compiler)

        for compiler in allsuites:
            compiler.compilesuite(major, minor, language, script, fname,
                                  allprecompinfo)

        initfilename = os.path.join(output, '__init__.py')
        fp = open(initfilename, 'w')
        MacOS.SetCreatorAndType(initfilename, 'Pyth', 'TEXT')
        fp.write('"""\n')
        fp.write('Package generated from %s\n' % ascii(fname))
        if resinfo:
            fp.write('Resource %s resid %d %s\n' %
                     (ascii(resinfo[1]), resinfo[0], ascii(resinfo[2])))
        fp.write('"""\n')
        fp.write('import aetools\n')
        fp.write('Error = aetools.Error\n')
        suitelist.sort()
        for code, modname in suitelist:
            fp.write('import %s\n' % modname)

        fp.write('\n\n_code_to_module = {\n')
        for code, modname in suitelist:
            fp.write("    '%s' : %s,\n" % (ascii(code), modname))

        fp.write('}\n\n')
        fp.write('\n\n_code_to_fullname = {\n')
        for code, modname in suitelist:
            fp.write("    '%s' : ('%s.%s', '%s'),\n" %
                     (ascii(code), packagename, modname, modname))

        fp.write('}\n\n')
        for code, modname in suitelist:
            fp.write('from %s import *\n' % modname)

        fp.write('\ndef getbaseclasses(v):\n')
        fp.write("    if not getattr(v, '_propdict', None):\n")
        fp.write('        v._propdict = {}\n')
        fp.write('        v._elemdict = {}\n')
        fp.write(
            "        for superclassname in getattr(v, '_superclassnames', []):\n"
        )
        fp.write('            superclass = eval(superclassname)\n')
        fp.write('            getbaseclasses(superclass)\n')
        fp.write(
            "            v._propdict.update(getattr(superclass, '_propdict', {}))\n"
        )
        fp.write(
            "            v._elemdict.update(getattr(superclass, '_elemdict', {}))\n"
        )
        fp.write(
            "        v._propdict.update(getattr(v, '_privpropdict', {}))\n")
        fp.write(
            "        v._elemdict.update(getattr(v, '_privelemdict', {}))\n")
        fp.write('\n')
        fp.write('import StdSuites\n')
        allprecompinfo.sort()
        if allprecompinfo:
            fp.write(
                '\n#\n# Set property and element dictionaries now that all classes have been defined\n#\n'
            )
            for codenamemapper in allprecompinfo:
                for k, v in codenamemapper.getall('class'):
                    fp.write('getbaseclasses(%s)\n' % v)

        application_class = None
        if allprecompinfo:
            fp.write('\n#\n# Indices of types declared in this module\n#\n')
            fp.write('_classdeclarations = {\n')
            for codenamemapper in allprecompinfo:
                for k, v in codenamemapper.getall('class'):
                    fp.write('    %r : %s,\n' % (k, v))
                    if k == 'capp':
                        application_class = v

            fp.write('}\n')
        if suitelist:
            fp.write('\n\nclass %s(%s_Events' % (packagename, suitelist[0][1]))
            for code, modname in suitelist[1:]:
                fp.write(',\n        %s_Events' % modname)

            fp.write(',\n        aetools.TalkTo):\n')
            fp.write('    _signature = %r\n\n' % (creatorsignature, ))
            fp.write("    _moduleName = '%s'\n\n" % packagename)
            if application_class:
                fp.write('    _elemdict = %s._elemdict\n' % application_class)
                fp.write('    _propdict = %s._propdict\n' % application_class)
        fp.close()
        return
コード例 #16
0
ファイル: findertools.py プロジェクト: mcyril/ravel-ftn
"""Utility routines depending on the finder,
コード例 #17
0
    def __init__(self, path = "", title = ""):
        defaultfontsettings, defaulttabsettings, defaultwindowsize = geteditorprefs()
        global _scriptuntitledcounter
        if not path:
            if title:
                self.title = title
            else:
                self.title = "Untitled Script %r" % (_scriptuntitledcounter,)
                _scriptuntitledcounter = _scriptuntitledcounter + 1
            text = ""
            self._creator = W._signature
            self._eoln = os.linesep
        elif os.path.exists(path):
            path = resolvealiases(path)
            dir, name = os.path.split(path)
            self.title = name
            f = open(path, "rb")
            text = f.read()
            f.close()
            self._creator, filetype = MacOS.GetCreatorAndType(path)
            self.addrecentfile(path)
            if '\n' in text:
                if string.find(text, '\r\n') >= 0:
                    self._eoln = '\r\n'
                else:
                    self._eoln = '\n'
                text = string.replace(text, self._eoln, '\r')
            else:
                self._eoln = '\r'
        else:
            raise IOError, "file '%s' does not exist" % path
        self.path = path

        self.settings = {}
        if self.path:
            self.readwindowsettings()
        if self.settings.has_key("windowbounds"):
            bounds = self.settings["windowbounds"]
        else:
            bounds = defaultwindowsize
        if self.settings.has_key("fontsettings"):
            self.fontsettings = self.settings["fontsettings"]
        else:
            self.fontsettings = defaultfontsettings
        if self.settings.has_key("tabsize"):
            try:
                self.tabsettings = (tabsize, tabmode) = self.settings["tabsize"]
            except:
                self.tabsettings = defaulttabsettings
        else:
            self.tabsettings = defaulttabsettings

        W.Window.__init__(self, bounds, self.title, minsize = (330, 120), tabbable = 0)
        self.setupwidgets(text)

        if self.settings.has_key("selection"):
            selstart, selend = self.settings["selection"]
            self.setselection(selstart, selend)
        self.open()
        self.setinfotext()
        self.globals = {}
        self._buf = ""  # for write method
        self.debugging = 0
        self.profiling = 0
        self.run_as_main = self.settings.get("run_as_main", 0)
        self.run_with_interpreter = self.settings.get("run_with_interpreter", 0)
        self.run_with_cl_interpreter = self.settings.get("run_with_cl_interpreter", 0)
コード例 #18
0
def setMacCreatorAndType(path, fileCreator, fileType):
	if MacOS is not None:
		MacOS.SetCreatorAndType(path, fileCreator, fileType)
コード例 #19
0
def buildapplet():
    buildtools.DEBUG=1

    # Find the template
    # (there's no point in proceeding if we can't find it)

    template = buildtools.findtemplate()

    # Ask for source text if not specified in sys.argv[1:]

    if not sys.argv[1:]:
        filename = EasyDialogs.AskFileForOpen(message='Select Python source or applet:',
                typeList=('TEXT', 'APPL'))
        if not filename:
            return
        tp, tf = os.path.split(filename)
        if tf[-3:] == '.py':
            tf = tf[:-3]
        else:
            tf = tf + '.applet'
        dstfilename = EasyDialogs.AskFileForSave(message='Save application as:',
                savedFileName=tf)
        if not dstfilename: return
        cr, tp = MacOS.GetCreatorAndType(filename)
        if tp == 'APPL':
            buildtools.update(template, filename, dstfilename)
        else:
            buildtools.process(template, filename, dstfilename, 1)
    else:

        SHORTOPTS = "o:r:ne:v?PR"
        LONGOPTS=("output=", "resource=", "noargv", "extra=", "verbose", "help", "python=", "destroot=")
        try:
            options, args = getopt.getopt(sys.argv[1:], SHORTOPTS, LONGOPTS)
        except getopt.error:
            usage()
        if options and len(args) > 1:
            sys.stderr.write("Cannot use options when specifying multiple input files")
            sys.exit(1)
        dstfilename = None
        rsrcfilename = None
        raw = 0
        extras = []
        verbose = None
        destroot = ''
        for opt, arg in options:
            if opt in ('-o', '--output'):
                dstfilename = arg
            elif opt in ('-r', '--resource'):
                rsrcfilename = arg
            elif opt in ('-n', '--noargv'):
                raw = 1
            elif opt in ('-e', '--extra'):
                if ':' in arg:
                    arg = arg.split(':')
                extras.append(arg)
            elif opt in ('-P', '--python'):
                # This is a very dirty trick. We set sys.executable
                # so that bundlebuilder will use this in the #! line
                # for the applet bootstrap.
                sys.executable = arg
            elif opt in ('-v', '--verbose'):
                verbose = Verbose()
            elif opt in ('-?', '--help'):
                usage()
            elif opt in ('-d', '--destroot'):
                destroot = arg
        # On OS9 always be verbose
        if sys.platform == 'mac' and not verbose:
            verbose = 'default'
        # Loop over all files to be processed
        for filename in args:
            cr, tp = MacOS.GetCreatorAndType(filename)
            if tp == 'APPL':
                buildtools.update(template, filename, dstfilename)
            else:
                buildtools.process(template, filename, dstfilename, 1,
                        rsrcname=rsrcfilename, others=extras, raw=raw,
                        progress=verbose, destroot=destroot)
コード例 #20
0
ファイル: BuildApplet.py プロジェクト: mcyril/ravel-ftn
"""Create an applet from a Python script.
コード例 #21
0
"""macgen_info - Generate CodeWarrior project, config source, resource file"""
コード例 #22
0
ファイル: scantools.py プロジェクト: Greentwip/python27-uwp
 def setfiletype(self, filename):
     if MacOS and (self.filecreator or self.filetype):
         creator, type = MacOS.GetCreatorAndType(filename)
         if self.filecreator: creator = self.filecreator
         if self.filetype: type = self.filetype
         MacOS.SetCreatorAndType(filename, creator, type)
コード例 #23
0
ファイル: FrameWork.py プロジェクト: Oize/pspstacklesspython
 def __del__(self):
     if self._doing_asyncevents:
         self._doing_asyncevents = 0
         MacOS.SetEventHandler()
コード例 #24
0
ファイル: macsupport.py プロジェクト: carol8421/gosh
def SetOutputFileName(file = None):
	"Set the output file name and set its creator&type to CWIE&TEXT"
	_SetOutputFileName(file)
	if file:
		import MacOS
		MacOS.SetCreatorAndType(file, 'CWIE', 'TEXT')
コード例 #25
0
ファイル: FrameWork.py プロジェクト: Oize/pspstacklesspython
 def do_inDesk(self, partcode, window, event):
     if hasattr(MacOS, 'HandleEvent'):
         MacOS.HandleEvent(event)
コード例 #26
0
 def __ensure_WMAvailable(klass):
     if klass.__eventloop_initialized:
         return 1
     if not MacOS.WMAvailable():
         return 0
     Evt.WaitNextEvent(0, 0)
コード例 #27
0
ファイル: FrameWork.py プロジェクト: Oize/pspstacklesspython
 def do_unknownwindow(self, partcode, window, event):
     if DEBUG: print 'Unknown window:', window
     if hasattr(MacOS, 'HandleEvent'):
         MacOS.HandleEvent(event)
コード例 #28
0
 def guess_type(url):
     # On the mac we can have serious conflicts between the
     # extension and the cretor/type of the file. As there is
     # no 100% correct way to solve this we let the extension
     # override the creator/type. This will only lead to unexpected
     # results when a file is given an extension _and_ that extension
     # belongs to files with a different mimetype.
     type, encoding = mimetypes.guess_type(url)
     if type:
         return type, encoding
     if not _ic_instance:
         return type, encoding
     #
     # Next step is to see whether the extension is known to Internet Config
     #
     try:
         descr = _ic_instance.mapfile(url)
     except ic.error:
         descr = None
     else:
         mimetype = descr[8]
         if mimetype:
             if not '/' in mimetype:
                 mimetype = mimetype + '/unknown'
             return mimetype, None
     #
     # Final step, for urls pointing to existing local files, we use
     # the creator/type code and give a warning
     #
     utype, host, path, params, query, fragment = urlparse.urlparse(url)
     if (utype and utype != 'file') or (host and host != 'localhost'):
         return None, None
     import windowinterface
     filename = MMurl.url2pathname(path)
     filename_lastpart = os.path.split(filename)[-1]
     try:
         creator, type = MacOS.GetCreatorAndType(filename)
     except MacOS.Error:
         # File doesn't exist. Give the long talk.
         if not warned_names.has_key(filename_lastpart):
             windowinterface.showmessage(
                 'Extension for "%s" not recognized.\nFor use with GRiNS (and for use on the web in general) please give your file the correct extension.'
                 % filename_lastpart,
                 identity='nomimetype')
             warned_names[filename_lastpart] = 1
         return None, None
     try:
         descr = _ic_instance.maptypecreator(type, creator, url)
     except:
         descr = None
     if not descr:
         if not warned_names.has_key(filename_lastpart):
             windowinterface.showmessage(
                 'Extension for "%s" not recognized.\nFor use with GRiNS (and for use on the web in general) please give your file the correct extension.'
                 % filename_lastpart,
                 identity='nomimetype')
             warned_names[filename_lastpart] = 1
         return None, None
     import windowinterface
     if not warned_names.has_key(filename_lastpart):
         windowinterface.showmessage(
             'Incorrect extension for "%s"\nThis may cause problems on the web'
             % filename_lastpart,
             identity='mimetypemismatch')
         warned_names[filename_lastpart] = 1
     mimetype = descr[8]
     if mimetype:
         if not '/' in mimetype:
             mimetype = mimetype + '/unknown'
     else:
         # it may be an empty string, turn into None
         mimetype = None
     return mimetype, None
コード例 #29
0
    def compilesuite(self, major, minor, language, script, fname, precompinfo):
        """Generate code for a single suite"""
        name, desc, code, level, version, events, classes, comps, enums = self.suite

        def class_sorter(k1, k2):
            """Sort classes by code, and make sure main class sorts before synonyms"""
            if k1[1] < k2[1]:
                return -1
            if k1[1] > k2[1]:
                return 1
            if not k2[3] or k2[3][0][1] == 'c@#!':
                return -1
            if not k1[3] or k1[3][0][1] == 'c@#!':
                return 1
            return 0

        events.sort()
        classes.sort(class_sorter)
        comps.sort()
        enums.sort()
        self.fp = fp = open(self.pathname, 'w')
        MacOS.SetCreatorAndType(self.pathname, 'Pyth', 'TEXT')
        fp.write('"""Suite %s: %s\n' % (ascii(name), ascii(desc)))
        fp.write('Level %d, version %d\n\n' % (level, version))
        fp.write('Generated from %s\n' % ascii(fname))
        fp.write('AETE/AEUT resource version %d/%d, language %d, script %d\n' %
                 (major, minor, language, script))
        fp.write('"""\n\n')
        fp.write('import aetools\n')
        fp.write('import MacOS\n\n')
        fp.write('_code = %r\n\n' % (code, ))
        if self.basepackage and code in self.basepackage._code_to_module:
            fp.write('from %s import *\n' %
                     self.basepackage._code_to_fullname[code][0])
            basemodule = self.basepackage._code_to_module[code]
        elif self.basepackage and code.lower(
        ) in self.basepackage._code_to_module:
            fp.write('from %s import *\n' %
                     self.basepackage._code_to_fullname[code.lower()][0])
            basemodule = self.basepackage._code_to_module[code.lower()]
        else:
            basemodule = None
        self.basemodule = basemodule
        self.compileclassheader()
        self.enumsneeded = {}
        if events:
            for event in events:
                self.compileevent(event)

        else:
            fp.write('    pass\n\n')
        objc = ObjectCompiler(fp,
                              self.modname,
                              basemodule,
                              precompinfo,
                              interact=self.edit_modnames is None,
                              verbose=self.verbose)
        for cls in classes:
            objc.compileclass(cls)

        for cls in classes:
            objc.fillclasspropsandelems(cls)

        for comp in comps:
            objc.compilecomparison(comp)

        for enum in enums:
            objc.compileenumeration(enum)

        for enum in self.enumsneeded.keys():
            objc.checkforenum(enum)

        objc.dumpindex()
        return
コード例 #30
0
ファイル: baetools.py プロジェクト: mcyril/ravel-ftn
"""Tools for use in AppleEvent clients and servers.
コード例 #31
0
# The oldest AppleEvent test program.
# Its function has been overtaken by echo.py and tell.py.

import AE
from AppleEvents import *
import Evt
from Events import *
import struct
import aetools
import macfs
import sys
import MacOS

MacOS.EnableAppswitch(0)

def aehandler(request, reply):
	tosend = []
	print 'request:', aetools.unpackevent(request)
	param = request.AEGetParamDesc(keyDirectObject, typeWildCard)
	if param.type == typeAEList:
		n = param.AECountItems()
		print 'List has', n, 'items'
		for i in range(1, 1+n):
			type, item = param.AEGetNthDesc(i, typeFSS)
			data = item.data
			print 'item', i, ':', type, item.type, len(data), 'bytes'
			vol, dir, fnlen = struct.unpack('hlb', data[:7])
			filename = data[7:7+fnlen]
			print 'vol:', vol, '; dir:', dir, '; filename:', `filename`
			print 'full path:', macfs.FSSpec((vol,dir,filename)).as_pathname()
			tosend.append(item)
コード例 #32
0
__version__ = "$Id$"

#
# Mac GRiNS Player wrapper
#

DEBUG = 0

import sys
import os
import MacOS
if not MacOS.WMAvailable():
    raise 'No access to the window manager'

progdir = os.path.split(sys.argv[0])[0]  # This is cmif:build:macosx
if not progdir:
    progdir = os.getcwd()

ID_SPLASH_DIALOG = 513
# Assure the resource file is available
from Carbon import Res
try:
    Res.GetResource('DLOG', ID_SPLASH_DIALOG)
except:
    import macresource
    macdir = os.path.join(os.path.split(progdir)[0], 'mac')
    macresource.open_pathname(os.path.join(macdir, 'player.rsrc'), 1)
    macresource.open_pathname(os.path.join(macdir, 'playercontrols.rsrc'), 1)
    macresource.open_pathname(os.path.join(macdir, 'common.rsrc'), 1)
Res.GetResource('DLOG', ID_SPLASH_DIALOG)
コード例 #33
0
ファイル: echo.py プロジェクト: mcyril/ravel-ftn
"""'echo' -- an AppleEvent handler which handles all events the same.
コード例 #34
0
 def time():
     return MacOS.GetTicks() / 60.0
コード例 #35
0
                    return
        elif what == mouseDown:
            partcode, window = Win.FindWindow(where)
            if partcode == inMenuBar:
                result = Menu.MenuSelect(where)
                id = (result >> 16) & 0xffff  # Hi word
                item = result & 0xffff  # Lo word
                if id == self.appleid:
                    if item == 1:
                        EasyDialogs.Message(self.getabouttext())
                    elif item > 1 and hasattr(Menu, 'OpenDeskAcc'):
                        name = self.applemenu.GetMenuItemText(item)
                        Menu.OpenDeskAcc(name)
                elif id == self.quitid and item == 1:
                    if hasattr(MacOS, 'OutputSeen'):
                        MacOS.OutputSeen()
                    self.quitting = 1
                Menu.HiliteMenu(0)
                return
        # Anything not handled is passed to Python/SIOUX
        if hasattr(MacOS, 'HandleEvent'):
            MacOS.HandleEvent(event)
        else:
            print "Unhandled event:", event

    def getabouttext(self):
        return self.__class__.__name__

    def getaboutmenutext(self):
        return "About %s\311" % self.__class__.__name__
コード例 #36
0
ファイル: AEservertest.py プロジェクト: mcyril/ravel-ftn
"""AEservertest - Test AppleEvent server interface
コード例 #37
0
ファイル: applesingle.py プロジェクト: mcyril/ravel-ftn
# applesingle - a module to decode AppleSingle files
import struct
import MacOS
import sys
Error="applesingle.Error"
verbose=0
# File header format: magic, version, unused, number of entries
AS_HEADER_FORMAT="ll16sh"
AS_HEADER_LENGTH=26
# The flag words for AppleSingle
AS_MAGIC=0x00051600
AS_VERSION=0x00020000
# Entry header format: id, offset, length
AS_ENTRY_FORMAT="lll"
AS_ENTRY_LENGTH=12
# The id values
AS_DATAFORK=1
AS_RESOURCEFORK=2
AS_IGNORE=(3,4,5,6,8,9,10,11,12,13,14,15)
def decode(input, output, resonly=0):
	if type(input) == type(''):
		input = open(input, 'rb')
	# Should we also test for FSSpecs or FSRefs?
	header = input.read(AS_HEADER_LENGTH)
	print `header`
	try:
		magic, version, dummy, nentry = struct.unpack(AS_HEADER_FORMAT, header)
	except ValueError, arg:
		raise Error, "Unpack header error: %s"%arg
	if verbose:
コード例 #38
0

add_sibling_path("data_acquisition"
                 )  #look in 'data acquisition' folder for needed routines, too
add_sibling_path(
    "analysis")  #look in 'data acquisition' folder for needed routines, too

import vxi_crate_devices as vxi
import array
import threading
import time
import tagged_data
from dstp_async import DSTPServer, UseNumericArray
try:
    import MacOS
    MacOS.SchedParams(1, 1, 1, 0.1,
                      0.05)  #allow nullEvent handling on Classic/Carbon
except:
    MacOS = None  #in case we want to check later


class voltmeter(vxi.scanning_voltmeter
                ):  #almost like those, just use a different range!
    idn_head = "HEWLETT-PACKARD,E1326B"
    device_loop_sleep = 0.5
    initial_config_string = ":conf:volt:dc 10.0,(@100:107);"

    def get_data(self):
        vxi.scanning_voltmeter.get_data(self)
        data.volts = [v.loop_count, v.scan]

    def monitor(self):
コード例 #39
0
ファイル: gensuitemodule.py プロジェクト: Geniuspp/python
    def compilesuite(self, major, minor, language, script, fname, precompinfo):
        """Generate code for a single suite"""
        [name, desc, code, level, version, events, classes, comps,
         enums] = self.suite

        # Sort various lists, so re-generated source is easier compared
        def class_sorter(k1, k2):
            """Sort classes by code, and make sure main class sorts before synonyms"""
            # [name, code, desc, properties, elements] = cls
            if k1[1] < k2[1]: return -1
            if k1[1] > k2[1]: return 1
            if not k2[3] or k2[3][0][1] == 'c@#!':
                # This is a synonym, the other one is better
                return -1
            if not k1[3] or k1[3][0][1] == 'c@#!':
                # This is a synonym, the other one is better
                return 1
            return 0

        events.sort()
        classes.sort(class_sorter)
        comps.sort()
        enums.sort()

        self.fp = fp = open(self.pathname, 'w')
        MacOS.SetCreatorAndType(self.pathname, 'Pyth', 'TEXT')

        fp.write('"""Suite %s: %s\n' % (ascii(name), ascii(desc)))
        fp.write("Level %d, version %d\n\n" % (level, version))
        fp.write("Generated from %s\n" % ascii(fname))
        fp.write("AETE/AEUT resource version %d/%d, language %d, script %d\n" % \
            (major, minor, language, script))
        fp.write('"""\n\n')

        fp.write('import aetools\n')
        fp.write('import MacOS\n\n')
        fp.write("_code = %r\n\n" % (code, ))
        if self.basepackage and code in self.basepackage._code_to_module:
            # We are an extension of a baseclass (usually an application extending
            # Standard_Suite or so). Import everything from our base module
            fp.write('from %s import *\n' %
                     self.basepackage._code_to_fullname[code][0])
            basemodule = self.basepackage._code_to_module[code]
        elif self.basepackage and code.lower(
        ) in self.basepackage._code_to_module:
            # This is needed by CodeWarrior and some others.
            fp.write('from %s import *\n' %
                     self.basepackage._code_to_fullname[code.lower()][0])
            basemodule = self.basepackage._code_to_module[code.lower()]
        else:
            # We are not an extension.
            basemodule = None
        self.basemodule = basemodule
        self.compileclassheader()

        self.enumsneeded = {}
        if events:
            for event in events:
                self.compileevent(event)
        else:
            fp.write("    pass\n\n")

        objc = ObjectCompiler(fp,
                              self.modname,
                              basemodule,
                              precompinfo,
                              interact=(self.edit_modnames is None),
                              verbose=self.verbose)
        for cls in classes:
            objc.compileclass(cls)
        for cls in classes:
            objc.fillclasspropsandelems(cls)
        for comp in comps:
            objc.compilecomparison(comp)
        for enum in enums:
            objc.compileenumeration(enum)

        for enum in self.enumsneeded.keys():
            objc.checkforenum(enum)

        objc.dumpindex()
コード例 #40
0
ファイル: PythonCGISlave.py プロジェクト: mcyril/ravel-ftn
"""PythonCGISlave.py
This program can be used in two ways:
- As a Python CGI script server for web servers supporting "Actions", like WebStar.
- As a wrapper for a single Python CGI script, for any "compliant" Mac web server.
See CGI_README.txt for more details.
"""
#
# Written by Just van Rossum, but partly stolen from example code by Jack.
#

LONG_RUNNING = 1  # If true, don't quit after each request.

import MacOS
MacOS.SchedParams(0, 0)
from MiniAEFrame import AEServer, MiniApplication
import os
import string
import cStringIO
import sys
import traceback
import mimetools
__version__ = '3.2'

slave_dir = os.getcwd()

# log file for errors
sys.stderr = open(sys.argv[0] + ".errors", "a+")
def convertFSSpec(fss):
	return fss.as_pathname()