mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Merge with objp branch.
This commit is contained in:
commit
d62bfac95e
@ -6,6 +6,7 @@ run.py
|
||||
*.so
|
||||
*.mo
|
||||
*.pyd
|
||||
.tm_*
|
||||
*.xcodeproj/xcuserdata
|
||||
*.xcodeproj/project.xcworkspace/xcuserdata
|
||||
conf.json
|
||||
|
40
build.py
40
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,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
|
Loading…
x
Reference in New Issue
Block a user