On Saturday 12 January 2008 02:40, Simon Edwards wrote: > Hi, > > Adeodato Simó wrote: > > This one time, I'm finding that KAction.setShortcut() can't work in > > Python without passing a value for the second argument, whereas this > > works in C++. Any chance you'd know why? Thanks. > > Looks like a bug in PyKDE4. The second arg doesn't have a default value > like in the C++ version. I'll try to get this fixed in 4.0.1.
It's a feature :) More accurately it's a feature in presip that won't handle the typesafe enumerator expression that's the default value. You can try adding it manually for both setShortcut methods in kaction.sip. Not sure if sip will handle it, but I think it will. The current behavior for Python is covered in the docs (no default value is shown). It should be covered in the 'Getting Started' tutorial too, but it looks like I didn't finish writing the last section of that. > > This: > > > > -8<- > > #! /usr/bin/env python > > > > from PyKDE4 import kdeui > > > > action = kdeui.KAction(None) > > action.setShortcut(kdeui.KShortcut('Ctrl+F')) > > Add the second arg like this (and close your eyes): > > action.setShortcut(kdeui.KShortcut('Ctrl+F'), > kdeui.KAction.ShortcutTypes( \ > kdeui.KAction.ShortcutTypes(kdeui.KAction.ActiveShortcut) | \ > kdeui.KAction.ShortcutTypes(kdeui.KAction.DefaultShortcut))) > > This fix will work in the future and has the same effect as the fixed > version. > > mmm... it would be nice if PyQt4's QFlags() accepted a uint mask in its > constructor. If would save a lot of ugly Python code, for the price of a > little bit of runtime type safety... You can save some verbosity by doing from PyKDE4.kdeui import KAction and then define some constant default = KAction.ShortcutTypes (KAction.ShortcutTypes(KAction.ActiveShortcut) \ | .KAction.ShortcutTypes.KAction.DefaultShortcut)) and use that in the method call. At the moment I don't think there's any way to get around the type safety stuff. KDE4 expects a class object for the second argument. ------------------- I should get together an update for you (Simon) - I've been tied up on a lot of other stuff the last few months and haven't made much progress. The new code generator is about 85% complete. I believe it handles the problem above, but it needs about another month or so to complete, and it looks like a few more weeks before I can get back to working on it. Jim _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt