automatically display tabellio toolbars when document has Tabellio keyword
This commit is contained in:
parent
3040e4b2ff
commit
ed1427b8dc
|
@ -6,6 +6,8 @@
|
|||
manifest:media-type="application/vnd.sun.star.uno-component;type=Python"/>
|
||||
<manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
|
||||
manifest:full-path="ProtocolHandler.xcu"/>
|
||||
<manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
|
||||
manifest:full-path ="job.xcu"/>
|
||||
<manifest:file-entry manifest:full-path="Addons.xcu"
|
||||
manifest:media-type="application/vnd.sun.star.configuration-data"/>
|
||||
<manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
|
||||
|
|
|
@ -24,6 +24,7 @@ from com.sun.star.frame import XDispatchProvider
|
|||
from com.sun.star.frame import FeatureStateEvent
|
||||
from com.sun.star.beans import PropertyValue, NamedValue
|
||||
from com.sun.star.frame import ControlCommand
|
||||
from com.sun.star.task import XJob
|
||||
|
||||
from com.sun.star.awt import Rectangle
|
||||
from com.sun.star.awt import WindowDescriptor
|
||||
|
@ -637,6 +638,30 @@ def getConfigAccess(ctx, cNodePath, bWriteAccess=False, bEnableSync=True, bLazyW
|
|||
return oConfigAccess
|
||||
|
||||
|
||||
def set_toolbar_visibility(ctx, visibility):
|
||||
oConfigAccess = getConfigAccess(ctx, '/org.openoffice.Office.Addons/AddonUI')
|
||||
oElement = oConfigAccess.getByName('OfficeToolBar')
|
||||
toolbar_names = oElement.getElementNames()
|
||||
|
||||
desktop = ctx.ServiceManager.createInstanceWithContext(
|
||||
'com.sun.star.frame.Desktop', ctx)
|
||||
doc = desktop.getCurrentComponent()
|
||||
layout_manager = doc.CurrentController.Frame.LayoutManager
|
||||
|
||||
if visibility is False:
|
||||
for toolbar in toolbar_names:
|
||||
layout_manager.hideElement('private:resource/toolbar/addon_%s' % toolbar)
|
||||
layout_manager.showElement('private:resource/toolbar/standardbar')
|
||||
layout_manager.showElement('private:resource/toolbar/textobjectbar')
|
||||
layout_manager.hideElement('private:resource/toolbar/Tabellio')
|
||||
else:
|
||||
for toolbar in toolbar_names:
|
||||
layout_manager.showElement('private:resource/toolbar/addon_%s' % toolbar)
|
||||
layout_manager.hideElement('private:resource/toolbar/standardbar')
|
||||
layout_manager.hideElement('private:resource/toolbar/textobjectbar')
|
||||
layout_manager.showElement('private:resource/toolbar/Tabellio')
|
||||
|
||||
|
||||
class ShowHideToolbars(unohelper.Base, XJobExecutor):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
|
@ -644,25 +669,7 @@ class ShowHideToolbars(unohelper.Base, XJobExecutor):
|
|||
def trigger(self, args):
|
||||
ctx = self.ctx
|
||||
try:
|
||||
oConfigAccess = getConfigAccess(ctx, '/org.openoffice.Office.Addons/AddonUI')
|
||||
oElement = oConfigAccess.getByName('OfficeToolBar')
|
||||
toolbar_names = oElement.getElementNames()
|
||||
|
||||
desktop = self.ctx.ServiceManager.createInstanceWithContext(
|
||||
'com.sun.star.frame.Desktop', self.ctx )
|
||||
doc = desktop.getCurrentComponent()
|
||||
layout_manager = doc.CurrentController.Frame.LayoutManager
|
||||
if args == 'hide':
|
||||
for toolbar in toolbar_names:
|
||||
layout_manager.hideElement('private:resource/toolbar/addon_%s' % toolbar)
|
||||
layout_manager.showElement('private:resource/toolbar/standardbar')
|
||||
layout_manager.showElement('private:resource/toolbar/textobjectbar')
|
||||
else:
|
||||
for toolbar in toolbar_names:
|
||||
layout_manager.showElement('private:resource/toolbar/addon_%s' % toolbar)
|
||||
layout_manager.hideElement('private:resource/toolbar/standardbar')
|
||||
layout_manager.hideElement('private:resource/toolbar/textobjectbar')
|
||||
|
||||
set_toolbar_visibility(ctx, args != 'hide')
|
||||
except:
|
||||
printException()
|
||||
|
||||
|
@ -1189,6 +1196,25 @@ class ListesDropdowns(unohelper.Base, XJobExecutor, XDispatchProvider):
|
|||
return ListeDispatch(self.ctx)
|
||||
|
||||
|
||||
class OnLoadEvent(unohelper.Base, XJob):
|
||||
def __init__ (self, ctx):
|
||||
self.ctx = ctx
|
||||
|
||||
def execute(self, args):
|
||||
try:
|
||||
desktop = self.ctx.ServiceManager.createInstanceWithContext(
|
||||
'com.sun.star.frame.Desktop', self.ctx)
|
||||
document = desktop.getCurrentComponent()
|
||||
if document.supportsService('com.sun.star.text.TextDocument'):
|
||||
layout_manager = document.CurrentController.Frame.LayoutManager
|
||||
if 'Tabellio' in (document.DocumentInfo.Keywords or ''):
|
||||
set_toolbar_visibility(self.ctx, True)
|
||||
else:
|
||||
set_toolbar_visibility(self.ctx, False)
|
||||
except:
|
||||
printException()
|
||||
|
||||
|
||||
|
||||
g_ImplementationHelper = unohelper.ImplementationHelper()
|
||||
|
||||
|
@ -1247,3 +1273,8 @@ g_ImplementationHelper.addImplementation(
|
|||
'org.entrouvert.openoffice.Inserts',
|
||||
('com.sun.star.frame.DispatchProvider', 'com.sun.star.task.Job',))
|
||||
|
||||
g_ImplementationHelper.addImplementation(
|
||||
OnLoadEvent,
|
||||
'org.entrouvert.openoffice.OnLoadEvent',
|
||||
('com.sun.star.task.Job',))
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
|
||||
<oor:component-data oor:name="Jobs" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<node oor:name="Jobs">
|
||||
<node oor:name="OnLoadEvent" oor:op="replace">
|
||||
<prop oor:name="Service">
|
||||
<value>org.entrouvert.openoffice.OnLoadEvent</value>
|
||||
</prop>
|
||||
</node>
|
||||
</node>
|
||||
<node oor:name="Events">
|
||||
<node oor:name="OnLoad" oor:op="replace">
|
||||
<node oor:name="JobList">
|
||||
<node oor:name="OnLoadEvent" oor:op="replace"/>
|
||||
</node>
|
||||
</node>
|
||||
<node oor:name="OnNew" oor:op="replace">
|
||||
<node oor:name="JobList">
|
||||
<node oor:name="OnLoadEvent" oor:op="replace"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</oor:component-data>
|
|
@ -1,18 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.0">
|
||||
<office:meta>
|
||||
<meta:generator>OpenOffice.org/2.2$Linux OpenOffice.org_project/680m14$Build-9134</meta:generator>
|
||||
<meta:initial-creator>root Cros</meta:initial-creator>
|
||||
<meta:creation-date>2007-09-13T14:25:42</meta:creation-date>
|
||||
<dc:creator>root Cros</dc:creator>
|
||||
<dc:date>2007-09-13T14:26:10</dc:date>
|
||||
<dc:language>fr-BE</dc:language>
|
||||
<meta:editing-cycles>2</meta:editing-cycles>
|
||||
<meta:editing-duration>PT29S</meta:editing-duration>
|
||||
<meta:user-defined meta:name="Info 1"/>
|
||||
<meta:user-defined meta:name="Info 2"/>
|
||||
<meta:user-defined meta:name="Info 3"/>
|
||||
<meta:user-defined meta:name="Info 4"/>
|
||||
<meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0"/>
|
||||
<meta:keyword>Tabellio</meta:keyword>
|
||||
</office:meta>
|
||||
</office:document-meta>
|
||||
|
|
Reference in New Issue