Phil Thompson <[EMAIL PROTECTED]> wrote: >>> The QtCore.signature() decorator takes a single argument which is, >>> in effect, the C++ signature of the method which tells the >>> auto-connect >>> code which signal to connect. For example... >>> >>> @QtCore.signature("on_spinbox_valueChanged(int)") >>> def on_spinbox_valueChanged(self, value): >>> # value will only ever be an integer. >> >> Notice that naming it "signature" is a namespace violation from >> those using "from QtCore import *". OTOH, you shouldn't impose this >> code style of prefixing each and every name with the QtModule name: >> I personally hate it, and I can't see why Python code should get 3 >> times more verbose than the corresponding C++ code. Having 'Q' at >> the beginning of the word is enough namespace for me and for every >> C++ Qt project out there. Specifically, Qt itself does not expose >> anything but symbols which begins with "Q" (or fullly-uppercase >> macros and similar things). >> >> I'd really prefer to have it named something like "qtsignature". > > A decorator is just a function and needs to reside in a namespace. > While I could put the signature() function in the global namespace, > that would be dumb.
You can put it within the QtCore namespace, but please consider that many people *will* use "from QtCore import *", as it's the default way to make the code similar to the C++ counterpart. If Trolltech added a "signature()" function, people would complain. Trolltech doesn't use standard C++ namespaces, but they have their own namespace: they prefix every class name with uppercase Q, and every function name with lowercase q. This is why I think PyQt is going the wrong way if it starts suggesting to explicitally use QtCore before everything and/or makes it harder for people to use the "from QtCore import *" form. So, if you're going to add a PyQt-specific name, please make it follow the Trolltech's convention. QtCore.qSignature would surely be better (there are pre cedence of global functions named qFooBar in Qt's API). > The reason for doing it the way I did was to allow the following... > > @QtCore.signature("on_spinbox_valueChanged(int)") > def handle_int(self, val): > ... > > @QtCore.signature("on_spinbox_valueChanged(QString)") > def handle_QString(self, val): > ... > > I can't think of a real-world use case for this - but that's your > job, not mine. > > What I can do is to make the function name optional in the signature, > so you can use the short version most of the time but you can still > have the flexibility of the above. OK, fine by me as long as the repetition isn't necessary (and the decoration isn't necessary if not for disambiguation). Giovanni Bajo _______________________________________________ PyKDE mailing list PyKDE@mats.imk.fraunhofer.de http://mats.imk.fraunhofer.de/mailman/listinfo/pykde