Skip to content

Commit

Permalink
Allow context menu item work for new document - access the document m…
Browse files Browse the repository at this point in the history
…odel via arg instead of via the context.
  • Loading branch information
marklh9 committed Dec 17, 2017
1 parent 9e17309 commit d510b69
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/description.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
<version value="v1012.171951"/>
<version value="v1012.180632"/>
<identifier value="addons.whale.BopomoAnnotate"/>
<dependencies/>
<display-name>
Expand Down
13 changes: 12 additions & 1 deletion src/pythonpath/myhelper.py
@@ -1,12 +1,23 @@
import uno
import unohelper

def access_by_name(tuple, name):
for item in tuple:
if item.Name == name:
return item.Value
return None


class MyUnoHelper:
def __init__(self, ctx):
def __init__(self, ctx, model = None):
self.ctx = ctx
self.desktop = self.ctx.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", self.ctx)
self.model = model

def document(self):
if self.model:
return self.model

return self.desktop.getCurrentComponent()

def controller(self):
Expand Down
18 changes: 16 additions & 2 deletions src/registrar.py
Expand Up @@ -8,16 +8,18 @@
from myhelper import MyUnoHelper
from lookup import BopomoLookup
from lookup import get_syllable
from myhelper import access_by_name

import logging

#logging.basicConfig(filename='/tmp/bpm.txt', level=logging.DEBUG)

def insertMenuItem(menu, text, command):
xRootMenuEntry = menu.createInstance("com.sun.star.ui.ActionTrigger")
xRootMenuEntry.setPropertyValue("Text", text)
xRootMenuEntry.setPropertyValue("CommandURL", command)
menu.insertByIndex(0, xRootMenuEntry)


class BopomoContextMenuInterceptor(unohelper.Base, XContextMenuInterceptor):
def __init__(self, helper):
self.helper = helper
Expand Down Expand Up @@ -52,7 +54,19 @@ def __init__(self, ctx):
self.ctx = ctx

def execute(self, args):
helper = MyUnoHelper(self.ctx)
try:
self.do_execute(args)

except Exception as e:
logging.debug("execute exception="+str(e))

def do_execute(self, args):
environment = access_by_name( args, "Environment" )
model = None
if environment:
model = access_by_name( environment, "Model" )

helper = MyUnoHelper(self.ctx, model)
interceptor = BopomoContextMenuInterceptor( helper )
if helper.is_text_document() and helper.controller():
helper.controller().registerContextMenuInterceptor(interceptor)
Expand Down

0 comments on commit d510b69

Please sign in to comment.