On Sunday 12 June 2011 11:13:59 Dmitry Kazakov wrote: > Hi! > > As we discussed at the last Krita sprint, Krita needs some common system to > manage keyboard shortcuts and modifiers. The problem is, different keyboard > keys should switch tools temporarily and restore the tool when the key is > released. E.g. we need canvas panning, rotation, color picking, brush > adjustments. > > I was thinking about the design of this system. And i think it is better to > do it Calligra-wide. That's why I've published its design proposal to > Calligra wiki: > > http://community.kde.org/Calligra/Libs/Interactional_Tools > > Theoretically, all the other tools may be ported to it in the future, but > this is not mandatory as there are wrappers for old tools left. > > So i would really like to hear your opinion about this system. Especially, > about naming of the classes =)
If I have understood correctly there two types of shortcuts needed. 1. Global shortcuts to change tools 2. Local shortcuts to change a tools state What I think is that the global shortcuts should be handled by the toolmanager, as that is exactly the kind of things the toolmanager is doing. For local shortcuts I am not sure why it is not possible to fold the common shortcut/gesture handling into the KoInteractionTool base class? I think we should keep the number of involved classes at a minimum, otherwise no one can understand what is actually happening in our tool system. Also from reading your requirement list, I hope that you also looked at tools that are not krita tools. Requirement 1: For instance shift drag is used to override the snapping. And there are probably other places where dragging with a modifier is used. So you will have a hard time reserving those for common stuff. Requirement 2: Single global key shortcuts are dangerous. The Ctrl modifier is use a lot, and the space key is also used at least in the text tools. Requirement 3: I do not understand that. Can you elaborate, preferably with an example. Requirement 4: A Krita specific requirement, is there a more general example? What is canvas rotation actually, a tool? Requirement 5: I am not sure i understand what you mean by that. Can you be more specific please? I.e. how should a tool be canceled when Esc is bound to another action? Requirement 6: Great! Requirement 7: Yes I agree. To sum it up, I think i need some clarifications. ;-) Ciao Jan _______________________________________________ calligra-devel mailing list calligra-devel@kde.org https://mail.kde.org/mailman/listinfo/calligra-devel