Exemplo n.º 1
0
def mkalias(src, dst, relative=None):
    """Create a finder alias"""
    srcfsr = File.FSRef(src)
    # The next line will fail under unix-Python if the destination
    # doesn't exist yet. We should change this code to be fsref-based.
    dstdir, dstname = os.path.split(dst)
    if not dstdir: dstdir = os.curdir
    dstdirfsr = File.FSRef(dstdir)
    if relative:
        relativefsr = File.FSRef(relative)
        # ik mag er geen None in stoppen :-(
        alias = File.FSNewAlias(relativefsr, srcfsr)
    else:
        alias = srcfsr.FSNewAliasMinimal()

    dstfsr, dstfss = Res.FSCreateResourceFile(dstdirfsr, unicode(dstname),
                                              File.FSGetResourceForkName())
    h = Res.FSOpenResourceFile(dstfsr, File.FSGetResourceForkName(), 3)
    resource = Res.Resource(alias.data)
    resource.AddResource('alis', 0, '')
    Res.CloseResFile(h)

    dstfinfo = dstfss.FSpGetFInfo()
    dstfinfo.Flags = dstfinfo.Flags | 0x8000  # Alias flag
    dstfss.FSpSetFInfo(dstfinfo)
def touched_ae(dst):
    pardir = os.path.split(dst)[0]
    if not pardir:
        pardir = os.curdir
    import Finder
    f = Finder.Finder()
    f.update(File.FSRef(pardir))
Exemplo n.º 3
0
def touched_ae(dst):
    """Tell the finder a file has changed"""
    pardir = os.path.split(dst)[0]
    if not pardir:
        pardir = os.curdir
    import Finder
    f = Finder.Finder()
    f.update(File.FSRef(pardir))
def mkalias(src, dst, relative=None):
    srcfsr = File.FSRef(src)
    dstdir, dstname = os.path.split(dst)
    if not dstdir:
        dstdir = os.curdir
    dstdirfsr = File.FSRef(dstdir)
    if relative:
        relativefsr = File.FSRef(relative)
        alias = File.FSNewAlias(relativefsr, srcfsr)
    else:
        alias = srcfsr.FSNewAliasMinimal()
    dstfsr, dstfss = Res.FSCreateResourceFile(dstdirfsr, unicode(dstname),
                                              File.FSGetResourceForkName())
    h = Res.FSOpenResourceFile(dstfsr, File.FSGetResourceForkName(), 3)
    resource = Res.Resource(alias.data)
    resource.AddResource('alis', 0, '')
    Res.CloseResFile(h)
    dstfinfo = dstfss.FSpGetFInfo()
    dstfinfo.Flags = dstfinfo.Flags | 32768
    dstfss.FSpSetFInfo(dstfinfo)
Exemplo n.º 5
0
def copy(src, dst, createpath=0, copydates=1, forcetype=None):
    """Copy a file, including finder info, resource fork, etc"""
    src = File.pathname(src)
    dst = File.pathname(dst)
    if createpath:
        mkdirs(os.path.split(dst)[0])

    ifp = open(src, 'rb')
    ofp = open(dst, 'wb')
    d = ifp.read(BUFSIZ)
    while d:
        ofp.write(d)
        d = ifp.read(BUFSIZ)
    ifp.close()
    ofp.close()

    ifp = openrf(src, '*rb')
    ofp = openrf(dst, '*wb')
    d = ifp.read(BUFSIZ)
    while d:
        ofp.write(d)
        d = ifp.read(BUFSIZ)
    ifp.close()
    ofp.close()

    srcfss = File.FSSpec(src)
    dstfss = File.FSSpec(dst)
    sf = srcfss.FSpGetFInfo()
    df = dstfss.FSpGetFInfo()
    df.Creator, df.Type = sf.Creator, sf.Type
    if forcetype != None:
        df.Type = forcetype
    df.Flags = (sf.Flags & COPY_FLAGS)
    dstfss.FSpSetFInfo(df)
    if copydates:
        srcfsr = File.FSRef(src)
        dstfsr = File.FSRef(dst)
        catinfo, _, _, _ = srcfsr.FSGetCatalogInfo(Files.kFSCatInfoAllDates)
        dstfsr.FSSetCatalogInfo(Files.kFSCatInfoAllDates, catinfo)
    touched(dstfss)
Exemplo n.º 6
0
    def realPathCase(path):
        """ Return the real case of path e.g. PageName for pagename

        HFS and HFS+ file systems, are case preserving but case
        insensitive. You can't have 'file' and 'File' in the same
        directory, but you can get the real name of 'file'.

        @param path: string
        @rtype: string
        @return the real case of path or None
        """
        try:
            from Carbon import File
            try:
                return File.FSRef(path).as_pathname()
            except File.Error:
                return None
        except ImportError:
            return None
Exemplo n.º 7
0
 def loadFile(self, filename):
     "load an image file and display it"
     try:
         self.im = Image.open(filename)
     except:
         # need to resolve alias
         if PLATFORM == 'OSX':
             fss = CF.FSSpec(filename)
             try:
                 fss, isFolder, aliased = CF.ResolveAliasFile(fss, 0)
             except:
                 print "File not found: ", filename
                 return
             fsr = CF.FSRef(fss)
             filename = fsr.FSRefMakePath()
             self.im = Image.open(filename)
     if self.im.size[0] > self.max_w:
         self.im = self.resize(self.im)
     if self.im.size[1] > self.max_h:
         self.im = self.resize(self.im)
     self.displayImage(filename)
