Moved core*.app_cocoa to cocoa/inter.

--HG--
rename : core_me/app_cocoa.py => cocoa/inter/app_me.py
rename : core_pe/app_cocoa.py => cocoa/inter/app_pe.py
rename : core_se/app_cocoa.py => cocoa/inter/app_se.py
This commit is contained in:
Virgil Dupras 2011-09-21 16:02:13 -04:00
parent b44e52689f
commit 43c4dcb267
19 changed files with 212 additions and 190 deletions

View File

@ -34,13 +34,16 @@ def parse_args():
def build_cocoa(edition, dev): def build_cocoa(edition, dev):
from pluginbuilder import build_plugin from pluginbuilder import build_plugin
print("Building dg_cocoa.plugin") print("Building dg_cocoa.plugin")
if not dev: if dev:
tocopy = ['cocoa/inter']
else:
specific_packages = { specific_packages = {
'se': ['core_se'], 'se': ['core_se'],
'me': ['core_me'], 'me': ['core_me'],
'pe': ['core_pe'], 'pe': ['core_pe'],
}[edition] }[edition]
copy_packages(['core', 'hscommon'] + specific_packages, 'build') tocopy = ['core', 'hscommon', 'cocoa/inter'] + specific_packages
copy_packages(tocopy, 'build')
cocoa_project_path = 'cocoa/{0}'.format(edition) cocoa_project_path = 'cocoa/{0}'.format(edition)
shutil.copy(op.join(cocoa_project_path, 'dg_cocoa.py'), 'build') shutil.copy(op.join(cocoa_project_path, 'dg_cocoa.py'), 'build')
os.chdir('build') os.chdir('build')

0
cocoa/inter/__init__.py Normal file
View File

View File

