automatically display tabellio toolbars when document has Tabellio keyword

This commit is contained in:
Frédéric Péters 2008-06-25 01:31:56 +02:00
parent 3040e4b2ff
commit ed1427b8dc
4 changed files with 76 additions and 32 deletions

View File

@ -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"

View File

@ -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',))

23
addon/job.xcu Normal file
View File

@ -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>

View File

@ -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>