From 12467c9493f71c77bd6ef01ce9124abd18856f8f Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Wed, 11 Jan 2012 15:55:25 -0500 Subject: [PATCH] Converted extra_fairware_reminder to objp. --HG-- branch : objp --- build.py | 28 +++++++++++-------- cocoa/base/AppDelegate.m | 3 +- cocoa/base/ExtraFairwareReminder.h | 5 ++-- cocoa/base/ExtraFairwareReminder.m | 14 ++++++++-- cocoa/base/PyExtraFairwareReminder.h | 15 ---------- cocoa/base/bridge/ExtraFairwareReminderView.h | 8 ++++++ cocoa/inter/extra_fairware_reminder.py | 18 +++++------- cocoa/se/dupeguru.xcodeproj/project.pbxproj | 8 ++++-- core/app.py | 2 ++ 9 files changed, 57 insertions(+), 44 deletions(-) delete mode 100644 cocoa/base/PyExtraFairwareReminder.h create mode 100644 cocoa/base/bridge/ExtraFairwareReminderView.h diff --git a/build.py b/build.py index 766aa0c4..50cf8e01 100644 --- a/build.py +++ b/build.py @@ -180,17 +180,23 @@ def build_cocoa_bridging_interfaces(): add_to_pythonpath('cocoa') add_to_pythonpath('cocoalib') from inter.stats_label import PyStatsLabel - objp.o2p.generate_objc_code(PyStatsLabel, 'cocoa/autogen') - objp.p2o.generate_python_proxy_code('cocoa/base/bridge/StatsLabelView.h', 'build/StatsLabelView.m') - exts = [ - Extension("StatsLabelView", ['build/StatsLabelView.m', 'build/ObjP.m'], - extra_link_args=["-framework", "Foundation"]), - ] - setup( - script_args = ['build_ext', '--inplace'], - ext_modules = exts, - ) - move_all('StatsLabelView*', 'cocoa/inter') + from inter.extra_fairware_reminder import PyExtraFairwareReminder + for class_ in [PyStatsLabel, PyExtraFairwareReminder]: + objp.o2p.generate_objc_code(class_, 'cocoa/autogen') + for fn in os.listdir('cocoa/base/bridge'): + basename = fn[:-2] + header_path = op.join('cocoa/base/bridge', fn) + extmodule_path = op.join('build', basename + '.m') + objp.p2o.generate_python_proxy_code(header_path, extmodule_path) + exts = [ + Extension(basename, [extmodule_path, 'build/ObjP.m'], + extra_link_args=["-framework", "Foundation"]), + ] + setup( + script_args = ['build_ext', '--inplace'], + ext_modules = exts, + ) + move_all('*.so', 'cocoa/inter') def build_pe_modules(ui): print("Building PE Modules") diff --git a/cocoa/base/AppDelegate.m b/cocoa/base/AppDelegate.m index 6cdda0b8..7e8c7309 100644 --- a/cocoa/base/AppDelegate.m +++ b/cocoa/base/AppDelegate.m @@ -207,9 +207,10 @@ http://www.hardcoded.net/licenses/bsd_license /* model --> view */ - (void)showExtraFairwareReminder { - ExtraFairwareReminder *dialog = [[ExtraFairwareReminder alloc] initWithPy:py]; + ExtraFairwareReminder *dialog = [[ExtraFairwareReminder alloc] init]; [dialog start]; [NSApp runModalForWindow:[dialog window]]; + [dialog close]; [dialog release]; } diff --git a/cocoa/base/ExtraFairwareReminder.h b/cocoa/base/ExtraFairwareReminder.h index 35ef746a..808a2699 100644 --- a/cocoa/base/ExtraFairwareReminder.h +++ b/cocoa/base/ExtraFairwareReminder.h @@ -11,13 +11,14 @@ http://www.hardcoded.net/licenses/bsd_license #import "HSWindowController.h" #import "PyApp.h" -@interface ExtraFairwareReminder : HSWindowController +@interface ExtraFairwareReminder : NSWindowController { IBOutlet NSButton *continueButton; + PyExtraFairwareReminder *py; NSTimer *timer; } -- (id)initWithPy:(PyApp *)aPy; +- (id)init; - (PyExtraFairwareReminder *)py; - (void)start; diff --git a/cocoa/base/ExtraFairwareReminder.m b/cocoa/base/ExtraFairwareReminder.m index 98dbbb07..b6351fab 100644 --- a/cocoa/base/ExtraFairwareReminder.m +++ b/cocoa/base/ExtraFairwareReminder.m @@ -6,19 +6,29 @@ which should be included with this package. The terms are also available at http://www.hardcoded.net/licenses/bsd_license */ +#import #import "ExtraFairwareReminder.h" +#import "ObjP.h" @implementation ExtraFairwareReminder -- (id)initWithPy:(PyApp *)aPy +- (id)init { - self = [super initWithNibName:@"ExtraFairwareReminder" pyClassName:@"PyExtraFairwareReminder" pyParent:aPy]; + self = [super initWithWindowNibName:@"ExtraFairwareReminder"]; [self window]; [continueButton setEnabled:NO]; + PyGILState_STATE gilState = PyGILState_Ensure(); + PyObject *pModule = PyImport_AddModule("__main__"); + PyObject *pAppInstance = PyObject_GetAttrString(pModule, "APP_INSTANCE"); + PyObject *pStatsLabel = PyObject_GetAttrString(pAppInstance, "extra_fairware_reminder"); + PyObject *pCallback = ObjP_classInstanceWithRef(@"ExtraFairwareReminderView", @"inter.ExtraFairwareReminderView", self); + py = [[PyExtraFairwareReminder alloc] initWithModel:pStatsLabel Callback:pCallback]; + PyGILState_Release(gilState); return self; } - (void)dealloc { + [py release]; [timer release]; [super dealloc]; } diff --git a/cocoa/base/PyExtraFairwareReminder.h b/cocoa/base/PyExtraFairwareReminder.h deleted file mode 100644 index ebfecfac..00000000 --- a/cocoa/base/PyExtraFairwareReminder.h +++ /dev/null @@ -1,15 +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 PyExtraFairwareReminder : PyGUI -- (void)start; -- (void)updateButton; -@end diff --git a/cocoa/base/bridge/ExtraFairwareReminderView.h b/cocoa/base/bridge/ExtraFairwareReminderView.h new file mode 100644 index 00000000..a7806194 --- /dev/null +++ b/cocoa/base/bridge/ExtraFairwareReminderView.h @@ -0,0 +1,8 @@ +#import + +@protocol ExtraFairwareReminderView +- (void)startTimer; +- (void)stopTimer; +- (void)setButtonText:(NSString *)text; +- (void)enableButton; +@end \ No newline at end of file diff --git a/cocoa/inter/extra_fairware_reminder.py b/cocoa/inter/extra_fairware_reminder.py index 97904b1d..2ec99bd6 100644 --- a/cocoa/inter/extra_fairware_reminder.py +++ b/cocoa/inter/extra_fairware_reminder.py @@ -1,25 +1,21 @@ -from cocoa.inter import PyGUIObject - -from core.gui.extra_fairware_reminder import ExtraFairwareReminder +from cocoa.inter2 import PyGUIObject class PyExtraFairwareReminder(PyGUIObject): - py_class = ExtraFairwareReminder - def start(self): - self.py.start() + self.model.start() def updateButton(self): - self.py.update_button() + self.model.update_button() # model --> view def start_timer(self): - self.cocoa.startTimer() + self.callback.startTimer() def stop_timer(self): - self.cocoa.stopTimer() + self.callback.stopTimer() def enable_button(self): - self.cocoa.enableButton() + self.callback.enableButton() def set_button_text(self, text): - self.cocoa.setButtonText_(text) \ No newline at end of file + self.callback.setButtonText_(text) diff --git a/cocoa/se/dupeguru.xcodeproj/project.pbxproj b/cocoa/se/dupeguru.xcodeproj/project.pbxproj index 4447a6a2..0b92ffb4 100644 --- a/cocoa/se/dupeguru.xcodeproj/project.pbxproj +++ b/cocoa/se/dupeguru.xcodeproj/project.pbxproj @@ -55,6 +55,7 @@ CE9777CD141F8C2500C13FB5 /* PrioritizeDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9777CC141F8C2500C13FB5 /* PrioritizeDialog.m */; }; CE9777D1141F8CB400C13FB5 /* PrioritizeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE9777CF141F8CB400C13FB5 /* PrioritizeDialog.xib */; }; CE9777D5141F9D7600C13FB5 /* HSPopUpList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9777D4141F9D7600C13FB5 /* HSPopUpList.m */; }; + CE9D842A14BE2AE900184165 /* PyExtraFairwareReminder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.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 */; }; @@ -157,7 +158,6 @@ 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; }; - CE665B2F13225ADD003F5CFB /* PyExtraFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyExtraFairwareReminder.h; path = ../base/PyExtraFairwareReminder.h; 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; }; @@ -228,6 +228,8 @@ CE9777D2141F9D6500C13FB5 /* PySelectableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList.h; sourceTree = ""; }; CE9777D3141F9D7600C13FB5 /* HSPopUpList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSPopUpList.h; sourceTree = ""; }; CE9777D4141F9D7600C13FB5 /* HSPopUpList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSPopUpList.m; sourceTree = ""; }; + CE9D842814BE2AE900184165 /* PyExtraFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyExtraFairwareReminder.h; sourceTree = ""; }; + CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyExtraFairwareReminder.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 = ""; }; @@ -396,6 +398,8 @@ CE1D091514BE0C6400CA6B8C /* ObjP.m */, CE1D091614BE0C6400CA6B8C /* PyStatsLabel.h */, CE1D091714BE0C6400CA6B8C /* PyStatsLabel.m */, + CE9D842814BE2AE900184165 /* PyExtraFairwareReminder.h */, + CE9D842914BE2AE900184165 /* PyExtraFairwareReminder.m */, ); name = autogen; path = ../autogen; @@ -537,7 +541,6 @@ CE647E541173024A006D28BA /* ProblemDialog.h */, CE647E551173024A006D28BA /* ProblemDialog.m */, CE647E561173024A006D28BA /* PyProblemDialog.h */, - CE665B2F13225ADD003F5CFB /* PyExtraFairwareReminder.h */, CE9777CB141F8C2500C13FB5 /* PrioritizeDialog.h */, CE9777CC141F8C2500C13FB5 /* PrioritizeDialog.m */, CE89240814239CC30024CE4E /* PyPrioritizeDialog.h */, @@ -677,6 +680,7 @@ CE54A87E148046F9008EEA77 /* HSColumns.m in Sources */, CE1D091814BE0C6400CA6B8C /* ObjP.m in Sources */, CE1D091914BE0C6400CA6B8C /* PyStatsLabel.m in Sources */, + CE9D842A14BE2AE900184165 /* PyExtraFairwareReminder.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/core/app.py b/core/app.py index b01d1d9c..81cec4d4 100644 --- a/core/app.py +++ b/core/app.py @@ -25,6 +25,7 @@ from hscommon.trans import tr from . import directories, results, scanner, export, fs from .gui.stats_label import StatsLabel +from .gui.extra_fairware_reminder import ExtraFairwareReminder HAD_FIRST_LAUNCH_PREFERENCE = 'HadFirstLaunch' DEBUG_MODE_PREFERENCE = 'DebugMode' @@ -102,6 +103,7 @@ class DupeGuru(RegistrableApplication, Broadcaster): } self.selected_dupes = [] self.stats_label = StatsLabel(None, self) + self.extra_fairware_reminder = ExtraFairwareReminder(None, self) # subclasses must create self.result_table #--- Virtual