diff --git a/build.py b/build.py index 5da7bcc2..9a86657c 100644 --- a/build.py +++ b/build.py @@ -179,7 +179,7 @@ def build_cocoa_bridging_interfaces(): import objp.p2o add_to_pythonpath('cocoa') add_to_pythonpath('cocoalib') - from cocoa.inter2 import (PyGUIObject, GUIObjectView, PyColumns, ColumnsView, PyOutline, + from cocoa.inter import (PyGUIObject, GUIObjectView, PyColumns, ColumnsView, PyOutline, OutlineView, PySelectableList, SelectableListView, PyTable, TableView, PyFairware) from inter.details_panel import PyDetailsPanel, DetailsPanelView from inter.directory_outline import PyDirectoryOutline, DirectoryOutlineView diff --git a/cocoa/base/AppDelegate.m b/cocoa/base/AppDelegate.m index a96f7d39..bfeb789e 100644 --- a/cocoa/base/AppDelegate.m +++ b/cocoa/base/AppDelegate.m @@ -62,7 +62,7 @@ http://www.hardcoded.net/licenses/bsd_license - (DetailsPanel *)createDetailsPanel { - return [[DetailsPanel alloc] init]; + return [[DetailsPanel alloc] initWithPyRef:[model detailsPanel]]; } - (NSString *)homepageURL @@ -210,7 +210,7 @@ http://www.hardcoded.net/licenses/bsd_license /* model --> view */ - (void)showExtraFairwareReminder { - ExtraFairwareReminder *dialog = [[ExtraFairwareReminder alloc] init]; + ExtraFairwareReminder *dialog = [[ExtraFairwareReminder alloc] initWithPyRef:[model extraFairwareReminder]]; [dialog start]; [NSApp runModalForWindow:[dialog window]]; [dialog close]; diff --git a/cocoa/base/DetailsPanel.h b/cocoa/base/DetailsPanel.h index b2e8f292..221be96f 100644 --- a/cocoa/base/DetailsPanel.h +++ b/cocoa/base/DetailsPanel.h @@ -7,16 +7,17 @@ http://www.hardcoded.net/licenses/bsd_license */ #import +#import #import "PyDetailsPanel.h" @interface DetailsPanel : NSWindowController { IBOutlet NSTableView *detailsTable; - PyDetailsPanel *py; + PyDetailsPanel *model; } -- (id)init; -- (PyDetailsPanel *)py; +- (id)initWithPyRef:(PyObject *)aPyRef; +- (PyDetailsPanel *)model; - (BOOL)isVisible; - (void)toggleVisibility; diff --git a/cocoa/base/DetailsPanel.m b/cocoa/base/DetailsPanel.m index ce49743c..d3dd50e8 100644 --- a/cocoa/base/DetailsPanel.m +++ b/cocoa/base/DetailsPanel.m @@ -10,26 +10,26 @@ http://www.hardcoded.net/licenses/bsd_license #import "Utils.h" @implementation DetailsPanel -- (id)init +- (id)initWithPyRef:(PyObject *)aPyRef { self = [super initWithWindowNibName:@"DetailsPanel"]; [self window]; //So the detailsTable is initialized. - py = [[PyDetailsPanel alloc] initWithModel:findHackishModel(@"details_panel")]; - [py bindCallback:createCallback(@"DetailsPanelView", self)]; - [py connect]; + model = [[PyDetailsPanel alloc] initWithModel:aPyRef]; + [model bindCallback:createCallback(@"DetailsPanelView", self)]; + [model connect]; return self; } - (void)dealloc { - [py disconnect]; - [py release]; + [model disconnect]; + [model release]; [super dealloc]; } -- (PyDetailsPanel *)py +- (PyDetailsPanel *)model { - return (PyDetailsPanel *)py; + return (PyDetailsPanel *)model; } - (void)refreshDetails @@ -56,12 +56,12 @@ http://www.hardcoded.net/licenses/bsd_license /* NSTableView Delegate */ - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { - return [[self py] numberOfRows]; + return [[self model] numberOfRows]; } - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)column row:(NSInteger)row { - return [[self py] valueForColumn:[column identifier] row:row]; + return [[self model] valueForColumn:[column identifier] row:row]; } /* Python --> Cocoa */ diff --git a/cocoa/base/DirectoryOutline.h b/cocoa/base/DirectoryOutline.h index d1552a02..05a5e739 100644 --- a/cocoa/base/DirectoryOutline.h +++ b/cocoa/base/DirectoryOutline.h @@ -7,12 +7,13 @@ http://www.hardcoded.net/licenses/bsd_license */ #import +#import #import "HSOutline.h" #import "PyDirectoryOutline.h" #define DGAddedFoldersNotification @"DGAddedFoldersNotification" @interface DirectoryOutline : HSOutline {} -- (id)initWithOutlineView:(HSOutlineView *)aOutlineView; +- (id)initWithPyRef:(PyObject *)aPyRef outlineView:(HSOutlineView *)aOutlineView; - (PyDirectoryOutline *)py; @end; \ No newline at end of file diff --git a/cocoa/base/DirectoryOutline.m b/cocoa/base/DirectoryOutline.m index 086fe5d6..b38646d8 100644 --- a/cocoa/base/DirectoryOutline.m +++ b/cocoa/base/DirectoryOutline.m @@ -10,9 +10,9 @@ http://www.hardcoded.net/licenses/bsd_license #import "Utils.h" @implementation DirectoryOutline -- (id)initWithOutlineView:(HSOutlineView *)aOutlineView +- (id)initWithPyRef:(PyObject *)aPyRef outlineView:(HSOutlineView *)aOutlineView { - PyDirectoryOutline *model = [[PyDirectoryOutline alloc] initWithModel:findHackishModel(@"directory_tree")]; + PyDirectoryOutline *model = [[PyDirectoryOutline alloc] initWithModel:aPyRef]; self = [super initWithPy:model view:aOutlineView]; [model bindCallback:createCallback(@"DirectoryOutlineView", self)]; [model release]; diff --git a/cocoa/base/DirectoryPanel.m b/cocoa/base/DirectoryPanel.m index 28187046..33dc4f4e 100644 --- a/cocoa/base/DirectoryPanel.m +++ b/cocoa/base/DirectoryPanel.m @@ -24,7 +24,7 @@ http://www.hardcoded.net/licenses/bsd_license [self fillPopUpMenu]; _recentDirectories = [[HSRecentFiles alloc] initWithName:@"recentDirectories" menu:[addButtonPopUp menu]]; [_recentDirectories setDelegate:self]; - outline = [[DirectoryOutline alloc] initWithOutlineView:outlineView]; + outline = [[DirectoryOutline alloc] initWithPyRef:[model directoryTree] outlineView:outlineView]; [self refreshRemoveButtonText]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(directorySelectionChanged:) name:NSOutlineViewSelectionDidChangeNotification object:outlineView]; diff --git a/cocoa/base/ExtraFairwareReminder.h b/cocoa/base/ExtraFairwareReminder.h index 90b27209..ff2ea08a 100644 --- a/cocoa/base/ExtraFairwareReminder.h +++ b/cocoa/base/ExtraFairwareReminder.h @@ -13,11 +13,11 @@ http://www.hardcoded.net/licenses/bsd_license { IBOutlet NSButton *continueButton; - PyExtraFairwareReminder *py; + PyExtraFairwareReminder *model; NSTimer *timer; } -- (id)init; -- (PyExtraFairwareReminder *)py; +- (id)initWithPyRef:(PyObject *)aPyRef; +- (PyExtraFairwareReminder *)model; - (void)start; - (void)updateButton; diff --git a/cocoa/base/ExtraFairwareReminder.m b/cocoa/base/ExtraFairwareReminder.m index ff044198..8643dfd4 100644 --- a/cocoa/base/ExtraFairwareReminder.m +++ b/cocoa/base/ExtraFairwareReminder.m @@ -10,36 +10,36 @@ http://www.hardcoded.net/licenses/bsd_license #import "Utils.h" @implementation ExtraFairwareReminder -- (id)init +- (id)initWithPyRef:(PyObject *)aPyRef { self = [super initWithWindowNibName:@"ExtraFairwareReminder"]; [self window]; [continueButton setEnabled:NO]; - py = [[PyExtraFairwareReminder alloc] initWithModel:findHackishModel(@"extra_fairware_reminder")]; - [py bindCallback:createCallback(@"ExtraFairwareReminderView", self)]; + model = [[PyExtraFairwareReminder alloc] initWithModel:aPyRef]; + [model bindCallback:createCallback(@"ExtraFairwareReminderView", self)]; return self; } - (void)dealloc { - [py release]; + [model release]; [timer release]; [super dealloc]; } -- (PyExtraFairwareReminder *)py +- (PyExtraFairwareReminder *)model { - return (PyExtraFairwareReminder *)py; + return (PyExtraFairwareReminder *)model; } - (void)start { - [[self py] start]; + [[self model] start]; } - (void)updateButton { - [[self py] updateButton]; + [[self model] updateButton]; } - (IBAction)continue:(id)sender diff --git a/cocoa/base/PrioritizeDialog.h b/cocoa/base/PrioritizeDialog.h index 7c3ca852..e425ccd4 100644 --- a/cocoa/base/PrioritizeDialog.h +++ b/cocoa/base/PrioritizeDialog.h @@ -18,13 +18,13 @@ http://www.hardcoded.net/licenses/bsd_license IBOutlet NSTableView *criteriaTableView; IBOutlet NSTableView *prioritizationTableView; - PyPrioritizeDialog *py; + PyPrioritizeDialog *model; HSPopUpList *categoryPopUp; HSSelectableList *criteriaList; PrioritizeList *prioritizationList; } -- (id)init; -- (PyPrioritizeDialog *)py; +- (id)initWithPyRef:(PyObject *)aPyRef; +- (PyPrioritizeDialog *)model; - (IBAction)addSelected:(id)sender; - (IBAction)removeSelected:(id)sender; diff --git a/cocoa/base/PrioritizeDialog.m b/cocoa/base/PrioritizeDialog.m index 9f06b24e..51a4428b 100644 --- a/cocoa/base/PrioritizeDialog.m +++ b/cocoa/base/PrioritizeDialog.m @@ -10,41 +10,42 @@ http://www.hardcoded.net/licenses/bsd_license #import "Utils.h" @implementation PrioritizeDialog -- (id)init +- (id)initWithPyRef:(PyObject *)aPyRef { self = [super initWithWindowNibName:@"PrioritizeDialog"]; [self window]; - py = [[PyPrioritizeDialog alloc] initWithModel:findHackishModel(@"prioritize_dialog")]; - [py bindCallback:createCallback(@"PrioritizeDialogView", self)]; - categoryPopUp = [[HSPopUpList alloc] initWithPyRef:[[self py] categoryList] popupView:categoryPopUpView]; - criteriaList = [[HSSelectableList alloc] initWithPyRef:[[self py] criteriaList] tableView:criteriaTableView]; - prioritizationList = [[PrioritizeList alloc] initWithPyRef:[[self py] prioritizationList] tableView:prioritizationTableView]; - [py connect]; + model = [[PyPrioritizeDialog alloc] initWithModel:aPyRef]; + [model bindCallback:createCallback(@"PrioritizeDialogView", self)]; + categoryPopUp = [[HSPopUpList alloc] initWithPyRef:[[self model] categoryList] popupView:categoryPopUpView]; + criteriaList = [[HSSelectableList alloc] initWithPyRef:[[self model] criteriaList] tableView:criteriaTableView]; + prioritizationList = [[PrioritizeList alloc] initWithPyRef:[[self model] prioritizationList] tableView:prioritizationTableView]; + [model connect]; return self; } - (void)dealloc { - [py disconnect]; + [model disconnect]; [categoryPopUp release]; [criteriaList release]; [prioritizationList release]; + [model release]; [super dealloc]; } -- (PyPrioritizeDialog *)py +- (PyPrioritizeDialog *)model { - return (PyPrioritizeDialog *)py; + return (PyPrioritizeDialog *)model; } - (IBAction)addSelected:(id)sender { - [[self py] addSelected]; + [[self model] addSelected]; } - (IBAction)removeSelected:(id)sender { - [[self py] removeSelected]; + [[self model] removeSelected]; } - (IBAction)ok:(id)sender diff --git a/cocoa/base/ProblemDialog.h b/cocoa/base/ProblemDialog.h index 4359081e..4c1bbd06 100644 --- a/cocoa/base/ProblemDialog.h +++ b/cocoa/base/ProblemDialog.h @@ -17,7 +17,7 @@ http://www.hardcoded.net/licenses/bsd_license PyProblemDialog *model; HSTable *problemTable; } -- (id)init; +- (id)initWithPyRef:(PyObject *)aPyRef; - (void)initializeColumns; - (IBAction)revealSelected:(id)sender; diff --git a/cocoa/base/ProblemDialog.m b/cocoa/base/ProblemDialog.m index d356a404..37af4e80 100644 --- a/cocoa/base/ProblemDialog.m +++ b/cocoa/base/ProblemDialog.m @@ -10,11 +10,11 @@ http://www.hardcoded.net/licenses/bsd_license #import "Utils.h" @implementation ProblemDialog -- (id)init +- (id)initWithPyRef:(PyObject *)aPyRef { self = [super initWithWindowNibName:@"ProblemDialog"]; [self window]; //So the detailsTable is initialized. - model = [[PyProblemDialog alloc] initWithModel:findHackishModel(@"problem_dialog")]; + model = [[PyProblemDialog alloc] initWithModel:aPyRef]; problemTable = [[HSTable alloc] initWithPyRef:[model problemTable] tableView:problemTableView]; [self initializeColumns]; [model connect]; diff --git a/cocoa/base/ResultTable.h b/cocoa/base/ResultTable.h index 3b6fd43c..071f9a0c 100644 --- a/cocoa/base/ResultTable.h +++ b/cocoa/base/ResultTable.h @@ -15,7 +15,7 @@ http://www.hardcoded.net/licenses/bsd_license { NSSet *_deltaColumns; } -- (id)initWithView:(NSTableView *)aTableView; +- (id)initWithPyRef:(PyObject *)aPyRef view:(NSTableView *)aTableView; - (PyResultTable *)model; - (BOOL)powerMarkerMode; - (void)setPowerMarkerMode:(BOOL)aPowerMarkerMode; diff --git a/cocoa/base/ResultTable.m b/cocoa/base/ResultTable.m index 095ba859..19b57b50 100644 --- a/cocoa/base/ResultTable.m +++ b/cocoa/base/ResultTable.m @@ -18,9 +18,9 @@ http://www.hardcoded.net/licenses/bsd_license @end @implementation ResultTable -- (id)initWithView:(NSTableView *)aTableView; +- (id)initWithPyRef:(PyObject *)aPyRef view:(NSTableView *)aTableView { - PyResultTable *m = [[PyResultTable alloc] initWithModel:findHackishModel(@"result_table")]; + PyResultTable *m = [[PyResultTable alloc] initWithModel:aPyRef]; self = [super initWithModel:m tableView:aTableView]; [m bindCallback:createCallback(@"ResultTableView", self)]; [m release]; diff --git a/cocoa/base/ResultWindow.m b/cocoa/base/ResultWindow.m index f9e6431f..868a3d51 100644 --- a/cocoa/base/ResultWindow.m +++ b/cocoa/base/ResultWindow.m @@ -24,9 +24,9 @@ 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] initWithView:matches]; - statsLabel = [[StatsLabel alloc] initWithLabelView:stats]; - problemDialog = [[ProblemDialog alloc] init]; + table = [[ResultTable alloc] initWithPyRef:[model resultTable] view:matches]; + statsLabel = [[StatsLabel alloc] initWithPyRef:[model statsLabel] view:stats]; + problemDialog = [[ProblemDialog alloc] initWithPyRef:[model problemDialog]]; [self initResultColumns]; [self fillColumnsMenu]; [matches setTarget:self]; @@ -272,10 +272,10 @@ http://www.hardcoded.net/licenses/bsd_license - (IBAction)reprioritizeResults:(id)sender { - PrioritizeDialog *dlg = [[PrioritizeDialog alloc] init]; + PrioritizeDialog *dlg = [[PrioritizeDialog alloc] initWithPyRef:[model prioritizeDialog]]; NSInteger result = [NSApp runModalForWindow:[dlg window]]; if (result == NSRunStoppedResponse) { - [[dlg py] performReprioritization]; + [[dlg model] performReprioritization]; } [dlg release]; [[self window] makeKeyAndOrderFront:nil]; diff --git a/cocoa/base/StatsLabel.h b/cocoa/base/StatsLabel.h index 7fbc677d..00c040f4 100644 --- a/cocoa/base/StatsLabel.h +++ b/cocoa/base/StatsLabel.h @@ -7,13 +7,11 @@ http://www.hardcoded.net/licenses/bsd_license */ #import +#import "HSGUIController.h" #import "PyStatsLabel.h" -@interface StatsLabel : NSObject { - PyStatsLabel *py; - NSTextField *view; -} -- (id)initWithLabelView:(NSTextField *)aLabelView; -- (PyStatsLabel *)py; +@interface StatsLabel : HSGUIController {} +- (id)initWithPyRef:(PyObject *)aPyRef view:(NSTextField *)aLabelView; +- (PyStatsLabel *)model; - (NSTextField *)labelView; @end \ No newline at end of file diff --git a/cocoa/base/StatsLabel.m b/cocoa/base/StatsLabel.m index 8cca04ed..15881688 100644 --- a/cocoa/base/StatsLabel.m +++ b/cocoa/base/StatsLabel.m @@ -10,27 +10,27 @@ http://www.hardcoded.net/licenses/bsd_license #import "Utils.h" @implementation StatsLabel -- (id)initWithLabelView:(NSTextField *)aLabelView +- (id)initWithPyRef:(PyObject *)aPyRef view:(NSTextField *)aLabelView { - self = [self init]; - view = [aLabelView retain]; - py = [[PyStatsLabel alloc] initWithModel:findHackishModel(@"stats_label")]; - [py bindCallback:createCallback(@"StatsLabelView", self)]; - [[self py] connect]; + PyStatsLabel *m = [[PyStatsLabel alloc] initWithModel:aPyRef]; + self = [self initWithModel:m view:aLabelView]; + [m bindCallback:createCallback(@"StatsLabelView", self)]; + [m connect]; + [m release]; return self; } - (void)dealloc { - [[self py] disconnect]; - [py release]; + [[self model] disconnect]; + [model release]; [view release]; [super dealloc]; } -- (PyStatsLabel *)py +- (PyStatsLabel *)model { - return (PyStatsLabel *)py; + return (PyStatsLabel *)model; } - (NSTextField *)labelView @@ -41,6 +41,6 @@ http://www.hardcoded.net/licenses/bsd_license /* Python --> Cocoa */ - (void)refresh { - [[self labelView] setStringValue:[[self py] display]]; + [[self labelView] setStringValue:[[self model] display]]; } @end diff --git a/cocoa/inter/app.py b/cocoa/inter/app.py index 97893301..371fe11b 100644 --- a/cocoa/inter/app.py +++ b/cocoa/inter/app.py @@ -4,7 +4,7 @@ from objp.util import pyref, dontwrap from jobprogress import job import cocoa from cocoa import install_exception_hook, proxy -from cocoa.inter2 import PyFairware, FairwareView +from cocoa.inter import PyFairware, FairwareView from hscommon.trans import trget from core.app import JobType @@ -45,6 +45,9 @@ class PyDupeGuruBase(PyFairware): def prioritizeDialog(self) -> pyref: return self.model.prioritize_dialog + def problemDialog(self) -> pyref: + return self.model.problem_dialog + def statsLabel(self) -> pyref: return self.model.stats_label diff --git a/cocoa/inter/app_se.py b/cocoa/inter/app_se.py index 3ac3de6d..4663baa7 100644 --- a/cocoa/inter/app_se.py +++ b/cocoa/inter/app_se.py @@ -76,8 +76,6 @@ class DupeGuru(DupeGuruBase): class PyDupeGuru(PyDupeGuruBase): def __init__(self): self._init(DupeGuru) - import __main__ - __main__.APP_INSTANCE = self.model #---Properties def setMinMatchPercentage_(self, percentage: int): diff --git a/cocoa/inter/details_panel.py b/cocoa/inter/details_panel.py index 4ac39d9a..b68f8d01 100644 --- a/cocoa/inter/details_panel.py +++ b/cocoa/inter/details_panel.py @@ -1,4 +1,4 @@ -from cocoa.inter2 import PyGUIObject, GUIObjectView +from cocoa.inter import PyGUIObject, GUIObjectView class DetailsPanelView(GUIObjectView): pass diff --git a/cocoa/inter/directory_outline.py b/cocoa/inter/directory_outline.py index 127f6640..0b83692d 100644 --- a/cocoa/inter/directory_outline.py +++ b/cocoa/inter/directory_outline.py @@ -1,5 +1,5 @@ from objp.util import dontwrap -from cocoa.inter2 import PyOutline, GUIObjectView +from cocoa.inter import PyOutline, GUIObjectView class DirectoryOutlineView(GUIObjectView): pass diff --git a/cocoa/inter/extra_fairware_reminder.py b/cocoa/inter/extra_fairware_reminder.py index 47b9871c..895482ff 100644 --- a/cocoa/inter/extra_fairware_reminder.py +++ b/cocoa/inter/extra_fairware_reminder.py @@ -1,5 +1,5 @@ from objp.util import dontwrap -from cocoa.inter2 import PyGUIObject +from cocoa.inter import PyGUIObject class ExtraFairwareReminderView: def startTimer(self): pass diff --git a/cocoa/inter/prioritize_dialog.py b/cocoa/inter/prioritize_dialog.py index 63da1de2..8f9d43f8 100644 --- a/cocoa/inter/prioritize_dialog.py +++ b/cocoa/inter/prioritize_dialog.py @@ -1,5 +1,5 @@ from objp.util import pyref -from cocoa.inter2 import PyGUIObject, GUIObjectView +from cocoa.inter import PyGUIObject, GUIObjectView class PrioritizeDialogView(GUIObjectView): pass diff --git a/cocoa/inter/prioritize_list.py b/cocoa/inter/prioritize_list.py index 171c2a23..d9e86a0e 100644 --- a/cocoa/inter/prioritize_list.py +++ b/cocoa/inter/prioritize_list.py @@ -1,4 +1,4 @@ -from cocoa.inter2 import PySelectableList, SelectableListView +from cocoa.inter import PySelectableList, SelectableListView class PrioritizeListView(SelectableListView): pass diff --git a/cocoa/inter/problem_dialog.py b/cocoa/inter/problem_dialog.py index b5fabaa5..f65f6145 100644 --- a/cocoa/inter/problem_dialog.py +++ b/cocoa/inter/problem_dialog.py @@ -1,5 +1,5 @@ from objp.util import pyref -from cocoa.inter2 import PyGUIObject +from cocoa.inter import PyGUIObject class PyProblemDialog(PyGUIObject): def problemTable(self) -> pyref: diff --git a/cocoa/inter/result_table.py b/cocoa/inter/result_table.py index 2b8701ed..91d36e9f 100644 --- a/cocoa/inter/result_table.py +++ b/cocoa/inter/result_table.py @@ -1,5 +1,5 @@ from objp.util import dontwrap -from cocoa.inter2 import PyTable, TableView +from cocoa.inter import PyTable, TableView class ResultTableView(TableView): def invalidateMarkings(self): pass diff --git a/cocoa/inter/stats_label.py b/cocoa/inter/stats_label.py index b36fbcb0..dafbe516 100644 --- a/cocoa/inter/stats_label.py +++ b/cocoa/inter/stats_label.py @@ -1,4 +1,4 @@ -from cocoa.inter2 import PyGUIObject, GUIObjectView +from cocoa.inter import PyGUIObject, GUIObjectView class StatsLabelView(GUIObjectView): pass diff --git a/cocoa/se/dg_cocoa.py b/cocoa/se/dg_cocoa.py index a40ecf16..6c9cf09c 100644 --- a/cocoa/se/dg_cocoa.py +++ b/cocoa/se/dg_cocoa.py @@ -7,7 +7,7 @@ from hscommon.trans import install_gettext_trans_under_cocoa install_gettext_trans_under_cocoa() -from cocoa.inter2 import PySelectableList, PyColumns, PyTable +from cocoa.inter import PySelectableList, PyColumns, PyTable from inter.details_panel import PyDetailsPanel from inter.directory_outline import PyDirectoryOutline