Makro: Basic-Extension und lesen von Datei aus der Extension

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro: Basic-Extension und lesen von Datei aus der Extension

Re: Makro: Basic-Extension und lesen von Datei aus der Extension

von HardyH » Do, 02.04.2009 08:13

... und jetzt einmal alles komplett ...

In das "Hauptverzeichnis" der Extension eine XCU-Datei legen (Name hier: Path.xcu) mit folgendem Inhalt:

Code: Alles auswählen

<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data oor:package="org.openoffice.Office" oor:name="Paths" xmlns:install="http://openoffice.org/2004/installation" 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="Paths">
		<node oor:name=[b]"Template"[/b] oor:op="fuse">
			<node oor:name=[b]"InternalPaths"[/b]>
				<node oor:name=[b]"%origin%/files"[/b] oor:op="fuse"/>
			</node>
		</node>
	</node>
</oor:component-data>
Die drei fetten Einträge (klappt nicht, aber die Tags stehen noch drin) sind für diesen Kontext wohl die wichtigsten:
- "Template", bestimmt in welchem Pfad gesucht werden muss (siehe Basic-Code)
- "InternalPaths", sorgt dafür, dass dieser Pfad nicht im Optionen-Dialog erscheint
- "%origin%/files", ist das Verzeichnis innerhalb der Extension, in der die Template-Dateien liegen



Zusätzlich muss die obere Datei (Path.xcu) in die MANIFEST.XML eingetragen sein, einfach folgende Zeile zusätzlich eintragen:

Code: Alles auswählen

<manifest:file-entry manifest:full-path="Paths.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>

und zum Schluss noch der Basic Makro-Code zur weiteren Verwendung innerhalb der Extension (hier: öffnen der Datei)

Code: Alles auswählen

REM der zweite Parameter ist der Dateiname!!!
REM hier moegliche Eintraege als erster Parameter
REM "Basic" ,"AutoCorrect", "AutoText", "Backup", "Gallery", "Graphic", "Work", "Template", "Temp"
Sub Vorlage_Oeffnen
	OpenFileInPath("Template", "datei_vorlage.ott")
end Sub

Sub OpenFileInPath(pathName as String, templateFile as String)
	Dim i as Integer, TextPos As Integer
	Dim fullPath as String
	Dim templatePfad, pfade, sep
    
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	templatePfad = GetPathSettings(pathName)

	REM eigentlich unter Linux ein ":" zur Erinnerung stehen lassen!
	sep = getPathSeparator()
	sep = ";"
	pfade = ArrayOutOfString(templatePfad, sep)
    
	dim arg(0) as new com.sun.star.beans.PropertyValue
	arg(0).Name = "AsTemplate"
	arg(0).Value = True

	REM oeffnet den ersten Treffer im Pfad und verlaesst die Schleife
	For i = 0 to uBound(pfade)
		On Error goto naechste
   		fullPath = pfade(i) + "/" + templateFile
		
		if FileExists(fullPath) then
			StarDesktop.loadComponentfromURL(fullPath, "_blank", 0, arg())
			Exit For
		end if
		naechste:
	next i
End Sub
Unter OO.org 2.4 klappt das hier, vieleicht hilft es mal jemanden weiter,
HardyH

Re: Makro: Basic-Extension und lesen von Datei aus der Extension

von HardyH » Mo, 30.03.2009 15:38

Hi,
jetzt komm ich voran (muss ich noch testen).
Was möchtest Du nun "öffnen"?
Ich pack in die Extension einen Template-Datei, füge eine Path.xcu hinzu und möchte diese Datei dann öffnen ...

Ich denke, jetzt habe ich alles beisammen und muss die Datei NICHT im Dateisystem ablegen. Dadurch ist das ganze dann system-unabhängig und wenn die Extension installiert ist, kann ich sicher gehen, dass das Template auch vorhanden ist ...

Danke,
HardyH

Re: Makro: Basic-Extension und lesen von Datei aus der Extension

von komma4 » So, 29.03.2009 15:21

HardyH hat geschrieben: jetzt bleibt nur noch die Frage, wie öffnen?
Es gibt die (undokumentierte) Funktion getPathSeparator(), welches das systemabhängige Pfadtrennzeichen zurück gibt.


Was möchtest Du nun "öffnen"?

Re: Makro: Basic-Extension und lesen von Datei aus der Extension

von HardyH » So, 29.03.2009 09:04

Danke, das hilft schon einmal ungemein weiter!
Der Pfad zur Extension ist bei "Template" dabei, jetzt bleibt nur noch die Frage, wie öffnen?

Dummerweise enthält der Pfad jetzt Systemabhängige Trennzeichen der verschiedenen Pfade, aber das werd ich dann auch noch herausfinden.

vielen Dank,
HardyH

Re: Makro: Basic-Extension und lesen von Datei aus der Extension

von komma4 » Do, 26.03.2009 23:28

Willkommen im Forum.
HardyH hat geschrieben:das Auffinden der Template-Datei also auch möglichst Plattform-unabhängig ...

Code: Alles auswählen

' http://www.oooforum.org/forum/viewtopic.phtml?t=66453
' JohnV 2007-03-11 6:27pm
Sub GetPaths
On Error goto ErrorEnd
Dim ar,c,p,iAns
ar = Array("Basic","AutoCorrect","AutoText","Backup","Gallery","Graphic","Work","Template","Temp")
GlobalScope.BasicLibraries.LoadLibrary("Tools")
For c = 0 to uBound(ar)
p = ar(c)
iAns = MsgBox (ConvertFromURL(GetPathSettings(p)),1)
If iAns = 2 then End
Next
End
ErrorEnd:
MsgBox "Can't find "& p
End Sub

Das hilft?

Makro: Basic-Extension und lesen von Datei aus der Extension

von HardyH » Di, 24.03.2009 17:51

Hallo,

vieleicht kann mir hier jemand einen Hinweis geben?
Ich möchte in einer Extension eine Template-Datei packen und innerhalb der Extension mittels Basic weiterverarbeiten.
Mein Problem: ich kann dieses Template mit einpacken und installieren, aber irgendwie komme ich nicht dran ... :(

Hintergrund: Die Extension soll auf allen Plattformen laufen, auf denen auch OpenOffice läuft und das Auffinden der Template-Datei also auch möglichst Plattform-unabhängig ...

Wäre nett, wenn jemand eine Idee hat, meine bisherigen Suchen auch auf develepors.openoffice.org o.ä. usw. waren leider erfolglos,

Danke, HardyH

Nach oben