Yay, qt rclick is finally here :-). Except that it's not a plugin, nor
should it ever be a plugin. It's a simple entry point in qtGui that
allows plugins to create context menu items. It does
not bring the functionality of tk rclick plugin to qt (nor should it -
a separate plugin can do that). But, I think this approach is simpler
than the tk rclick (easier to write plugins, and *zero* wrapping is
done - you can create submenus, icons, tooltips, do whatever is
supported by QMenu/ QAction as you wish).

Here's an example "plugin" script (just enter it in node and press ctrl+b):

QQQ

#Example popup handler
from PyQt4 import QtCore

def test_acts(c,p,menu):

    # 'menu' is QMenu instance that was jsut created
    a1 = menu.addAction("Display " + p.h)
    a2 = menu.addAction("Es " + p.h)

    def a1_func():
        g.es("a1 from " + p.h)

    def a2_func():
        g.es("a2 from " + p.h)

    a1.connect(a1, QtCore.SIGNAL("triggered()"), a1_func)
    a2.connect(a2, QtCore.SIGNAL("triggered()"), a2_func)

def test_acts_handler2(c, p, menu):
    a = menu.addAction("Hello from handler 2")
    def f():
        g.es("Hello: " + p.h)

    a.connect(a, QtCore.SIGNAL("triggered()"), f)

def register():
    # the idea is just to append to the normal list g.tree_popup_handlers
    g.tree_popup_handlers.append(test_acts)
    g.tree_popup_handlers.append(test_acts_handler2)

register()

QQQ

The idea is indeed a list of functions / callables
g.tree_popup_handlers. When you are creating a plugin, just add your
menu manipulation routines to that list. It should be done in plugins
"init" (not after-create-leo-frame handler), because the handlers are
global.

If there is demand, we can add "priority" to handlers, but at the
moment this will suffice.

Relevant Qt docs:

http://doc.trolltech.com/4.5/qmenu.html
http://doc.trolltech.com/4.5/qaction.html

So far, this is only for tree. We can add different rclick handlers
for body (body_popup_handler / whatever).

BTW jkn, I realize you were working on this too - do you have
something that could be "synced" with this approach (e.g. wrapping
rclick.py stuff so existing Tk plugins would work)?

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to