1
0
镜像自地址 https://github.com/arsenetar/dupeguru.git 已同步 2025-07-05 15:03:20 +00:00

Merge with objp branch.

这个提交包含在:
Virgil Dupras 2012-01-05 17:20:02 -05:00
当前提交 d62bfac95e
共有 18 个文件被更改,包括 55 次插入53 次删除

查看文件

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

查看文件

@ -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,17 +37,15 @@ 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']
else:
specific_packages = {
'se': ['core_se'],
'me': ['core_me'],
'pe': ['core_pe'],
}[edition]
tocopy = ['core', 'hscommon', 'cocoa/inter'] + specific_packages
copy_packages(tocopy, 'build')
specific_packages = {
'se': ['core_se'],
'me': ['core_me'],
'pe': ['core_pe'],
}[edition]
tocopy = ['core', 'hscommon', 'cocoa/inter', 'cocoalib/cocoa'] + specific_packages
copy_packages(tocopy, 'build', create_links=dev)
cocoa_project_path = 'cocoa/{0}'.format(edition)
shutil.copy(op.join(cocoa_project_path, 'dg_cocoa.py'), 'build')
os.chdir('build')
@ -59,11 +56,6 @@ def build_cocoa(edition, dev):
if op.exists(pluginpath):
shutil.rmtree(pluginpath)
shutil.move('build/dist/dg_cocoa.plugin', pluginpath)
if dev:
# In alias mode, the tweakings we do to the pythonpath aren't counted in. We have to
# manually put a .pth in the plugin
pthpath = op.join(pluginpath, 'Contents/Resources/dev.pth')
open(pthpath, 'w').write(op.abspath('.'))
os.chdir(cocoa_project_path)
print('Generating Info.plist')
app_version = get_module_version('core_{}'.format(edition))
@ -163,6 +155,20 @@ def build_mergepot():
loc.merge_pots_into_pos(op.join('hscommon', 'locale'))
loc.merge_pots_into_pos(op.join('qtlib', 'locale'))
def build_cocoa_proxy_module():
print("Building Cocoa Proxy")
import objp.p2o
objp.p2o.generate_python_proxy_code('cocoalib/cocoa/CocoaProxy.h', 'build/CocoaProxy.m')
exts = [
Extension("CocoaProxy", ['cocoalib/cocoa/CocoaProxy.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*', 'cocoalib/cocoa')
def build_pe_modules(ui):
print("Building PE Modules")
exts = [

查看文件

@ -1,11 +1,9 @@
import logging
from jobprogress import job
from hscommon import cocoa
from hscommon.cocoa import install_exception_hook
from hscommon.cocoa.inter import signature, subproxy, PyFairware
from hscommon.cocoa.objcmin import (NSNotificationCenter, NSSearchPathForDirectoriesInDomains,
NSApplicationSupportDirectory, NSUserDomainMask, NSWorkspace)
import cocoa
from cocoa import install_exception_hook, proxy
from cocoa.inter import signature, subproxy, PyFairware
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()

查看文件

@ -11,7 +11,7 @@ from appscript import app, k, CommandError
import time
import os.path as op
from hscommon.cocoa import as_fetch
from cocoa import as_fetch
from hscommon.trans import tr
from core.app import JobType

查看文件

@ -16,8 +16,8 @@ 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.trans import tr
from cocoa import proxy
from core import directories
from core_pe import _block_osx
@ -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):

查看文件

@ -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 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

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import signature, PyGUIObject
from cocoa.inter import signature, PyGUIObject
from core.gui.details_panel import DetailsPanel

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyOutline
from cocoa.inter import PyOutline
from core.gui.directory_tree import DirectoryTree

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyGUIObject
from cocoa.inter import PyGUIObject
from core.gui.extra_fairware_reminder import ExtraFairwareReminder

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyGUIObject, PySelectableList
from cocoa.inter import PyGUIObject, PySelectableList
from core.gui.prioritize_dialog import PrioritizeDialog
from .prioritize_list import PyPrioritizeList

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import signature, PySelectableList
from cocoa.inter import signature, PySelectableList
class PyPrioritizeList(PySelectableList):
@signature('v@:@i')

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyGUIObject
from cocoa.inter import PyGUIObject
from core.gui.problem_dialog import ProblemDialog

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyTable
from cocoa.inter import PyTable
from core.gui.problem_table import ProblemTable

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import signature, PyTable
from cocoa.inter import signature, PyTable
class PyResultTable(PyTable):
@signature('c@:')

查看文件

@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyGUIObject
from cocoa.inter import PyGUIObject
from core.gui.stats_label import StatsLabel

查看文件

@ -7,7 +7,7 @@
from hscommon.trans import install_gettext_trans_under_cocoa
install_gettext_trans_under_cocoa()
from hscommon.cocoa import signature
from cocoa.inter import signature
from core.scanner import ScanType

查看文件

@ -7,7 +7,7 @@
from hscommon.trans import install_gettext_trans_under_cocoa
install_gettext_trans_under_cocoa()
from hscommon.cocoa import signature
from cocoa.inter import signature
from core.scanner import ScanType

查看文件

@ -1,4 +1,5 @@
-r requirements.txt
pyobjc-core>=2.3
pluginbuilder>=1.0.0
appscript>=1.0.0
appscript>=1.0.0
objp>=0.1.0