diff --git a/build.py b/build.py index b30d916d..ee4f00a3 100644 --- a/build.py +++ b/build.py @@ -179,23 +179,24 @@ def build_cocoa_bridging_interfaces(): import objp.p2o add_to_pythonpath('cocoa') add_to_pythonpath('cocoalib') - from cocoa.inter2 import (PyGUIObject2, PyColumns2, ColumnsView, PyOutline2, OutlineView, - PySelectableList2, SelectableListView, PyTable2, TableView) + from cocoa.inter2 import (PyGUIObject2, GUIObjectView, PyColumns2, ColumnsView, PyOutline2, + OutlineView, PySelectableList2, SelectableListView, PyTable2, TableView) from inter.details_panel import PyDetailsPanel, DetailsPanelView from inter.directory_outline import PyDirectoryOutline, DirectoryOutlineView from inter.extra_fairware_reminder import PyExtraFairwareReminder, ExtraFairwareReminderView from inter.prioritize_dialog import PyPrioritizeDialog, PrioritizeDialogView from inter.prioritize_list import PyPrioritizeList, PrioritizeListView + from inter.problem_dialog import PyProblemDialog from inter.result_table import PyResultTable, ResultTableView from inter.stats_label import PyStatsLabel, StatsLabelView allclasses = [PyGUIObject2, PyColumns2, PyOutline2, PySelectableList2, PyTable2, PyDetailsPanel, PyDirectoryOutline, PyExtraFairwareReminder, PyPrioritizeDialog, PyPrioritizeList, - PyResultTable, PyStatsLabel] + PyProblemDialog, PyResultTable, PyStatsLabel] for class_ in allclasses: objp.o2p.generate_objc_code(class_, 'cocoa/autogen', inherit=True) - allclasses = [ColumnsView, OutlineView, SelectableListView, TableView, DetailsPanelView, - DirectoryOutlineView, ExtraFairwareReminderView, PrioritizeDialogView, PrioritizeListView, - ResultTableView, StatsLabelView] + allclasses = [GUIObjectView, ColumnsView, OutlineView, SelectableListView, TableView, + DetailsPanelView, DirectoryOutlineView, ExtraFairwareReminderView, PrioritizeDialogView, + PrioritizeListView, ResultTableView, StatsLabelView] for class_ in allclasses: clsspec = objp.o2p.spec_from_python_class(class_) clsname = class_.__name__ diff --git a/cocoa/base/ProblemDialog.h b/cocoa/base/ProblemDialog.h index c558dbeb..7ca11712 100644 --- a/cocoa/base/ProblemDialog.h +++ b/cocoa/base/ProblemDialog.h @@ -7,19 +7,17 @@ http://www.hardcoded.net/licenses/bsd_license */ #import -#import "HSWindowController.h" -#import "PyApp.h" #import "PyProblemDialog.h" -#import "HSTable.h" +#import "HSTable2.h" -@interface ProblemDialog : HSWindowController +@interface ProblemDialog : NSWindowController { IBOutlet NSTableView *problemTableView; - HSTable *problemTable; + PyProblemDialog *model; + HSTable2 *problemTable; } -- (id)initWithPy:(PyApp *)aPy; -- (PyProblemDialog *)py; +- (id)init; - (void)initializeColumns; - (IBAction)revealSelected:(id)sender; diff --git a/cocoa/base/ProblemDialog.m b/cocoa/base/ProblemDialog.m index e66c30d9..2cd79e62 100644 --- a/cocoa/base/ProblemDialog.m +++ b/cocoa/base/ProblemDialog.m @@ -10,30 +10,27 @@ http://www.hardcoded.net/licenses/bsd_license #import "Utils.h" @implementation ProblemDialog -- (id)initWithPy:(PyApp *)aPy +- (id)init { - self = [super initWithNibName:@"ProblemDialog" pyClassName:@"PyProblemDialog" pyParent:aPy]; + self = [super initWithWindowNibName:@"ProblemDialog"]; [self window]; //So the detailsTable is initialized. - problemTable = [[HSTable alloc] initWithPyClassName:@"PyProblemTable" pyParent:[self py] view:problemTableView]; + model = [[PyProblemDialog alloc] initWithModel:findHackishModel(@"problem_dialog")]; + problemTable = [[HSTable2 alloc] initWithPyRef:[model problemTable] tableView:problemTableView]; [self initializeColumns]; - [self connect]; - [problemTable connect]; + [model connect]; + [[problemTable model] connect]; return self; } - (void)dealloc { - [problemTable disconnect]; - [self disconnect]; + [[problemTable model] disconnect]; + [model disconnect]; [problemTable release]; + [model release]; [super dealloc]; } -- (PyProblemDialog *)py -{ - return (PyProblemDialog *)py; -} - - (void)initializeColumns { HSColumnDef defs[] = { @@ -46,6 +43,6 @@ http://www.hardcoded.net/licenses/bsd_license - (IBAction)revealSelected:(id)sender { - [[self py] revealSelected]; + [model revealSelected]; } @end \ No newline at end of file diff --git a/cocoa/base/PyProblemDialog.h b/cocoa/base/PyProblemDialog.h deleted file mode 100644 index 4077adbc..00000000 --- a/cocoa/base/PyProblemDialog.h +++ /dev/null @@ -1,14 +0,0 @@ -/* -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 -#import "PyGUI.h" - -@interface PyProblemDialog : PyGUI -- (void)revealSelected; -@end \ No newline at end of file diff --git a/cocoa/base/ResultWindow.m b/cocoa/base/ResultWindow.m index 712a095d..b934ab6d 100644 --- a/cocoa/base/ResultWindow.m +++ b/cocoa/base/ResultWindow.m @@ -26,7 +26,7 @@ http://www.hardcoded.net/licenses/bsd_license [[self window] setContentBorderThickness:28 forEdge:NSMinYEdge]; table = [[ResultTable alloc] initWithView:matches]; statsLabel = [[StatsLabel alloc] initWithLabelView:stats]; - problemDialog = [[ProblemDialog alloc] initWithPy:py]; + problemDialog = [[ProblemDialog alloc] init]; [self initResultColumns]; [self fillColumnsMenu]; [matches setTarget:self]; diff --git a/cocoa/inter/problem_dialog.py b/cocoa/inter/problem_dialog.py index 5eb62364..7d9374ad 100644 --- a/cocoa/inter/problem_dialog.py +++ b/cocoa/inter/problem_dialog.py @@ -1,10 +1,9 @@ -from cocoa.inter import PyGUIObject +from objp.util import pyref +from cocoa.inter2 import PyGUIObject2 -from core.gui.problem_dialog import ProblemDialog - -class PyProblemDialog(PyGUIObject): - py_class = ProblemDialog +class PyProblemDialog(PyGUIObject2): + def problemTable(self) -> pyref: + return self.model.problem_table def revealSelected(self): - self.py.reveal_selected_dupe() - \ No newline at end of file + self.model.reveal_selected_dupe() diff --git a/cocoa/inter/problem_table.py b/cocoa/inter/problem_table.py deleted file mode 100644 index 965e1a75..00000000 --- a/cocoa/inter/problem_table.py +++ /dev/null @@ -1,6 +0,0 @@ -from cocoa.inter import PyTable - -from core.gui.problem_table import ProblemTable - -class PyProblemTable(PyTable): - py_class = ProblemTable \ No newline at end of file diff --git a/cocoa/se/dg_cocoa.py b/cocoa/se/dg_cocoa.py index 38c046a1..dfb8dd63 100644 --- a/cocoa/se/dg_cocoa.py +++ b/cocoa/se/dg_cocoa.py @@ -8,7 +8,7 @@ from hscommon.trans import install_gettext_trans_under_cocoa install_gettext_trans_under_cocoa() from cocoa.inter import signature -from cocoa.inter2 import PySelectableList2, PyColumns2 +from cocoa.inter2 import PySelectableList2, PyColumns2, PyTable2 from core.scanner import ScanType @@ -19,7 +19,6 @@ from inter.extra_fairware_reminder import PyExtraFairwareReminder from inter.prioritize_dialog import PyPrioritizeDialog from inter.prioritize_list import PyPrioritizeList 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 diff --git a/cocoa/se/dupeguru.xcodeproj/project.pbxproj b/cocoa/se/dupeguru.xcodeproj/project.pbxproj index 9733e232..5e1d6710 100644 --- a/cocoa/se/dupeguru.xcodeproj/project.pbxproj +++ b/cocoa/se/dupeguru.xcodeproj/project.pbxproj @@ -28,13 +28,13 @@ CE3A3B4914BF19B8007898AB /* PyDetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE3A3B4814BF19B8007898AB /* PyDetailsPanel.m */; }; CE45579B0AE3BC2B005A9546 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE45579A0AE3BC2B005A9546 /* Sparkle.framework */; }; CE4557B40AE3BC50005A9546 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE45579A0AE3BC2B005A9546 /* Sparkle.framework */; }; + CE4746D314C09C12001A66DE /* PyProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE4746D214C09C12001A66DE /* PyProblemDialog.m */; }; CE5335FC142BBFAF008E5374 /* HSQuicklook.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5335FB142BBFAF008E5374 /* HSQuicklook.m */; }; CE533603142BC034008E5374 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE533602142BC034008E5374 /* Quartz.framework */; }; CE548CC014BF902000D180CB /* HSPopUpList2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CBD14BF902000D180CB /* HSPopUpList2.m */; }; CE548CC114BF902000D180CB /* HSSelectableList2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CBF14BF902000D180CB /* HSSelectableList2.m */; }; CE548CC614BF903D00D180CB /* PyPrioritizeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CC314BF903D00D180CB /* PyPrioritizeDialog.m */; }; CE548CC714BF903D00D180CB /* PyPrioritizeList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CC514BF903D00D180CB /* PyPrioritizeList.m */; }; - CE54A87E148046F9008EEA77 /* HSColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CE54A87D148046F9008EEA77 /* HSColumns.m */; }; CE587E9A14C07BCF004CA031 /* PyOutline2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9814C07BCF004CA031 /* PyOutline2.m */; }; CE587E9E14C0801F004CA031 /* PySelectableList2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9D14C0801F004CA031 /* PySelectableList2.m */; }; CE647E571173024A006D28BA /* ProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE647E551173024A006D28BA /* ProblemDialog.m */; }; @@ -46,7 +46,6 @@ CE76FDC4111EE37C006618EA /* HSOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = CE76FDBF111EE37C006618EA /* HSOutlineView.m */; }; CE76FDC5111EE37C006618EA /* NSIndexPathAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE76FDC1111EE37C006618EA /* NSIndexPathAdditions.m */; }; CE76FDC6111EE37C006618EA /* NSTableViewAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE76FDC3111EE37C006618EA /* NSTableViewAdditions.m */; }; - CE76FDCF111EE38E006618EA /* HSGUIController.m in Sources */ = {isa = PBXBuildFile; fileRef = CE76FDC9111EE38E006618EA /* HSGUIController.m */; }; CE76FDD4111EE3A7006618EA /* DirectoryOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE76FDD2111EE3A7006618EA /* DirectoryOutline.m */; }; CE76FDF7111EE561006618EA /* NSEventAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE76FDF6111EE561006618EA /* NSEventAdditions.m */; }; CE79638612536C94008D405B /* FairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE79638412536C94008D405B /* FairwareReminder.xib */; }; @@ -59,7 +58,6 @@ CE81135812E5CE6D00A36C80 /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81135612E5CE6D00A36C80 /* Preferences.xib */; }; CE8113EB12E5CE9A00A36C80 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE8113E912E5CE9A00A36C80 /* Localizable.strings */; }; CE89240A14239CC30024CE4E /* PrioritizeList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE89240714239CC30024CE4E /* PrioritizeList.m */; }; - CE8C53BC117324CE0011B41F /* HSTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE8C53BB117324CE0011B41F /* HSTable.m */; }; CE91F216113BC22D0010360B /* StatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE91F214113BC22D0010360B /* StatsLabel.m */; }; CE9777CD141F8C2500C13FB5 /* PrioritizeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9777CC141F8C2500C13FB5 /* PrioritizeDialog.m */; }; CE9777D1141F8CB400C13FB5 /* PrioritizeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE9777CF141F8CB400C13FB5 /* PrioritizeDialog.xib */; }; @@ -71,7 +69,6 @@ CE9FC23914C08A92005C31FD /* HSGUIController2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC23814C08A92005C31FD /* HSGUIController2.m */; }; CEA175CA1461E8E600776591 /* locale in Resources */ = {isa = PBXBuildFile; fileRef = CEA175C91461E8E600776591 /* locale */; }; CEA450B814BDDFD7002DAAF2 /* dg_cocoa.py in Resources */ = {isa = PBXBuildFile; fileRef = CEA450B714BDDFD7002DAAF2 /* dg_cocoa.py */; }; - CEBE4D74111F0EE1009AAC6D /* HSWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CEBE4D73111F0EE1009AAC6D /* HSWindowController.m */; }; CEE7EA130FE675C80004E467 /* DetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE7EA120FE675C80004E467 /* DetailsPanel.m */; }; CEEB135209C837A2004D2330 /* dupeguru.icns in Resources */ = {isa = PBXBuildFile; fileRef = CEEB135109C837A2004D2330 /* dupeguru.icns */; }; CEF0ACCE12DF3C2000B32F7E /* HSRecentFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF0ACCD12DF3C2000B32F7E /* HSRecentFiles.m */; }; @@ -151,7 +148,6 @@ CE275C5514BF712B00265960 /* PyDirectoryOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyDirectoryOutline.m; sourceTree = ""; }; CE275C5814BF71DF00265960 /* PyColumns2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyColumns2.h; sourceTree = ""; }; CE275C5914BF71DF00265960 /* PyColumns2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyColumns2.m; sourceTree = ""; }; - CE275C5B14BF71FE00265960 /* PyColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyColumns.h; sourceTree = ""; }; CE27D3C212CCA43800859E67 /* HSAboutBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSAboutBox.h; path = ../../cocoalib/HSAboutBox.h; sourceTree = SOURCE_ROOT; }; CE27D3C312CCA43800859E67 /* HSAboutBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSAboutBox.m; path = ../../cocoalib/HSAboutBox.m; sourceTree = SOURCE_ROOT; }; CE31819A13D85D9B00B6D649 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../en.lproj/about.xib; sourceTree = ""; }; @@ -167,8 +163,9 @@ CE381C9B09914ADF003581CE /* ResultWindow.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ResultWindow.h; sourceTree = SOURCE_ROOT; }; CE3A3B4714BF19B8007898AB /* PyDetailsPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyDetailsPanel.h; sourceTree = ""; }; CE3A3B4814BF19B8007898AB /* PyDetailsPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyDetailsPanel.m; sourceTree = ""; }; - CE41672C141FE1E5004F3F0B /* HSTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSTable.h; sourceTree = ""; }; CE45579A0AE3BC2B005A9546 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = /Library/Frameworks/Sparkle.framework; sourceTree = ""; }; + CE4746D114C09C12001A66DE /* PyProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyProblemDialog.h; sourceTree = ""; }; + CE4746D214C09C12001A66DE /* PyProblemDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyProblemDialog.m; sourceTree = ""; }; CE5335FA142BBFAF008E5374 /* HSQuicklook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSQuicklook.h; path = ../../cocoalib/HSQuicklook.h; sourceTree = ""; }; CE5335FB142BBFAF008E5374 /* HSQuicklook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSQuicklook.m; path = ../../cocoalib/HSQuicklook.m; sourceTree = ""; }; CE533602142BC034008E5374 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; }; @@ -180,15 +177,12 @@ CE548CC314BF903D00D180CB /* PyPrioritizeDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyPrioritizeDialog.m; sourceTree = ""; }; CE548CC414BF903D00D180CB /* PyPrioritizeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyPrioritizeList.h; sourceTree = ""; }; CE548CC514BF903D00D180CB /* PyPrioritizeList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyPrioritizeList.m; sourceTree = ""; }; - CE54A87C148046F9008EEA77 /* HSColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSColumns.h; sourceTree = ""; }; - CE54A87D148046F9008EEA77 /* HSColumns.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSColumns.m; sourceTree = ""; }; CE587E9714C07BCF004CA031 /* PyOutline2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyOutline2.h; sourceTree = ""; }; CE587E9814C07BCF004CA031 /* PyOutline2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyOutline2.m; sourceTree = ""; }; CE587E9C14C0801F004CA031 /* PySelectableList2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList2.h; sourceTree = ""; }; CE587E9D14C0801F004CA031 /* PySelectableList2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PySelectableList2.m; sourceTree = ""; }; CE647E541173024A006D28BA /* ProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProblemDialog.h; path = ../base/ProblemDialog.h; sourceTree = SOURCE_ROOT; }; CE647E551173024A006D28BA /* ProblemDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProblemDialog.m; path = ../base/ProblemDialog.m; sourceTree = SOURCE_ROOT; }; - CE647E561173024A006D28BA /* PyProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyProblemDialog.h; path = ../base/PyProblemDialog.h; sourceTree = SOURCE_ROOT; }; CE665B2D13225ADD003F5CFB /* ExtraFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExtraFairwareReminder.h; path = ../base/ExtraFairwareReminder.h; sourceTree = SOURCE_ROOT; }; CE665B2E13225ADD003F5CFB /* ExtraFairwareReminder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ExtraFairwareReminder.m; path = ../base/ExtraFairwareReminder.m; sourceTree = SOURCE_ROOT; }; CE665B3213225AF8003F5CFB /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../base/en.lproj/ExtraFairwareReminder.xib; sourceTree = SOURCE_ROOT; }; @@ -204,9 +198,6 @@ CE76FDC1111EE37C006618EA /* NSIndexPathAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSIndexPathAdditions.m; sourceTree = ""; }; CE76FDC2111EE37C006618EA /* NSTableViewAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSTableViewAdditions.h; sourceTree = ""; }; CE76FDC3111EE37C006618EA /* NSTableViewAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSTableViewAdditions.m; sourceTree = ""; }; - CE76FDC8111EE38E006618EA /* HSGUIController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSGUIController.h; sourceTree = ""; }; - CE76FDC9111EE38E006618EA /* HSGUIController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSGUIController.m; sourceTree = ""; }; - CE76FDCD111EE38E006618EA /* PyGUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyGUI.h; sourceTree = ""; }; CE76FDD1111EE3A7006618EA /* DirectoryOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryOutline.h; path = ../base/DirectoryOutline.h; sourceTree = SOURCE_ROOT; }; CE76FDD2111EE3A7006618EA /* DirectoryOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DirectoryOutline.m; path = ../base/DirectoryOutline.m; sourceTree = SOURCE_ROOT; }; CE76FDF5111EE561006618EA /* NSEventAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSEventAdditions.h; path = ../../cocoalib/NSEventAdditions.h; sourceTree = SOURCE_ROOT; }; @@ -243,8 +234,6 @@ CE8113EC12E5CEA800A36C80 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = ../base/fr.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; }; CE89240614239CC30024CE4E /* PrioritizeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PrioritizeList.h; path = ../base/PrioritizeList.h; sourceTree = ""; }; CE89240714239CC30024CE4E /* PrioritizeList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PrioritizeList.m; path = ../base/PrioritizeList.m; sourceTree = ""; }; - CE8C53B61173248F0011B41F /* PyTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyTable.h; sourceTree = ""; }; - CE8C53BB117324CE0011B41F /* HSTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSTable.m; sourceTree = ""; }; CE91F213113BC22D0010360B /* StatsLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StatsLabel.h; path = ../base/StatsLabel.h; sourceTree = SOURCE_ROOT; }; CE91F214113BC22D0010360B /* StatsLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = StatsLabel.m; path = ../base/StatsLabel.m; sourceTree = SOURCE_ROOT; }; CE9777CB141F8C2500C13FB5 /* PrioritizeDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PrioritizeDialog.h; path = ../base/PrioritizeDialog.h; sourceTree = ""; }; @@ -265,8 +254,6 @@ CEA175C91461E8E600776591 /* locale */ = {isa = PBXFileReference; lastKnownFileType = folder; name = locale; path = ../../build/locale; sourceTree = ""; }; CEA450B714BDDFD7002DAAF2 /* dg_cocoa.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = dg_cocoa.py; path = ../../build/dg_cocoa.py; sourceTree = ""; }; CEB57990146ADC5100EDF7D7 /* HSConsts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSConsts.h; path = ../../cocoalib/HSConsts.h; sourceTree = ""; }; - CEBE4D72111F0EE1009AAC6D /* HSWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSWindowController.h; sourceTree = ""; }; - CEBE4D73111F0EE1009AAC6D /* HSWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSWindowController.m; sourceTree = ""; }; CECFFF1C13CDF8D0003A4518 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/DetailsPanel.xib; sourceTree = SOURCE_ROOT; }; CECFFF1D13CDF8D0003A4518 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/DirectoryPanel.xib; sourceTree = SOURCE_ROOT; }; CECFFF1E13CDF8D0003A4518 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/ExtraFairwareReminder.xib; sourceTree = SOURCE_ROOT; }; @@ -287,6 +274,11 @@ CEE7EA110FE675C80004E467 /* DetailsPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailsPanel.h; path = ../base/DetailsPanel.h; sourceTree = SOURCE_ROOT; }; CEE7EA120FE675C80004E467 /* DetailsPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DetailsPanel.m; path = ../base/DetailsPanel.m; sourceTree = SOURCE_ROOT; }; CEEB135109C837A2004D2330 /* dupeguru.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = dupeguru.icns; sourceTree = ""; }; + CEEF2A1114C09EDF0082545A /* PyColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyColumns.h; sourceTree = ""; }; + CEEF2A1214C09EDF0082545A /* PyGUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyGUI.h; sourceTree = ""; }; + CEEF2A1314C09EDF0082545A /* PyOutline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyOutline.h; sourceTree = ""; }; + CEEF2A1414C09EDF0082545A /* PySelectableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList.h; sourceTree = ""; }; + CEEF2A1514C09EDF0082545A /* PyTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyTable.h; sourceTree = ""; }; CEF0ACCC12DF3C2000B32F7E /* HSRecentFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSRecentFiles.h; path = ../../cocoalib/HSRecentFiles.h; sourceTree = SOURCE_ROOT; }; CEF0ACCD12DF3C2000B32F7E /* HSRecentFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSRecentFiles.m; path = ../../cocoalib/HSRecentFiles.m; sourceTree = SOURCE_ROOT; }; CEF27A9C1423EAD90048ADFA /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/PrioritizeDialog.xib; sourceTree = ""; }; @@ -446,6 +438,8 @@ CE548CC314BF903D00D180CB /* PyPrioritizeDialog.m */, CE548CC414BF903D00D180CB /* PyPrioritizeList.h */, CE548CC514BF903D00D180CB /* PyPrioritizeList.m */, + CE4746D114C09C12001A66DE /* PyProblemDialog.h */, + CE4746D214C09C12001A66DE /* PyProblemDialog.m */, CE9FC23114C0866F005C31FD /* PyResultTable.h */, CE9FC23214C0866F005C31FD /* PyResultTable.m */, CE1D091614BE0C6400CA6B8C /* PyStatsLabel.h */, @@ -476,20 +470,12 @@ CE76FDC7111EE38E006618EA /* controllers */ = { isa = PBXGroup; children = ( - CE54A87C148046F9008EEA77 /* HSColumns.h */, - CE54A87D148046F9008EEA77 /* HSColumns.m */, CE275C4C14BF6C5600265960 /* HSColumns2.h */, CE275C4D14BF6C5600265960 /* HSColumns2.m */, - CEBE4D72111F0EE1009AAC6D /* HSWindowController.h */, - CEBE4D73111F0EE1009AAC6D /* HSWindowController.m */, CE275C4E14BF6C5600265960 /* HSOutline2.h */, CE275C4F14BF6C5600265960 /* HSOutline2.m */, - CE76FDC8111EE38E006618EA /* HSGUIController.h */, - CE76FDC9111EE38E006618EA /* HSGUIController.m */, CE9FC23714C08A92005C31FD /* HSGUIController2.h */, CE9FC23814C08A92005C31FD /* HSGUIController2.m */, - CE41672C141FE1E5004F3F0B /* HSTable.h */, - CE8C53BB117324CE0011B41F /* HSTable.m */, CE9FC23414C08A73005C31FD /* HSTable2.h */, CE9FC23514C08A7E005C31FD /* HSTable2.m */, CE548CBC14BF902000D180CB /* HSPopUpList2.h */, @@ -501,16 +487,18 @@ path = ../../cocoalib/controllers; sourceTree = SOURCE_ROOT; }; - CE76FDCC111EE38E006618EA /* proxies */ = { + CEEF2A1014C09EDF0082545A /* proxies */ = { isa = PBXGroup; children = ( - CE275C5B14BF71FE00265960 /* PyColumns.h */, - CE76FDCD111EE38E006618EA /* PyGUI.h */, - CE8C53B61173248F0011B41F /* PyTable.h */, + CEEF2A1114C09EDF0082545A /* PyColumns.h */, + CEEF2A1214C09EDF0082545A /* PyGUI.h */, + CEEF2A1314C09EDF0082545A /* PyOutline.h */, + CEEF2A1414C09EDF0082545A /* PySelectableList.h */, + CEEF2A1514C09EDF0082545A /* PyTable.h */, ); name = proxies; path = ../../cocoalib/proxies; - sourceTree = SOURCE_ROOT; + sourceTree = ""; }; CEEFC0CA10943849001F3A39 /* xib */ = { isa = PBXGroup; @@ -538,10 +526,10 @@ CEFC7F890FC9513600CD5728 /* cocoalib */ = { isa = PBXGroup; children = ( + CEEF2A1014C09EDF0082545A /* proxies */, CE76FDF5111EE561006618EA /* NSEventAdditions.h */, CE76FDF6111EE561006618EA /* NSEventAdditions.m */, CE76FDC7111EE38E006618EA /* controllers */, - CE76FDCC111EE38E006618EA /* proxies */, CE76FDBD111EE37C006618EA /* views */, CE19BC5F11199231007CCEB0 /* xib */, CEB57990146ADC5100EDF7D7 /* HSConsts.h */, @@ -593,7 +581,6 @@ CEFC7FB80FC951A700CD5728 /* ResultWindow.m */, CE647E541173024A006D28BA /* ProblemDialog.h */, CE647E551173024A006D28BA /* ProblemDialog.m */, - CE647E561173024A006D28BA /* PyProblemDialog.h */, CE9777CB141F8C2500C13FB5 /* PrioritizeDialog.h */, CE9777CC141F8C2500C13FB5 /* PrioritizeDialog.m */, CE89240614239CC30024CE4E /* PrioritizeList.h */, @@ -709,13 +696,10 @@ CE76FDC4111EE37C006618EA /* HSOutlineView.m in Sources */, CE76FDC5111EE37C006618EA /* NSIndexPathAdditions.m in Sources */, CE76FDC6111EE37C006618EA /* NSTableViewAdditions.m in Sources */, - CE76FDCF111EE38E006618EA /* HSGUIController.m in Sources */, CE76FDD4111EE3A7006618EA /* DirectoryOutline.m in Sources */, CE76FDF7111EE561006618EA /* NSEventAdditions.m in Sources */, - CEBE4D74111F0EE1009AAC6D /* HSWindowController.m in Sources */, CE91F216113BC22D0010360B /* StatsLabel.m in Sources */, CE647E571173024A006D28BA /* ProblemDialog.m in Sources */, - CE8C53BC117324CE0011B41F /* HSTable.m in Sources */, CE6DD4E7124CA3070089A48D /* ResultTable.m in Sources */, CE6DD547124CAF1F0089A48D /* HSTableView.m in Sources */, CE79638C12536F4E008D405B /* HSFairwareReminder.m in Sources */, @@ -725,7 +709,6 @@ CE9777CD141F8C2500C13FB5 /* PrioritizeDialog.m in Sources */, CE89240A14239CC30024CE4E /* PrioritizeList.m in Sources */, CE5335FC142BBFAF008E5374 /* HSQuicklook.m in Sources */, - CE54A87E148046F9008EEA77 /* HSColumns.m in Sources */, CE1D091814BE0C6400CA6B8C /* ObjP.m in Sources */, CE1D091914BE0C6400CA6B8C /* PyStatsLabel.m in Sources */, CE9D842A14BE2AE900184165 /* PyExtraFairwareReminder.m in Sources */, @@ -745,6 +728,7 @@ CE9FC23314C0866F005C31FD /* PyResultTable.m in Sources */, CE9FC23614C08A7E005C31FD /* HSTable2.m in Sources */, CE9FC23914C08A92005C31FD /* HSGUIController2.m in Sources */, + CE4746D314C09C12001A66DE /* PyProblemDialog.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/core/app.py b/core/app.py index c3439d68..bbbc20ce 100644 --- a/core/app.py +++ b/core/app.py @@ -28,6 +28,7 @@ from .gui.details_panel import DetailsPanel from .gui.directory_tree import DirectoryTree from .gui.extra_fairware_reminder import ExtraFairwareReminder from .gui.prioritize_dialog import PrioritizeDialog +from .gui.problem_dialog import ProblemDialog from .gui.stats_label import StatsLabel HAD_FIRST_LAUNCH_PREFERENCE = 'HadFirstLaunch' @@ -109,6 +110,7 @@ class DupeGuru(RegistrableApplication, Broadcaster): self.directory_tree = DirectoryTree(None, self) self.extra_fairware_reminder = ExtraFairwareReminder(None, self) self.prioritize_dialog = PrioritizeDialog(None, self) + self.problem_dialog = ProblemDialog(None, self) self.stats_label = StatsLabel(None, self) # subclasses must create self.result_table diff --git a/core/gui/problem_dialog.py b/core/gui/problem_dialog.py index 2b13f4d3..628b3bf6 100644 --- a/core/gui/problem_dialog.py +++ b/core/gui/problem_dialog.py @@ -9,12 +9,14 @@ from hscommon.notify import Broadcaster from .base import GUIObject +from .problem_table import ProblemTable class ProblemDialog(GUIObject, Broadcaster): def __init__(self, view, app): GUIObject.__init__(self, view, app) Broadcaster.__init__(self) self._selected_dupe = None + self.problem_table = ProblemTable(None, self) def reveal_selected_dupe(self): if self._selected_dupe is not None: