diff --git a/build.py b/build.py index f3513172..b30d916d 100644 --- a/build.py +++ b/build.py @@ -180,20 +180,22 @@ def build_cocoa_bridging_interfaces(): add_to_pythonpath('cocoa') add_to_pythonpath('cocoalib') from cocoa.inter2 import (PyGUIObject2, PyColumns2, ColumnsView, PyOutline2, OutlineView, - PySelectableList2, SelectableListView) + 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.result_table import PyResultTable, ResultTableView from inter.stats_label import PyStatsLabel, StatsLabelView - allclasses = [PyGUIObject2, PyColumns2, PyOutline2, PySelectableList2, PyDetailsPanel, + allclasses = [PyGUIObject2, PyColumns2, PyOutline2, PySelectableList2, PyTable2, PyDetailsPanel, PyDirectoryOutline, PyExtraFairwareReminder, PyPrioritizeDialog, PyPrioritizeList, - PyStatsLabel] + PyResultTable, PyStatsLabel] for class_ in allclasses: objp.o2p.generate_objc_code(class_, 'cocoa/autogen', inherit=True) - allclasses = [ColumnsView, OutlineView, SelectableListView, DetailsPanelView, DirectoryOutlineView, - ExtraFairwareReminderView, PrioritizeDialogView, PrioritizeListView, StatsLabelView] + allclasses = [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/PyResultTable.h b/cocoa/base/PyResultTable.h deleted file mode 100644 index 76abfc3b..00000000 --- a/cocoa/base/PyResultTable.h +++ /dev/null @@ -1,26 +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 "PyTable.h" - -@interface PyResultTable : PyTable -- (BOOL)powerMarkerMode; -- (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode; -- (BOOL)deltaValuesMode; -- (void)setDeltaValuesMode:(BOOL)aDeltaValuesMode; -- (NSArray *)deltaColumns; - -- (NSString *)valueForRow:(NSInteger)rowIndex column:(NSString *)aColumn; -- (BOOL)renameSelected:(NSString *)aNewName; -- (void)sortBy:(NSString *)aIdentifier ascending:(BOOL)aAscending; -- (void)markSelected; -- (void)removeSelected; -- (NSInteger)selectedDupeCount; -- (NSString *)pathAtIndex:(NSInteger)index; -@end \ No newline at end of file diff --git a/cocoa/base/ResultTable.h b/cocoa/base/ResultTable.h index 9106dd00..e60b2da8 100644 --- a/cocoa/base/ResultTable.h +++ b/cocoa/base/ResultTable.h @@ -8,15 +8,15 @@ http://www.hardcoded.net/licenses/bsd_license #import #import -#import "HSTable.h" +#import "HSTable2.h" #import "PyResultTable.h" -@interface ResultTable : HSTable +@interface ResultTable : HSTable2 { NSSet *_deltaColumns; } -- (id)initWithPy:(id)aPy view:(NSTableView *)aTableView; -- (PyResultTable *)py; +- (id)initWithView:(NSTableView *)aTableView; +- (PyResultTable *)model; - (BOOL)powerMarkerMode; - (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode; - (BOOL)deltaValuesMode; diff --git a/cocoa/base/ResultTable.m b/cocoa/base/ResultTable.m index 9bee8d13..d35531ee 100644 --- a/cocoa/base/ResultTable.m +++ b/cocoa/base/ResultTable.m @@ -12,30 +12,33 @@ http://www.hardcoded.net/licenses/bsd_license #import "Consts.h" #import "HSQuicklook.h" -@interface HSTable (private) +@interface HSTable2 (private) - (void)setPySelection; - (void)setViewSelection; @end @implementation ResultTable -- (id)initWithPy:(id)aPy view:(NSTableView *)aTableView +- (id)initWithView:(NSTableView *)aTableView; { - self = [super initWithPy:aPy view:aTableView]; - _deltaColumns = [[NSSet setWithArray:[[self py] deltaColumns]] retain]; - [self connect]; + PyResultTable *m = [[PyResultTable alloc] initWithModel:findHackishModel(@"result_table")]; + self = [super initWithModel:m tableView:aTableView]; + [m bindCallback:createCallback(@"ResultTableView", self)]; + [m release]; + _deltaColumns = [[NSSet setWithArray:[[self model] deltaColumns]] retain]; + [model connect]; return self; } - (void)dealloc { - [self disconnect]; + [model disconnect]; [_deltaColumns release]; [super dealloc]; } -- (PyResultTable *)py +- (PyResultTable *)model { - return (PyResultTable *)py; + return (PyResultTable *)model; } /* Private */ @@ -61,27 +64,27 @@ http://www.hardcoded.net/licenses/bsd_license /* Public */ - (BOOL)powerMarkerMode { - return [[self py] powerMarkerMode]; + return [[self model] powerMarkerMode]; } - (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode { - [[self py] setPowerMarkerMode:aPowerMarkerMode]; + [[self model] setPowerMarkerMode:aPowerMarkerMode]; } - (BOOL)deltaValuesMode { - return [[self py] deltaValuesMode]; + return [[self model] deltaValuesMode]; } - (void)setDeltaValuesMode:(BOOL)aDeltaValuesMode { - [[self py] setDeltaValuesMode:aDeltaValuesMode]; + [[self model] setDeltaValuesMode:aDeltaValuesMode]; } - (NSInteger)selectedDupeCount { - return [[self py] selectedDupeCount]; + return [[self model] selectedDupeCount]; } - (void)removeSelected @@ -93,7 +96,7 @@ http://www.hardcoded.net/licenses/bsd_license NSString *msg = [NSString stringWithFormat:msgFmt,selectedDupeCount]; if ([Dialogs askYesNo:msg] == NSAlertSecondButtonReturn) // NO return; - [[self py] removeSelected]; + [[self model] removeSelected]; } /* Datasource */ @@ -101,27 +104,27 @@ http://www.hardcoded.net/licenses/bsd_license { NSString *identifier = [column identifier]; if ([identifier isEqual:@"marked"]) { - return [[self py] valueForColumn:@"marked" row:row]; + return [[self model] valueForColumn:@"marked" row:row]; } - return [[self py] valueForRow:row column:identifier]; + return [[self model] valueForRow:row column:identifier]; } - (void)tableView:(NSTableView *)aTableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)column row:(NSInteger)row { NSString *identifier = [column identifier]; if ([identifier isEqual:@"marked"]) { - [[self py] setValue:object forColumn:identifier row:row]; + [[self model] setValue:object forColumn:identifier row:row]; } else if ([identifier isEqual:@"name"]) { - NSString *oldName = [[self py] valueForRow:row column:identifier]; + NSString *oldName = [[self model] valueForRow:row column:identifier]; NSString *newName = object; if (![newName isEqual:oldName]) { - BOOL renamed = [[self py] renameSelected:newName]; + BOOL renamed = [[self model] renameSelected:newName]; if (!renamed) { [Dialogs showMessage:[NSString stringWithFormat:TR(@"The name '%@' already exists."), newName]]; } else { - [tableView setNeedsDisplay:YES]; + [[self view] setNeedsDisplay:YES]; } } } @@ -130,16 +133,16 @@ http://www.hardcoded.net/licenses/bsd_license /* Delegate */ - (void)tableView:(NSTableView *)aTableView didClickTableColumn:(NSTableColumn *)tableColumn { - if ([[tableView sortDescriptors] count] < 1) + if ([[[self view] sortDescriptors] count] < 1) return; - NSSortDescriptor *sd = [[tableView sortDescriptors] objectAtIndex:0]; - [[self py] sortBy:[sd key] ascending:[sd ascending]]; + NSSortDescriptor *sd = [[[self view] sortDescriptors] objectAtIndex:0]; + [[self model] sortBy:[sd key] ascending:[sd ascending]]; } - (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)column row:(NSInteger)row { - BOOL isSelected = [tableView isRowSelected:row]; - BOOL isMarkable = n2b([[self py] valueForColumn:@"markable" row:row]); + BOOL isSelected = [[self view] isRowSelected:row]; + BOOL isMarkable = n2b([[self model] valueForColumn:@"markable" row:row]); if ([[column identifier] isEqual:@"marked"]) { [cell setEnabled:isMarkable]; // Low-tech solution, for indentation, but it works... @@ -173,21 +176,21 @@ http://www.hardcoded.net/licenses/bsd_license - (BOOL)tableViewHadSpacePressed:(NSTableView *)tableView { - [[self py] markSelected]; + [[self model] markSelected]; return YES; } /* Quicklook */ - (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel { - return [[[self py] selectedRows] count]; + return [[[self model] selectedRows] count]; } - (id )previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index { - NSArray *selectedRows = [[self py] selectedRows]; + NSArray *selectedRows = [[self model] selectedRows]; NSInteger absIndex = n2i([selectedRows objectAtIndex:index]); - NSString *path = [[self py] pathAtIndex:absIndex]; + NSString *path = [[self model] pathAtIndex:absIndex]; return [[HSQLPreviewItem alloc] initWithUrl:[NSURL fileURLWithPath:path] title:path]; } @@ -204,6 +207,6 @@ http://www.hardcoded.net/licenses/bsd_license /* Python --> Cocoa */ - (void)invalidateMarkings { - [tableView setNeedsDisplay:YES]; + [[self view] setNeedsDisplay:YES]; } @end \ No newline at end of file diff --git a/cocoa/base/ResultWindow.m b/cocoa/base/ResultWindow.m index 5d44e71b..712a095d 100644 --- a/cocoa/base/ResultWindow.m +++ b/cocoa/base/ResultWindow.m @@ -24,7 +24,7 @@ http://www.hardcoded.net/licenses/bsd_license columnsMenu = [app columnsMenu]; /* Put a cute iTunes-like bottom bar */ [[self window] setContentBorderThickness:28 forEdge:NSMinYEdge]; - table = [[ResultTable alloc] initWithPy:[py resultTable] view:matches]; + table = [[ResultTable alloc] initWithView:matches]; statsLabel = [[StatsLabel alloc] initWithLabelView:stats]; problemDialog = [[ProblemDialog alloc] initWithPy:py]; [self initResultColumns]; @@ -58,7 +58,7 @@ http://www.hardcoded.net/licenses/bsd_license /* Helpers */ - (void)fillColumnsMenu { - NSArray *menuItems = [[[table columns] py] menuItems]; + NSArray *menuItems = [[[table columns] model] menuItems]; for (NSInteger i=0; i < [menuItems count]; i++) { NSArray *pair = [menuItems objectAtIndex:i]; NSString *display = [pair objectAtIndex:0]; @@ -283,7 +283,7 @@ http://www.hardcoded.net/licenses/bsd_license - (IBAction)resetColumnsToDefault:(id)sender { - [[[table columns] py] resetToDefaults]; + [[[table columns] model] resetToDefaults]; } - (IBAction)revealSelected:(id)sender @@ -321,7 +321,7 @@ http://www.hardcoded.net/licenses/bsd_license - (IBAction)toggleColumn:(id)sender { NSMenuItem *mi = sender; - BOOL checked = [[[table columns] py] toggleMenuItem:[mi tag]]; + BOOL checked = [[[table columns] model] toggleMenuItem:[mi tag]]; [mi setState:checked ? NSOnState : NSOffState]; } @@ -406,7 +406,7 @@ http://www.hardcoded.net/licenses/bsd_license } } else if ([lastAction isEqualTo:jobScan]) { - NSInteger rowCount = [[table py] numberOfRows]; + NSInteger rowCount = [[table model] numberOfRows]; if (rowCount == 0) { [Dialogs showMessage:TR(@"No duplicates found.")]; } diff --git a/cocoa/inter/result_table.py b/cocoa/inter/result_table.py index ece69101..5ae424a9 100644 --- a/cocoa/inter/result_table.py +++ b/cocoa/inter/result_table.py @@ -1,53 +1,49 @@ -from cocoa.inter import signature, PyTable +from objp.util import dontwrap +from cocoa.inter2 import PyTable2, TableView -class PyResultTable(PyTable): - @signature('c@:') - def powerMarkerMode(self): - return self.py.power_marker +class ResultTableView(TableView): + def invalidateMarkings(self): pass + +class PyResultTable(PyTable2): + def powerMarkerMode(self) -> bool: + return self.model.power_marker - @signature('v@:c') - def setPowerMarkerMode_(self, value): - self.py.power_marker = value + def setPowerMarkerMode_(self, value: bool): + self.model.power_marker = value - @signature('c@:') - def deltaValuesMode(self): - return self.py.delta_values + def deltaValuesMode(self) -> bool: + return self.model.delta_values - @signature('v@:c') - def setDeltaValuesMode_(self, value): - self.py.delta_values = value + def setDeltaValuesMode_(self, value: bool): + self.model.delta_values = value - def deltaColumns(self): - return list(self.py.DELTA_COLUMNS) + def deltaColumns(self) -> list: + return list(self.model.DELTA_COLUMNS) - @signature('@@:i@') - def valueForRow_column_(self, row_index, column): - return self.py.get_row_value(row_index, column) + def valueForRow_column_(self, row_index: int, column: str) -> object: + return self.model.get_row_value(row_index, column) - @signature('c@:@') - def renameSelected_(self, newname): - return self.py.rename_selected(newname) + def renameSelected_(self, newname: str) -> bool: + return self.model.rename_selected(newname) - @signature('v@:@c') - def sortBy_ascending_(self, key, asc): - self.py.sort(key, asc) + def sortBy_ascending_(self, key: str, asc: bool): + self.model.sort(key, asc) def markSelected(self): - self.py.app.toggle_selected_mark_state() + self.model.app.toggle_selected_mark_state() def removeSelected(self): - self.py.app.remove_selected() + self.model.app.remove_selected() - @signature('i@:') - def selectedDupeCount(self): - return self.py.selected_dupe_count + def selectedDupeCount(self) -> int: + return self.model.selected_dupe_count - @signature('@@:i') - def pathAtIndex_(self, index): - row = self.py[index] + def pathAtIndex_(self, index: int) -> str: + row = self.model[index] return str(row._dupe.path) # python --> cocoa + @dontwrap def invalidate_markings(self): - self.cocoa.invalidateMarkings() + self.callback.invalidateMarkings() \ No newline at end of file diff --git a/cocoa/se/dg_cocoa.py b/cocoa/se/dg_cocoa.py index 0985dbf8..38c046a1 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 +from cocoa.inter2 import PySelectableList2, PyColumns2 from core.scanner import ScanType diff --git a/cocoa/se/dupeguru.xcodeproj/project.pbxproj b/cocoa/se/dupeguru.xcodeproj/project.pbxproj index 3d633d17..9733e232 100644 --- a/cocoa/se/dupeguru.xcodeproj/project.pbxproj +++ b/cocoa/se/dupeguru.xcodeproj/project.pbxproj @@ -65,6 +65,10 @@ CE9777D1141F8CB400C13FB5 /* PrioritizeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE9777CF141F8CB400C13FB5 /* PrioritizeDialog.xib */; }; CE9D842A14BE2AE900184165 /* PyExtraFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */; }; CE9FC22D14C080CF005C31FD /* PyGUIObject2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC22C14C080CF005C31FD /* PyGUIObject2.m */; }; + CE9FC23014C08622005C31FD /* PyTable2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC22F14C08622005C31FD /* PyTable2.m */; }; + CE9FC23314C0866F005C31FD /* PyResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC23214C0866F005C31FD /* PyResultTable.m */; }; + CE9FC23614C08A7E005C31FD /* HSTable2.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9FC23514C08A7E005C31FD /* HSTable2.m */; }; + 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 */; }; @@ -189,7 +193,6 @@ 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; }; CE665B3413225B07003F5CFB /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = ../base/fr.lproj/ExtraFairwareReminder.xib; sourceTree = SOURCE_ROOT; }; - CE6DD4E4124CA3070089A48D /* PyResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyResultTable.h; path = ../base/PyResultTable.h; sourceTree = SOURCE_ROOT; }; CE6DD4E5124CA3070089A48D /* ResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultTable.h; path = ../base/ResultTable.h; sourceTree = SOURCE_ROOT; }; CE6DD4E6124CA3070089A48D /* ResultTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultTable.m; path = ../base/ResultTable.m; sourceTree = SOURCE_ROOT; }; CE6DD545124CAF1F0089A48D /* HSTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSTableView.h; path = ../../cocoalib/views/HSTableView.h; sourceTree = SOURCE_ROOT; }; @@ -251,6 +254,14 @@ CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyExtraFairwareReminder.m; sourceTree = ""; }; CE9FC22B14C080CF005C31FD /* PyGUIObject2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyGUIObject2.h; sourceTree = ""; }; CE9FC22C14C080CF005C31FD /* PyGUIObject2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyGUIObject2.m; sourceTree = ""; }; + CE9FC22E14C08622005C31FD /* PyTable2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyTable2.h; sourceTree = ""; }; + CE9FC22F14C08622005C31FD /* PyTable2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyTable2.m; sourceTree = ""; }; + CE9FC23114C0866F005C31FD /* PyResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyResultTable.h; sourceTree = ""; }; + CE9FC23214C0866F005C31FD /* PyResultTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyResultTable.m; sourceTree = ""; }; + CE9FC23414C08A73005C31FD /* HSTable2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSTable2.h; sourceTree = ""; }; + CE9FC23514C08A7E005C31FD /* HSTable2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSTable2.m; sourceTree = ""; }; + CE9FC23714C08A92005C31FD /* HSGUIController2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSGUIController2.h; sourceTree = ""; }; + CE9FC23814C08A92005C31FD /* HSGUIController2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSGUIController2.m; sourceTree = ""; }; 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 = ""; }; @@ -417,24 +428,28 @@ children = ( CE9FC22B14C080CF005C31FD /* PyGUIObject2.h */, CE9FC22C14C080CF005C31FD /* PyGUIObject2.m */, + CE275C5814BF71DF00265960 /* PyColumns2.h */, + CE275C5914BF71DF00265960 /* PyColumns2.m */, CE587E9714C07BCF004CA031 /* PyOutline2.h */, CE587E9814C07BCF004CA031 /* PyOutline2.m */, CE587E9C14C0801F004CA031 /* PySelectableList2.h */, CE587E9D14C0801F004CA031 /* PySelectableList2.m */, + CE9FC22E14C08622005C31FD /* PyTable2.h */, + CE9FC22F14C08622005C31FD /* PyTable2.m */, CE3A3B4714BF19B8007898AB /* PyDetailsPanel.h */, CE3A3B4814BF19B8007898AB /* PyDetailsPanel.m */, CE9D842814BE2AE900184165 /* PyExtraFairwareReminder.h */, CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */, - CE1D091614BE0C6400CA6B8C /* PyStatsLabel.h */, - CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */, - CE275C5814BF71DF00265960 /* PyColumns2.h */, - CE275C5914BF71DF00265960 /* PyColumns2.m */, CE275C5414BF712B00265960 /* PyDirectoryOutline.h */, CE275C5514BF712B00265960 /* PyDirectoryOutline.m */, CE548CC214BF903D00D180CB /* PyPrioritizeDialog.h */, CE548CC314BF903D00D180CB /* PyPrioritizeDialog.m */, CE548CC414BF903D00D180CB /* PyPrioritizeList.h */, CE548CC514BF903D00D180CB /* PyPrioritizeList.m */, + CE9FC23114C0866F005C31FD /* PyResultTable.h */, + CE9FC23214C0866F005C31FD /* PyResultTable.m */, + CE1D091614BE0C6400CA6B8C /* PyStatsLabel.h */, + CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */, CE1D091414BE0C6400CA6B8C /* ObjP.h */, CE1D091514BE0C6400CA6B8C /* ObjP.m */, ); @@ -471,8 +486,12 @@ 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 */, CE548CBD14BF902000D180CB /* HSPopUpList2.m */, CE548CBE14BF902000D180CB /* HSSelectableList2.h */, @@ -554,7 +573,6 @@ isa = PBXGroup; children = ( CE1D091314BE0C6400CA6B8C /* autogen */, - CE6DD4E4124CA3070089A48D /* PyResultTable.h */, CE6DD4E5124CA3070089A48D /* ResultTable.h */, CE6DD4E6124CA3070089A48D /* ResultTable.m */, CE91F213113BC22D0010360B /* StatsLabel.h */, @@ -723,6 +741,10 @@ CE587E9A14C07BCF004CA031 /* PyOutline2.m in Sources */, CE587E9E14C0801F004CA031 /* PySelectableList2.m in Sources */, CE9FC22D14C080CF005C31FD /* PyGUIObject2.m in Sources */, + CE9FC23014C08622005C31FD /* PyTable2.m in Sources */, + CE9FC23314C0866F005C31FD /* PyResultTable.m in Sources */, + CE9FC23614C08A7E005C31FD /* HSTable2.m in Sources */, + CE9FC23914C08A92005C31FD /* HSGUIController2.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };