Thanks for the compliment! Python isn't my first language and it's difficult to be able to switch style from one language to another!
I always find it difficult to choose when to use ternary statements. Sometimes, for something quick and simple, I will, otherwise I'll be explicit. This is more of a readability issue than anything else. And I find the ternary statements quite verbose compared to other languages by using the words if/else rather than shorthand symbols.
You're absolutely right about the set_float_icon and corresponding method. Coding's an iterative process and that's a byproduct. I think set_float_icon()
along with complimentary methods like set_docked_icon(), set_minimize_icon(), set_restore_icon()
etc may be easier to use / remember wtf it does in six months time!
Thanks for the black / ruff suggestion. I've never heard fo them, but I'm about to go look for them.
If the user wanted to create a new
FoldableDockWidget
with a different title bar, they'd extend theFoldableDockWidget
class and override the Titlebar method in their extension of it. I understand your point, but isn't it over optimisation?One line of instantiating code. I can't imagine where or how the custom title bar would be used outside of the Foldable Dock Widget class though. That's probably the real reason why I made it a sub class. Not how I'd do it in other languages, but in Python? I'm trying it out!
Hardwiring a particular implementation of the Windowing python wrapper is necessary. They have slightly different implementations. If something magically new comes along, then, the code is updated. Again, over optimisation here which is unnecessary.
The code in the process guard is just sample code to demonstrate use of the class. No big deal. It's separate to the class and not to be imported because.. this is a gist of sample code!