Converted .h view objp bridge interfaces to python ones. It simplifies them and allows for subclassing.

--HG--
branch : objp
This commit is contained in:
Virgil Dupras 2012-01-12 12:34:20 -05:00
parent f6dd1a6a42
commit a699a2ef45
7 changed files with 28 additions and 29 deletions

View File

@ -179,18 +179,18 @@ def build_cocoa_bridging_interfaces():
import objp.p2o
add_to_pythonpath('cocoa')
add_to_pythonpath('cocoalib')
from inter.details_panel import PyDetailsPanel
from inter.extra_fairware_reminder import PyExtraFairwareReminder
from inter.stats_label import PyStatsLabel
from inter.details_panel import PyDetailsPanel, DetailsPanelView
from inter.extra_fairware_reminder import PyExtraFairwareReminder, ExtraFairwareReminderView
from inter.stats_label import PyStatsLabel, StatsLabelView
for class_ in [PyDetailsPanel, PyExtraFairwareReminder, PyStatsLabel]:
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)
for class_ in [DetailsPanelView, ExtraFairwareReminderView, StatsLabelView]:
clsspec = objp.o2p.spec_from_python_class(class_)
clsname = class_.__name__
extmodule_path = op.join('build', clsname + '.m')
objp.p2o.generate_python_proxy_code_from_clsspec(clsspec, extmodule_path)
exts = [
Extension(basename, [extmodule_path, 'build/ObjP.m'],
Extension(clsname, [extmodule_path, 'build/ObjP.m'],
extra_link_args=["-framework", "Foundation"]),
]
setup(

View File

@ -1,5 +0,0 @@
#import <Cocoa/Cocoa.h>
@protocol DetailsPanelView <NSObject>
- (void)refresh;
@end

View File

@ -1,8 +0,0 @@
#import <Cocoa/Cocoa.h>
@protocol ExtraFairwareReminderView <NSObject>
- (void)startTimer;
- (void)stopTimer;
- (void)setButtonText:(NSString *)text;
- (void)enableButton;
@end

View File

@ -1,5 +0,0 @@
#import <Cocoa/Cocoa.h>
@protocol StatsLabelView <NSObject>
- (void)refresh;
@end

View File

@ -1,4 +1,7 @@
from cocoa.inter2 import PyGUIObject
from cocoa.inter2 import PyGUIObject, GUIObjectView
class DetailsPanelView(GUIObjectView):
pass
class PyDetailsPanel(PyGUIObject):
def numberOfRows(self) -> int:

View File

@ -1,5 +1,12 @@
from objp.util import dontwrap
from cocoa.inter2 import PyGUIObject
class ExtraFairwareReminderView:
def startTimer(self): pass
def stopTimer(self): pass
def setButtonText_(self, text: str): pass;
def enableButton(self): pass
class PyExtraFairwareReminder(PyGUIObject):
def start(self):
self.model.start()
@ -8,14 +15,18 @@ class PyExtraFairwareReminder(PyGUIObject):
self.model.update_button()
# model --> view
@dontwrap
def start_timer(self):
self.callback.startTimer()
@dontwrap
def stop_timer(self):
self.callback.stopTimer()
@dontwrap
def enable_button(self):
self.callback.enableButton()
@dontwrap
def set_button_text(self, text):
self.callback.setButtonText_(text)

View File

@ -1,4 +1,7 @@
from cocoa.inter2 import PyGUIObject
from cocoa.inter2 import PyGUIObject, GUIObjectView
class StatsLabelView(GUIObjectView):
pass
class PyStatsLabel(PyGUIObject):