You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/python/sip/TODO

56 lines
2.9 KiB

1. Make the parser aware of Python keywords so they can't be used as
member function names.
5. Allow handwritten code for static class variables (like
KTMainWindow.memberList). The problem is intercepting references to it
(__getattr__ and __setattr__ aren't good enough) - probably extending the
lazy function mechanism.
11. Consider changing the way default arguments that are function calls are
handled. At the moment the function is always called and the result discarded
if it is not needed. It should really only be called if the result is really
needed.
18. Implement the C++ feature of automatically calling simple ctors to
transparently convert between types for function parameters. For example, a
function takes a parameter of type QKeySequence, but is passed an int, but
there is a QKeySequence ctor that takes a single int - so call it
automatically. This just needs extra code generated for the CanConvertTo and
ConvertTo functions. This will only work where the destination type is a
class. Note that we will end up doing lots of checks in the CanConvertTo
function and repeating them in the ConvertToFunction. It would be better if
the CanConvertTo function could return some information (even the results of
the conversion of simple types like ints) to be re-used by ConvertTo - but make
sure default arguments are handled correctly. We could implement it for base
types as well (if the source type implemented an appropriate cast operator) but
the way of doing argument parsing would have to change completely - if
sipParseArgs was trying to convert an argument to an int it would have to have
a table of all types that could be converted to an int (messy and slow?).
19. Consider changing sipConvertToCpp() etc. to take a PyObject* (rather
than a sipWrapperType*) and do a check and cast internally.
22. Consider adding support for methods that take keyword arguments. Do it
by allowing a function parameter to have a name (this becomes the keyword) and
extend sipParseArgs() to take an options dictionary and list of keywords.
24. Need some way of implementing new Qt properties, or at least fiddle the
implementation of QSqlPropertyMap to allow new customer editor widgets to be
implemented in Python.
25. Add support for specifying docstrings for generated methods.
26. Fully implement QObject.disconnect().
27. Look at adding QObject.Q_OBJECT() that will create the moc generated
methods dynamically (maybe just the tr() functions).
28. Consider creating a copy of a const reference when wrapping it in order
to enforce const in Python. Or add a flag to the wrapper which says it is a
const instance. I think the only to way to implement it is to have a "const"
Python type - an instance of which will point to the underlying Python object.
This will enable const_cast to be implemented.
30. Add support for specifying the reverse arithmetic operators. (Or just
document that you should use the normal ones as global operators?)