@ -1,32 +1,15 @@
# Created By: Virgil Dupras
# Created On: 2006/11/11
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
#
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
# which should be included with this package. The terms are also available at
# http://www.hardcoded.net/licenses/bsd_license
import logging 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, pythonify from hscommon.cocoa import install_exception_hook, pythonify
from hscommon.cocoa.inter import (signature, PyTable, PyOutline, PyGUIObject, PyFairware, from hscommon.cocoa.inter import signature, PyFairware
PySelectableList)
from hscommon.cocoa.objcmin import (NSNotificationCenter, NSUserDefaults, from hscommon.cocoa.objcmin import (NSNotificationCenter, NSUserDefaults,
NSSearchPathForDirectoriesInDomains, NSApplicationSupportDirectory, NSUserDomainMask, NSSearchPathForDirectoriesInDomains, NSApplicationSupportDirectory, NSUserDomainMask,
NSWorkspace) NSWorkspace)
from hscommon.trans import tr from hscommon.trans import tr
from .gui.details_panel import DetailsPanel from core.app import JobType
from .gui.directory_tree import DirectoryTree
from .gui.problem_dialog import ProblemDialog
from .gui.problem_table import ProblemTable
from .gui.result_table import ResultTable
from .gui.stats_label import StatsLabel
from .gui.extra_fairware_reminder import ExtraFairwareReminder
from .gui.prioritize_dialog import PrioritizeDialog
from .app import JobType
JOBID2TITLE = { JOBID2TITLE = {
JobType.Scan: tr("Scanning for duplicates"), JobType.Scan: tr("Scanning for duplicates"),
@ -214,146 +197,4 @@ class PyDupeGuruBase(PyFairware):
NSUserDefaults.standardUserDefaults().setObject_forKey_(value, key_name) NSUserDefaults.standardUserDefaults().setObject_forKey_(value, key_name)
def show_extra_fairware_reminder(self): def show_extra_fairware_reminder(self):
self.cocoa.showExtraFairwareReminder() self.cocoa.showExtraFairwareReminder()
class PyDetailsPanel(PyGUIObject):
py_class = DetailsPanel
@signature('i@:')
def numberOfRows(self):
return self.py.row_count()
@signature('@@:@i')
def valueForColumn_row_(self, column, row):
return self.py.row(row)[int(column)]
class PyDirectoryOutline(PyOutline):
py_class = DirectoryTree
def addDirectory_(self, path):
self.py.add_directory(path)
# python --> cocoa
def refresh_states(self):
# Under cocoa, both refresh() and refresh_states() do the same thing.
self.cocoa.refresh()
class PyResultTable(PyTable):
py_class = ResultTable
@signature('c@:')
def powerMarkerMode(self):
return self.py.power_marker
@signature('v@:c')
def setPowerMarkerMode_(self, value):
self.py.power_marker = value
@signature('c@:')
def deltaValuesMode(self):
return self.py.delta_values
@signature('v@:c')
def setDeltaValuesMode_(self, value):
self.py.delta_values = value
@signature('@@:ii')
def valueForRow_column_(self, row_index, column):
return self.py.get_row_value(row_index, column)
@signature('c@:@')
def renameSelected_(self, newname):
return self.py.rename_selected(newname)
@signature('v@:ic')
def sortBy_ascending_(self, key, asc):
self.py.sort(key, asc)
def markSelected(self):
self.py.app.toggle_selected_mark_state()
def removeSelected(self):
self.py.app.remove_selected()
@signature('i@:')
def selectedDupeCount(self):
return self.py.selected_dupe_count
# python --> cocoa
def invalidate_markings(self):
self.cocoa.invalidateMarkings()
class PyStatsLabel(PyGUIObject):
py_class = StatsLabel
def display(self):
return self.py.display
class PyProblemDialog(PyGUIObject):
py_class = ProblemDialog
def revealSelected(self):
self.py.reveal_selected_dupe()
class PyProblemTable(PyTable):
py_class = ProblemTable
class PyExtraFairwareReminder(PyGUIObject):
py_class = ExtraFairwareReminder
def start(self):
self.py.start()
def updateButton(self):
self.py.update_button()
# model --> view
def start_timer(self):
self.cocoa.startTimer()
def stop_timer(self):
self.cocoa.stopTimer()
def enable_button(self):
self.cocoa.enableButton()
def set_button_text(self, text):
self.cocoa.setButtonText_(text)
class PyPrioritizeDialog(PyGUIObject):
py_class = PrioritizeDialog
def categoryList(self):
if not hasattr(self, '_categoryList'):
self._categoryList = PySelectableList.alloc().initWithPy_(self.py.category_list)
return self._categoryList
def criteriaList(self):
if not hasattr(self, '_criteriaList'):
self._criteriaList = PySelectableList.alloc().initWithPy_(self.py.criteria_list)
return self._criteriaList
def prioritizationList(self):
if not hasattr(self, '_prioritizationList'):
self._prioritizationList = PyPrioritizeList.alloc().initWithPy_(self.py.prioritization_list)
return self._prioritizationList
def addSelected(self):
self.py.add_selected()
def removeSelected(self):
self.py.remove_selected()
def performReprioritization(self):
self.py.perform_reprioritization()
class PyPrioritizeList(PySelectableList):
@signature('v@:@i')
def moveIndexes_toIndex_(self, indexes, dest_index):
self.py.move_indexes(indexes, dest_index)

View File

@ -15,9 +15,8 @@ from hscommon.cocoa import as_fetch
from hscommon.trans import tr from hscommon.trans import tr
from core.app import JobType from core.app import JobType
from core.app_cocoa import JOBID2TITLE from core_me.app import DupeGuru as DupeGuruBase
from .app import JOBID2TITLE
from .app import DupeGuru as DupeGuruBase
JobType.RemoveDeadTracks = 'jobRemoveDeadTracks' JobType.RemoveDeadTracks = 'jobRemoveDeadTracks'
JobType.ScanDeadTracks = 'jobScanDeadTracks' JobType.ScanDeadTracks = 'jobScanDeadTracks'

View File

@ -20,9 +20,9 @@ from hscommon.cocoa.objcmin import NSUserDefaults, NSURL
from hscommon.trans import tr from hscommon.trans import tr
from core import directories from core import directories
from . import _block_osx from core_pe import _block_osx
from .photo import Photo as PhotoBase from core_pe.photo import Photo as PhotoBase
from .app import DupeGuru as DupeGuruBase from core_pe.app import DupeGuru as DupeGuruBase
IPHOTO_PATH = Path('iPhoto Library') IPHOTO_PATH = Path('iPhoto Library')

View File

@ -15,7 +15,7 @@ from hscommon.cocoa.objcmin import NSWorkspace
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 .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() sw = NSWorkspace.sharedWorkspace()

View File

@ -0,0 +1,13 @@
from hscommon.cocoa.inter import signature, PyGUIObject
from core.gui.details_panel import DetailsPanel
class PyDetailsPanel(PyGUIObject):
py_class = DetailsPanel
@signature('i@:')
def numberOfRows(self):
return self.py.row_count()
@signature('@@:@i')
def valueForColumn_row_(self, column, row):
return self.py.row(row)[int(column)]

View File

@ -0,0 +1,14 @@
from hscommon.cocoa.inter import PyOutline
from core.gui.directory_tree import DirectoryTree
class PyDirectoryOutline(PyOutline):
py_class = DirectoryTree
def addDirectory_(self, path):
self.py.add_directory(path)
# python --> cocoa
def refresh_states(self):
# Under cocoa, both refresh() and refresh_states() do the same thing.
self.cocoa.refresh()

View File

@ -0,0 +1,25 @@
from hscommon.cocoa.inter import PyGUIObject
from core.gui.extra_fairware_reminder import ExtraFairwareReminder
class PyExtraFairwareReminder(PyGUIObject):
py_class = ExtraFairwareReminder
def start(self):
self.py.start()
def updateButton(self):
self.py.update_button()
# model --> view
def start_timer(self):
self.cocoa.startTimer()
def stop_timer(self):
self.cocoa.stopTimer()
def enable_button(self):
self.cocoa.enableButton()
def set_button_text(self, text):
self.cocoa.setButtonText_(text)

View File

@ -0,0 +1,31 @@
from hscommon.cocoa.inter import PyGUIObject, PySelectableList
from core.gui.prioritize_dialog import PrioritizeDialog
from .prioritize_list import PyPrioritizeList
class PyPrioritizeDialog(PyGUIObject):
py_class = PrioritizeDialog
def categoryList(self):
if not hasattr(self, '_categoryList'):
self._categoryList = PySelectableList.alloc().initWithPy_(self.py.category_list)
return self._categoryList
def criteriaList(self):
if not hasattr(self, '_criteriaList'):
self._criteriaList = PySelectableList.alloc().initWithPy_(self.py.criteria_list)
return self._criteriaList
def prioritizationList(self):
if not hasattr(self, '_prioritizationList'):
self._prioritizationList = PyPrioritizeList.alloc().initWithPy_(self.py.prioritization_list)
return self._prioritizationList
def addSelected(self):
self.py.add_selected()
def removeSelected(self):
self.py.remove_selected()
def performReprioritization(self):
self.py.perform_reprioritization()

View File

@ -0,0 +1,7 @@
from hscommon.cocoa.inter import signature, PySelectableList
class PyPrioritizeList(PySelectableList):
@signature('v@:@i')
def moveIndexes_toIndex_(self, indexes, dest_index):
self.py.move_indexes(indexes, dest_index)

View File

@ -0,0 +1,10 @@
from hscommon.cocoa.inter import PyGUIObject
from core.gui.problem_dialog import ProblemDialog
class PyProblemDialog(PyGUIObject):
py_class = ProblemDialog
def revealSelected(self):
self.py.reveal_selected_dupe()

View File

@ -0,0 +1,6 @@
from hscommon.cocoa.inter import PyTable
from core.gui.problem_table import ProblemTable
class PyProblemTable(PyTable):
py_class = ProblemTable

View File

@ -0,0 +1,49 @@
from hscommon.cocoa.inter import signature, PyTable
from core.gui.result_table import ResultTable
class PyResultTable(PyTable):
py_class = ResultTable
@signature('c@:')
def powerMarkerMode(self):
return self.py.power_marker
@signature('v@:c')
def setPowerMarkerMode_(self, value):
self.py.power_marker = value
@signature('c@:')
def deltaValuesMode(self):
return self.py.delta_values
@signature('v@:c')
def setDeltaValuesMode_(self, value):
self.py.delta_values = value
@signature('@@:ii')
def valueForRow_column_(self, row_index, column):
return self.py.get_row_value(row_index, column)
@signature('c@:@')
def renameSelected_(self, newname):
return self.py.rename_selected(newname)
@signature('v@:ic')
def sortBy_ascending_(self, key, asc):
self.py.sort(key, asc)
def markSelected(self):
self.py.app.toggle_selected_mark_state()
def removeSelected(self):
self.py.app.remove_selected()
@signature('i@:')
def selectedDupeCount(self):
return self.py.selected_dupe_count
# python --> cocoa
def invalidate_markings(self):
self.cocoa.invalidateMarkings()

View File

@ -0,0 +1,9 @@
from hscommon.cocoa.inter import PyGUIObject
from core.gui.stats_label import StatsLabel
class PyStatsLabel(PyGUIObject):
py_class = StatsLabel
def display(self):
return self.py.display

View File

@ -9,10 +9,19 @@ install_cocoa_trans()
from hscommon.cocoa import signature from hscommon.cocoa import signature
from core.app_cocoa import PyDupeGuruBase, PyDetailsPanel
from core_me.app_cocoa import DupeGuruME
from core.scanner import ScanType from core.scanner import ScanType
from inter.app import PyDupeGuruBase
from inter.details_panel import PyDetailsPanel
from inter.directory_outline import PyDirectoryOutline
from inter.extra_fairware_reminder import PyExtraFairwareReminder
from inter.prioritize_dialog import PyPrioritizeDialog
from inter.problem_dialog import PyProblemDialog
from inter.problem_table import PyProblemTable
from inter.result_table import PyResultTable
from inter.stats_label import PyStatsLabel
from inter.app_me import DupeGuruME
class PyDupeGuru(PyDupeGuruBase): class PyDupeGuru(PyDupeGuruBase):
def init(self): def init(self):
self = super(PyDupeGuru,self).init() self = super(PyDupeGuru,self).init()

View File

@ -7,14 +7,23 @@
from hscommon.trans import install_cocoa_trans from hscommon.trans import install_cocoa_trans
install_cocoa_trans() install_cocoa_trans()
from core.app_cocoa import PyDupeGuruBase, PyDetailsPanel
from core_pe import app_cocoa as app_pe_cocoa
from core.scanner import ScanType from core.scanner import ScanType
from inter.app import PyDupeGuruBase
from inter.details_panel import PyDetailsPanel
from inter.directory_outline import PyDirectoryOutline
from inter.extra_fairware_reminder import PyExtraFairwareReminder
from inter.prioritize_dialog import PyPrioritizeDialog
from inter.problem_dialog import PyProblemDialog
from inter.problem_table import PyProblemTable
from inter.result_table import PyResultTable
from inter.stats_label import PyStatsLabel
from inter.app_pe import DupeGuruPE
class PyDupeGuru(PyDupeGuruBase): class PyDupeGuru(PyDupeGuruBase):
def init(self): def init(self):
self = super(PyDupeGuru, self).init() self = super(PyDupeGuru, self).init()
self._init(app_pe_cocoa.DupeGuruPE) self._init(DupeGuruPE)
return self return self
def clearPictureCache(self): def clearPictureCache(self):

View File

@ -23,9 +23,6 @@
CE15C8C00ADEB8D40061D4A5 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE15C8A70ADEB8B50061D4A5 /* Sparkle.framework */; }; CE15C8C00ADEB8D40061D4A5 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE15C8A70ADEB8B50061D4A5 /* Sparkle.framework */; };
CE1EB5FE12537F9D0034AABB /* HSFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1EB5FC12537F9D0034AABB /* HSFairwareReminder.m */; }; CE1EB5FE12537F9D0034AABB /* HSFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1EB5FC12537F9D0034AABB /* HSFairwareReminder.m */; };
CE1EB60112537FB90034AABB /* FairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE1EB5FF12537FB90034AABB /* FairwareReminder.xib */; }; CE1EB60112537FB90034AABB /* FairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE1EB5FF12537FB90034AABB /* FairwareReminder.xib */; };
CE21AFB91423EA6E00DE35BF /* DirectoryPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339312E5DA350029EF25 /* DirectoryPanel.xib */; };
CE21AFBA1423EA6E00DE35BF /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339512E5DA350029EF25 /* MainMenu.xib */; };
CE21AFBB1423EA6E00DE35BF /* ProblemDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339712E5DA350029EF25 /* ProblemDialog.xib */; };
CE2A29F413213BE3005899AC /* ExtraFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2A29F313213BE3005899AC /* ExtraFairwareReminder.m */; }; CE2A29F413213BE3005899AC /* ExtraFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2A29F313213BE3005899AC /* ExtraFairwareReminder.m */; };
CE2A29F713213BFB005899AC /* ExtraFairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE2A29F513213BFB005899AC /* ExtraFairwareReminder.xib */; }; CE2A29F713213BFB005899AC /* ExtraFairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE2A29F513213BFB005899AC /* ExtraFairwareReminder.xib */; };
CE381C9609914ACE003581CE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CE381C9409914ACE003581CE /* AppDelegate.m */; }; CE381C9609914ACE003581CE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CE381C9409914ACE003581CE /* AppDelegate.m */; };
@ -33,9 +30,6 @@
CE381D0509915304003581CE /* dg_cocoa.plugin in Resources */ = {isa = PBXBuildFile; fileRef = CE381CF509915304003581CE /* dg_cocoa.plugin */; }; CE381D0509915304003581CE /* dg_cocoa.plugin in Resources */ = {isa = PBXBuildFile; fileRef = CE381CF509915304003581CE /* dg_cocoa.plugin */; };
CE4527AC12E5F6E700005A15 /* core.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE4527AA12E5F6E700005A15 /* core.strings */; }; CE4527AC12E5F6E700005A15 /* core.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE4527AA12E5F6E700005A15 /* core.strings */; };
CE54EB8D1423FBA200E3383A /* columns.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE54EB881423FBA200E3383A /* columns.strings */; }; CE54EB8D1423FBA200E3383A /* columns.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE54EB881423FBA200E3383A /* columns.strings */; };
CE54EB8E1423FBA200E3383A /* help in Resources */ = {isa = PBXBuildFile; fileRef = CE073F5409CAE1A3005C1D2F /* help */; };
CE54EB8F1423FBA200E3383A /* dg_cocoa.plugin in Resources */ = {isa = PBXBuildFile; fileRef = CE381CF509915304003581CE /* dg_cocoa.plugin */; };
CE54EB901423FBA200E3383A /* folder32.png in Resources */ = {isa = PBXBuildFile; fileRef = CEFC294509C89E3D00D9F998 /* folder32.png */; };
CE60180812DF3EA900236FDC /* HSRecentFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = CE60180712DF3EA900236FDC /* HSRecentFiles.m */; }; CE60180812DF3EA900236FDC /* HSRecentFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = CE60180712DF3EA900236FDC /* HSRecentFiles.m */; };
CE6044EC0FE6796200B71262 /* DetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6044EB0FE6796200B71262 /* DetailsPanel.m */; }; CE6044EC0FE6796200B71262 /* DetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6044EB0FE6796200B71262 /* DetailsPanel.m */; };
CE68EE6809ABC48000971085 /* DirectoryPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE68EE6609ABC48000971085 /* DirectoryPanel.m */; }; CE68EE6809ABC48000971085 /* DirectoryPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE68EE6609ABC48000971085 /* DirectoryPanel.m */; };
@ -586,13 +580,7 @@
CECB2AC513D867AD0081E295 /* about.xib in Resources */, CECB2AC513D867AD0081E295 /* about.xib in Resources */,
CECB2AC613D867AD0081E295 /* ErrorReportWindow.xib in Resources */, CECB2AC613D867AD0081E295 /* ErrorReportWindow.xib in Resources */,
CE7D24A91423B123002E2297 /* PrioritizeDialog.xib in Resources */, CE7D24A91423B123002E2297 /* PrioritizeDialog.xib in Resources */,
CE21AFB91423EA6E00DE35BF /* DirectoryPanel.xib in Resources */,
CE21AFBA1423EA6E00DE35BF /* MainMenu.xib in Resources */,
CE21AFBB1423EA6E00DE35BF /* ProblemDialog.xib in Resources */,
CE54EB8D1423FBA200E3383A /* columns.strings in Resources */, CE54EB8D1423FBA200E3383A /* columns.strings in Resources */,
CE54EB8E1423FBA200E3383A /* help in Resources */,
CE54EB8F1423FBA200E3383A /* dg_cocoa.plugin in Resources */,
CE54EB901423FBA200E3383A /* folder32.png in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };

View File

@ -10,8 +10,17 @@ install_cocoa_trans()
from hscommon.cocoa import signature from hscommon.cocoa import signature
from core.scanner import ScanType from core.scanner import ScanType
from core.app_cocoa import PyDupeGuruBase, PyDetailsPanel
from core_se.app_cocoa import DupeGuru from inter.app import PyDupeGuruBase
from inter.details_panel import PyDetailsPanel
from inter.directory_outline import PyDirectoryOutline
from inter.extra_fairware_reminder import PyExtraFairwareReminder
from inter.prioritize_dialog import PyPrioritizeDialog
from inter.problem_dialog import PyProblemDialog
from inter.problem_table import PyProblemTable
from inter.result_table import PyResultTable
from inter.stats_label import PyStatsLabel
from inter.app_se import DupeGuru
class PyDupeGuru(PyDupeGuruBase): class PyDupeGuru(PyDupeGuruBase):
def init(self): def init(self):