Currently cross3d is dependent on PyQt4 which is not easily available in most DCCs. We need PyQt for our database api, so we end up compiling a compatible version for each DCC. PyQt seems like a unnecessary requirement, so I would like to remove it.
I'm not sure when I will have time to work on this, so I'm adding this issue with requirements for any merge requests anyone is able to make.
The merge request should conform to one of the following:
- Remove PyQt entirely(Preferred). I think cross3d.dispatch is the only module that "needs" Qt for its signal system. To remove this we would need cross3d.dispatch to use some other system for signals. It could be as simple as dispatch stores a list of functions and when it needs to emit them it iterates over each of them and calls them individually(It should always call all registered functions even if one or more of them raises a exception. It should still raise each exception that is raised so it can be debugged). If I remember correctly, I'm already doing something like this so I can track if I should disconnect the signals.
- If PyQt can not be removed entirely, the Qt system should be abstracted. The user can configure if they want to use PyQt or PySide. I am using environment variables for other config options in cross3d so that should be a good way to configure it. Make sure the abstraction can work with Qt5 as Maya and other programs are moving to it. It should auto detect between PyQt4 or PyQt5 and PySide and PySide2.
Currently cross3d is dependent on PyQt4 which is not easily available in most DCCs. We need PyQt for our database api, so we end up compiling a compatible version for each DCC. PyQt seems like a unnecessary requirement, so I would like to remove it.
I'm not sure when I will have time to work on this, so I'm adding this issue with requirements for any merge requests anyone is able to make.
The merge request should conform to one of the following: