macfsn.py :  » Language-Interface » ChinesePython » chinesepython2.1.3-0.4 » Mac » Lib » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Language Interface » ChinesePython 
ChinesePython » chinesepython2.1.3 0.4 » Mac » Lib » macfsn.py
"""StandardFile compatability module: implement macfs StandardFile
API calls with Navigation Services"""
import macfs
import struct
import Res
try:
  import Nav
except ImportError:
  Nav = None

_curfolder = None
_movablemodal = 1

def _mktypelist(typelist):
  if not typelist:
    return None
  data = 'Pyth' + struct.pack("hh", 0, len(typelist))
  for type in typelist:
    data = data+type
  return Res.Handle(data)
  
def _StandardGetFile(*typelist):
  return apply(_PromptGetFile, (None,)+typelist)
  
def _PromptGetFile(prompt, *typelist):
  args = {}
  flags = 0x56
  typehandle = _mktypelist(typelist)
  if typehandle:
    args['typeList'] = typehandle
  else:
    flags = flags | 0x01
  if prompt:
    args['message'] = prompt
  args['preferenceKey'] = 'PyMC'
  if _movablemodal:
    args['eventProc'] = None
  args['dialogOptionFlags'] = flags
  _handleSetFolder(args)
  try:
    rr = Nav.NavChooseFile(args)
    good = 1
  except Nav.error, arg:
    if arg[0] != -128: # userCancelledErr
      raise Nav.error, arg
    good = 0
    fss = macfs.FSSpec(':cancelled')
  else:
    fss = rr.selection[0]
##  if typehandle:
##    typehandle.DisposeHandle()
  return fss, good

def _StandardPutFile(prompt, default=None):
  args = {}
  flags = 0x07
  if prompt:
    args['message'] = prompt
  args['preferenceKey'] = 'PyMC'
  if _movablemodal:
    args['eventProc'] = None
  if default:
    args['savedFileName'] = default
  args['dialogOptionFlags'] = flags
  _handleSetFolder(args)
  try:
    rr = Nav.NavPutFile(args)
    good = 1
  except Nav.error, arg:
    if arg[0] != -128: # userCancelledErr
      raise Nav.error, arg
    good = 0
    fss = macfs.FSSpec(':cancelled')
  else:
    fss = rr.selection[0]
  return fss, good
  
def _SetFolder(folder):
  global _curfolder
  if _curfolder:
    rv = _curfolder
  else:
    rv = None
  _curfolder = macfs.FSSpec(folder)
  return rv
  
def _handleSetFolder(args):
  global _curfolder
  if not _curfolder:
    return
  import aepack
  fss = macfs.FSSpec(_curfolder)
  aedesc = aepack.pack(fss)
  args['defaultLocation'] = aedesc
  _curfolder = None
  
def _GetDirectory(prompt=None):
  args = {}
  flags = 0x17
  if prompt:
    args['message'] = prompt
  args['preferenceKey'] = 'PyMC'
  if _movablemodal:
    args['eventProc'] = None
  args['dialogOptionFlags'] = flags
  _handleSetFolder(args)
  try:
    rr = Nav.NavChooseFolder(args)
    good = 1
  except Nav.error, arg:
    if arg[0] != -128: # userCancelledErr
      raise Nav.error, arg
    good = 0
    fss = macfs.FSSpec(':cancelled')
  else:
    fss = rr.selection[0]
  return fss, good
  
def _install():
  macfs.StandardGetFile = StandardGetFile
  macfs.PromptGetFile = PromptGetFile
  macfs.StandardPutFile = StandardPutFile
  macfs.SetFolder = SetFolder
  macfs.GetDirectory = GetDirectory
  
if Nav and Nav.NavServicesAvailable():
  StandardGetFile = _StandardGetFile
  PromptGetFile = _PromptGetFile
  StandardPutFile = _StandardPutFile
  SetFolder = _SetFolder
  GetDirectory = _GetDirectory
  _install()
else:
  from macfs import StandardGetFile,PromptGetFile,StandardPutFile,SetFolder,GetDirectory
  

if __name__ == '__main__':
  print 'Testing StandardGetFile'
  fss, ok = StandardGetFile()
  print '->', fss, ok
  print 'Testing StandardGetFile("TEXT")'
  fss, ok = StandardGetFile("TEXT")
  print '->', fss, ok
  print 'Testing PromptGetFile'
  fss, ok = PromptGetFile("prompt")
  print '->', fss, ok
  print 'Testing StandardPutFile("the prompt", "default")'
  fss, ok = StandardPutFile("the prompt", "default")
  print '->', fss, ok
  print 'Testing GetDirectory("another prompt")'
  fss, ok = GetDirectory("Another prompt")
  print '->', fss, ok
  import sys
  sys.exit(1)
  
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.