From 3b80de869af3ac92fad2eafbc81020974cf262e2 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Wed, 28 Dec 2011 14:51:33 -0500 Subject: [PATCH] Replaced objcmin with objp-based proxy. --HG-- branch : objp --- .hgignore | 1 + build.py | 18 ++++++++++++++++-- cocoa/inter/app.py | 14 ++++++-------- cocoa/inter/app_pe.py | 13 +++++-------- cocoa/inter/app_se.py | 9 ++++----- 5 files changed, 32 insertions(+), 23 deletions(-) diff --git a/.hgignore b/.hgignore index d3dba846..1569a994 100644 --- a/.hgignore +++ b/.hgignore @@ -6,6 +6,7 @@ run.py *.so *.mo *.pyd +.tm_* *.xcodeproj/xcuserdata *.xcodeproj/project.xcworkspace/xcuserdata conf.json diff --git a/build.py b/build.py index 11457162..85b5b4df 100644 --- a/build.py +++ b/build.py @@ -12,8 +12,7 @@ from optparse import OptionParser import shutil import json -from setuptools import setup -from distutils.extension import Extension +from setuptools import setup, Extension from hscommon import sphinxgen 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): from pluginbuilder import build_plugin + build_cocoa_proxy_module() print("Building dg_cocoa.plugin") if dev: tocopy = ['cocoa/inter'] @@ -162,6 +162,20 @@ def build_mergepot(): loc.merge_pots_into_pos('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): print("Building PE Modules") exts = [ diff --git a/cocoa/inter/app.py b/cocoa/inter/app.py index 90add3ff..b5e598c5 100644 --- a/cocoa/inter/app.py +++ b/cocoa/inter/app.py @@ -2,10 +2,8 @@ import logging from jobprogress import job 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.objcmin import (NSNotificationCenter, NSSearchPathForDirectoriesInDomains, - NSApplicationSupportDirectory, NSUserDomainMask, NSWorkspace) from hscommon.trans import trget from core.app import JobType @@ -25,7 +23,7 @@ class PyDupeGuruBase(PyFairware): def _init(self, modelclass): logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s') install_exception_hook() - appdata = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, True)[0] + appdata = proxy.getAppdataPath() self.py = modelclass(self, appdata) self.progress = cocoa.ThreadedJobPerformer() @@ -166,10 +164,10 @@ class PyDupeGuruBase(PyFairware): #--- model --> view def open_path(self, path): - NSWorkspace.sharedWorkspace().openFile_(str(path)) + proxy.openPath_(str(path)) def reveal_path(self, path): - NSWorkspace.sharedWorkspace().selectFile_inFileViewerRootedAtPath_(str(path), '') + proxy.revealPath_(str(path)) def start_job(self, jobid, func, args=()): try: @@ -177,10 +175,10 @@ class PyDupeGuruBase(PyFairware): args = tuple([j] + list(args)) self.progress.run_threaded(func, args=args) except job.JobInProgressError: - NSNotificationCenter.defaultCenter().postNotificationName_object_('JobInProgress', self) + proxy.postNotification_userInfo_('JobInProgress', None) else: 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): self.cocoa.showExtraFairwareReminder() diff --git a/cocoa/inter/app_pe.py b/cocoa/inter/app_pe.py index 58671556..08098a1c 100644 --- a/cocoa/inter/app_pe.py +++ b/cocoa/inter/app_pe.py @@ -16,7 +16,7 @@ from appscript import app, its, CommandError, ApplicationNotFoundError from hscommon import io from hscommon.util import remove_invalid_xml from hscommon.path import Path -from hscommon.cocoa.objcmin import NSUserDefaults, NSURL +from hscommon.cocoa import proxy from hscommon.trans import tr from core import directories @@ -49,14 +49,11 @@ class IPhoto(Photo): return IPHOTO_PATH def get_iphoto_database_path(): - ud = NSUserDefaults.standardUserDefaults() - prefs = ud.persistentDomainForName_('com.apple.iApps') - if prefs is None: + plisturls = proxy.prefValue_inDomain_('iPhotoRecentDatabases', 'com.apple.iApps') + if not plisturls: raise directories.InvalidPathError() - if 'iPhotoRecentDatabases' not in prefs: - raise directories.InvalidPathError() - plisturl = NSURL.URLWithString_(prefs['iPhotoRecentDatabases'][0]) - return Path(plisturl.path()) + plistpath = proxy.url2path_(plisturls[0]) + return Path(plistpath) def get_iphoto_pictures(plistpath): if not io.exists(plistpath): diff --git a/cocoa/inter/app_se.py b/cocoa/inter/app_se.py index a7e8e568..4f0b6a72 100644 --- a/cocoa/inter/app_se.py +++ b/cocoa/inter/app_se.py @@ -11,18 +11,17 @@ import os.path as op from hscommon import io from hscommon.path import Path -from hscommon.cocoa.objcmin import NSWorkspace +from hscommon.cocoa import proxy from core import fs from core.directories import Directories as DirectoriesBase, DirectoryState from core_se.app import DupeGuru as DupeGuruBase def is_bundle(str_path): - sw = NSWorkspace.sharedWorkspace() - uti, error = sw.typeOfFile_error_(str_path, None) - if error is not None: + uti = proxy.getUTI_(str_path) + if uti is None: 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): @classmethod