Exemplo n.º 8
0
    def makeusermenus(self):
        m = Wapplication.Menu(self.menubar, "File")
        newitem = FrameWork.MenuItem(m, "New", "N", 'new')
        openitem = FrameWork.MenuItem(m, "Open" + ELLIPSIS, "O", 'open')
        openbynameitem = FrameWork.MenuItem(m, "Open File by Name" + ELLIPSIS,
                                            "D", 'openbyname')
        self.openrecentmenu = FrameWork.SubMenu(m, "Open Recent")
        self.makeopenrecentmenu()
        FrameWork.Separator(m)
        closeitem = FrameWork.MenuItem(m, "Close", "W", 'close')
        saveitem = FrameWork.MenuItem(m, "Save", "S", 'save')
        saveasitem = FrameWork.MenuItem(m, "Save as" + ELLIPSIS, None,
                                        'save_as')
        FrameWork.Separator(m)
        saveasappletitem = FrameWork.MenuItem(m, "Save as Applet" + ELLIPSIS,
                                              None, 'save_as_applet')
        FrameWork.Separator(m)
        instmgritem = FrameWork.MenuItem(m, "Package Manager", None,
                                         'openpackagemanager')
        gensuiteitem = FrameWork.MenuItem(m, "Generate OSA Suite...", None,
                                          'gensuite')
        if not runningOnOSX():
            # On OSX there's a special "magic" quit menu, so we shouldn't add
            # it to the File menu.
            FrameWork.Separator(m)
            quititem = FrameWork.MenuItem(m, "Quit", "Q", 'quit')

        m = Wapplication.Menu(self.menubar, "Edit")
        undoitem = FrameWork.MenuItem(m, "Undo", 'Z', "undo")
        FrameWork.Separator(m)
        cutitem = FrameWork.MenuItem(m, "Cut", 'X', "cut")
        copyitem = FrameWork.MenuItem(m, "Copy", "C", "copy")
        pasteitem = FrameWork.MenuItem(m, "Paste", "V", "paste")
        FrameWork.MenuItem(m, "Clear", None, "clear")
        FrameWork.Separator(m)
        selallitem = FrameWork.MenuItem(m, "Select all", "A", "selectall")
        sellineitem = FrameWork.MenuItem(m, "Select line", "L", "selectline")
        FrameWork.Separator(m)
        finditem = FrameWork.MenuItem(m, "Find" + ELLIPSIS, "F", "find")
        findagainitem = FrameWork.MenuItem(m, "Find again", 'G', "findnext")
        enterselitem = FrameWork.MenuItem(m, "Enter search string", "E",
                                          "entersearchstring")
        replaceitem = FrameWork.MenuItem(m, "Replace", None, "replace")
        replacefinditem = FrameWork.MenuItem(m, "Replace & find again", 'T',
                                             "replacefind")
        FrameWork.Separator(m)
        shiftleftitem = FrameWork.MenuItem(m, "Shift left", "[", "shiftleft")
        shiftrightitem = FrameWork.MenuItem(m, "Shift right", "]",
                                            "shiftright")

        m = Wapplication.Menu(self.menubar, "Python")
        runitem = FrameWork.MenuItem(m, "Run window", "R", 'run')
        runselitem = FrameWork.MenuItem(m, "Run selection", None,
                                        'runselection')
        FrameWork.Separator(m)
        moditem = FrameWork.MenuItem(m, "Module browser" + ELLIPSIS, "M",
                                     self.domenu_modulebrowser)
        FrameWork.Separator(m)
        mm = FrameWork.SubMenu(m, "Preferences")
        FrameWork.MenuItem(mm, "Set Scripts folder" + ELLIPSIS, None,
                           self.do_setscriptsfolder)
        FrameWork.MenuItem(mm, "Editor default settings" + ELLIPSIS, None,
                           self.do_editorprefs)
        FrameWork.MenuItem(mm, "Set default window font" + ELLIPSIS, None,
                           self.do_setwindowfont)

        self.openwindowsmenu = Wapplication.Menu(self.menubar, 'Windows')
        self.makeopenwindowsmenu()
        self._menustocheck = [
            closeitem, saveitem, saveasitem, saveasappletitem, undoitem,
            cutitem, copyitem, pasteitem, selallitem, sellineitem, finditem,
            findagainitem, enterselitem, replaceitem, replacefinditem,
            shiftleftitem, shiftrightitem, runitem, runselitem
        ]

        prefs = self.getprefs()
        try:
            fsr, d = File.Alias(
                rawdata=prefs.scriptsfolder).FSResolveAlias(None)
            self.scriptsfolder = fsr.FSNewAliasMinimal()
        except:
            path = os.path.join(os.getcwd(), "Mac", "IDE scripts")
            if not os.path.exists(path):
                if sys.platform == "darwin":
                    path = os.path.join(os.getenv("HOME"), "Library", "Python",
                                        "IDE-Scripts")
                else:
                    path = os.path.join(os.getcwd(), "Scripts")
                if not os.path.exists(path):
                    os.makedirs(path)
                    f = open(
                        os.path.join(path,
                                     "Place your scripts here" + ELLIPSIS),
                        "w")
                    f.close()
            fsr = File.FSRef(path)
            self.scriptsfolder = fsr.FSNewAliasMinimal()
            self.scriptsfoldermodtime = getmodtime(fsr)
        else:
            self.scriptsfoldermodtime = getmodtime(fsr)
        prefs.scriptsfolder = self.scriptsfolder.data
        self._scripts = {}
        self.scriptsmenu = None
        self.makescriptsmenu()
        self.makehelpmenu()
Exemplo n.º 9
0
def getmodtime(file):
    file = File.FSRef(file)
    catinfo, d1, d2, d3 = file.FSGetCatalogInfo(Files.kFSCatInfoContentMod)
    return catinfo.contentModDate