Replaced objcmin with objp-based proxy.

--HG--
branch : objp
This commit is contained in:
Virgil Dupras 2011-12-28 14:51:33 -05:00
parent 08813ce39c
commit 3b80de869a
5 changed files with 32 additions and 23 deletions

View File

@ -6,6 +6,7 @@ run.py
*.so *.so
*.mo *.mo
*.pyd *.pyd
.tm_*
*.xcodeproj/xcuserdata *.xcodeproj/xcuserdata
*.xcodeproj/project.xcworkspace/xcuserdata *.xcodeproj/project.xcworkspace/xcuserdata
conf.json conf.json

View File

@ -12,8 +12,7 @@ from optparse import OptionParser
import shutil import shutil
import json import json
from setuptools import setup from setuptools import setup, Extension
from distutils.extension import Extension
from hscommon import sphinxgen from hscommon import sphinxgen
from hscommon.build import (add_to_pythonpath, print_and_do, copy_packages, filereplace, from hscommon.build import (add_to_pythonpath, print_and_do, copy_packages, filereplace,
@ -38,6 +37,7 @@ def parse_args():
def build_cocoa(edition, dev): def build_cocoa(edition, dev):
from pluginbuilder import build_plugin from pluginbuilder import build_plugin
build_cocoa_proxy_module()
print("Building dg_cocoa.plugin") print("Building dg_cocoa.plugin")
if dev: if dev:
tocopy = ['cocoa/inter'] tocopy = ['cocoa/inter']
@ -162,6 +162,20 @@ def build_mergepot():
loc.merge_pots_into_pos('locale') loc.merge_pots_into_pos('locale')
loc.merge_pots_into_pos(op.join('hscommon', 'locale')) loc.merge_pots_into_pos(op.join('hscommon', 'locale'))
def build_cocoa_proxy_module():
print("Building Cocoa Proxy")
import objp.p2o
objp.p2o.generate_python_proxy_code('hscommon/cocoa/Cocoa.h', 'build/CocoaProxy.m')
exts = [
Extension("CocoaProxy", ['hscommon/cocoa/Cocoa.m', 'build/CocoaProxy.m', 'build/ObjP.m'],
extra_link_args=["-framework", "CoreFoundation", "-framework", "Foundation", "-framework", "AppKit"]),
]
setup(
script_args = ['build_ext', '--inplace'],
ext_modules = exts,
)
move_all('CocoaProxy*', 'hscommon/cocoa')
def build_pe_modules(ui): def build_pe_modules(ui):
print("Building PE Modules") print("Building PE Modules")
exts = [ exts = [

View File

@ -2,10 +2,8 @@ import logging
from jobprogress import job from jobprogress import job
from hscommon import cocoa from hscommon import cocoa
from hscommon.cocoa import install_exception_hook from hscommon.cocoa import install_exception_hook, proxy
from hscommon.cocoa.inter import signature, subproxy, PyFairware from hscommon.cocoa.inter import signature, subproxy, PyFairware
from hscommon.cocoa.objcmin import (NSNotificationCenter, NSSearchPathForDirectoriesInDomains,
NSApplicationSupportDirectory, NSUserDomainMask, NSWorkspace)
from hscommon.trans import trget from hscommon.trans import trget
from core.app import JobType from core.app import JobType
@ -25,7 +23,7 @@ class PyDupeGuruBase(PyFairware):
def _init(self, modelclass): def _init(self, modelclass):
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s') logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
install_exception_hook() install_exception_hook()
appdata = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, True)[0] appdata = proxy.getAppdataPath()
self.py = modelclass(self, appdata) self.py = modelclass(self, appdata)
self.progress = cocoa.ThreadedJobPerformer() self.progress = cocoa.ThreadedJobPerformer()
@ -166,10 +164,10 @@ class PyDupeGuruBase(PyFairware):
#--- model --> view #--- model --> view
def open_path(self, path): def open_path(self, path):
NSWorkspace.sharedWorkspace().openFile_(str(path)) proxy.openPath_(str(path))
def reveal_path(self, path): def reveal_path(self, path):
NSWorkspace.sharedWorkspace().selectFile_inFileViewerRootedAtPath_(str(path), '') proxy.revealPath_(str(path))
def start_job(self, jobid, func, args=()): def start_job(self, jobid, func, args=()):
try: try:
@ -177,10 +175,10 @@ class PyDupeGuruBase(PyFairware):
args = tuple([j] + list(args)) args = tuple([j] + list(args))
self.progress.run_threaded(func, args=args) self.progress.run_threaded(func, args=args)
except job.JobInProgressError: except job.JobInProgressError:
NSNotificationCenter.defaultCenter().postNotificationName_object_('JobInProgress', self) proxy.postNotification_userInfo_('JobInProgress', None)
else: else:
ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid} ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid}
NSNotificationCenter.defaultCenter().postNotificationName_object_userInfo_('JobStarted', self, ud) proxy.postNotification_userInfo_('JobStarted', ud)
def show_extra_fairware_reminder(self): def show_extra_fairware_reminder(self):
self.cocoa.showExtraFairwareReminder() self.cocoa.showExtraFairwareReminder()

View File

@ -16,7 +16,7 @@ from appscript import app, its, CommandError, ApplicationNotFoundError
from hscommon import io from hscommon import io
from hscommon.util import remove_invalid_xml from hscommon.util import remove_invalid_xml
from hscommon.path import Path from hscommon.path import Path
from hscommon.cocoa.objcmin import NSUserDefaults, NSURL from hscommon.cocoa import proxy
from hscommon.trans import tr from hscommon.trans import tr
from core import directories from core import directories
@ -49,14 +49,11 @@ class IPhoto(Photo):
return IPHOTO_PATH return IPHOTO_PATH
def get_iphoto_database_path(): def get_iphoto_database_path():
ud = NSUserDefaults.standardUserDefaults() plisturls = proxy.prefValue_inDomain_('iPhotoRecentDatabases', 'com.apple.iApps')
prefs = ud.persistentDomainForName_('com.apple.iApps') if not plisturls:
if prefs is None:
raise directories.InvalidPathError() raise directories.InvalidPathError()
if 'iPhotoRecentDatabases' not in prefs: plistpath = proxy.url2path_(plisturls[0])
raise directories.InvalidPathError() return Path(plistpath)
plisturl = NSURL.URLWithString_(prefs['iPhotoRecentDatabases'][0])
return Path(plisturl.path())
def get_iphoto_pictures(plistpath): def get_iphoto_pictures(plistpath):
if not io.exists(plistpath): if not io.exists(plistpath):

View File

@ -11,18 +11,17 @@ import os.path as op
from hscommon import io from hscommon import io
from hscommon.path import Path from hscommon.path import Path
from hscommon.cocoa.objcmin import NSWorkspace from hscommon.cocoa import proxy
from core import fs from core import fs
from core.directories import Directories as DirectoriesBase, DirectoryState from core.directories import Directories as DirectoriesBase, DirectoryState
from core_se.app import DupeGuru as DupeGuruBase from core_se.app import DupeGuru as DupeGuruBase
def is_bundle(str_path): def is_bundle(str_path):
sw = NSWorkspace.sharedWorkspace() uti = proxy.getUTI_(str_path)
uti, error = sw.typeOfFile_error_(str_path, None) if uti is None:
if error is not None:
logging.warning('There was an error trying to detect the UTI of %s', str_path) logging.warning('There was an error trying to detect the UTI of %s', str_path)
return sw.type_conformsToType_(uti, 'com.apple.bundle') or sw.type_conformsToType_(uti, 'com.apple.package') return proxy.type_conformsToType_(uti, 'com.apple.bundle') or proxy.type_conformsToType_(uti, 'com.apple.package')
class Bundle(fs.Folder): class Bundle(fs.Folder):
@classmethod @classmethod