GUI program on Mac OS in D?
mrphobby
mrp at spinrock.net
Thu Dec 14 13:56:28 UTC 2017
On Thursday, 14 December 2017 at 11:36:46 UTC, mrphobby wrote:
> I'm thinking it would be nice to wrap this setup code into some
> kind of mixin template so that I could put the required
> configuration setup in each class. In other languages like
> Python or C# I would maybe decorate my methods with an
> attribute and then use reflection to build the proper data
> structures at runtime. However, I'm completely new to D so it's
> a bit difficult to see a good solution here. If you have any
> ideas how to do this I'd appreciate it. Thanks for all help!
Also, it feels a bit awkward to implement the callback handling
methods as static methods, with the "self" and SEL arguments.
Would have been nice if it was possible to use instance methods.
After thinking about it for a while I guess it could work with
one static dispatch method that maps selectors to specific
instance methods. So when callbacks are made from Objective-C
they are made to this one static method, which would then call
the right method on the class.
I'm still struggling with D syntax, so here's some pseudo code:
class AppDelegate {
static var methodMap = {} // Maps selector name to methods
static void handleCallback(AppDelegate self, SEL sel, ...) {
var method = methodMap[sel];
self.call(method, va_list); // Call the method with
args (not sure if possible in D)
}
void applicationDidFinishLaunching(NSNotification
notification) {
// Normal instance method here
}
}
Now, you would also need a registration step somewhere that sets
up the selectors to use, perhaps in a static constructor that is
run when AppDelegate class is used for the first time.
I hope this makes sense. Just throwing out some ideas :)
More information about the Digitalmars-d-learn
mailing list