1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?> 2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*b1cdbd2cSJim Jagielski<!--*********************************************************** 4*b1cdbd2cSJim Jagielski * 5*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 6*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 7*b1cdbd2cSJim Jagielski * distributed with this work for additional information 8*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 9*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 10*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 11*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 14*b1cdbd2cSJim Jagielski * 15*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 16*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 17*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 19*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 20*b1cdbd2cSJim Jagielski * under the License. 21*b1cdbd2cSJim Jagielski * 22*b1cdbd2cSJim Jagielski ***********************************************************--> 23*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Samples" script:language="StarBasic">Option Explicit 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim JagielskiConst SAMPLES = 1000 26*b1cdbd2cSJim JagielskiConst STYLES = 1100 27*b1cdbd2cSJim JagielskiConst aTempFileName = "Berend_Ilko_Tom_Stella_Volker.stc" 28*b1cdbd2cSJim JagielskiPublic Const Twip = 425 29*b1cdbd2cSJim JagielskiDim oUcbObject as Object 30*b1cdbd2cSJim JagielskiPublic StylesDir as String 31*b1cdbd2cSJim JagielskiPublic StylesDialog as Object 32*b1cdbd2cSJim JagielskiPublic PathSeparator as String 33*b1cdbd2cSJim JagielskiPublic oFamilies as Object 34*b1cdbd2cSJim JagielskiPublic aOptions(0) as New com.sun.star.beans.PropertyValue 35*b1cdbd2cSJim JagielskiPublic sQueryPath as String 36*b1cdbd2cSJim JagielskiPublic NoArgs()as New com.sun.star.beans.PropertyValue 37*b1cdbd2cSJim JagielskiPublic aTempURL as String 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim JagielskiPublic Files(100) as String 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski'-------------------------------------------------------------------------------------- 43*b1cdbd2cSJim Jagielski'Miscellaneous Section starts here 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim JagielskiFunction PrepareForEditing(Optional ByVal oDocument) 46*b1cdbd2cSJim Jagielski'This sub is called when sample documents are loaded (load event). 47*b1cdbd2cSJim Jagielski'It checks whether the documents is read-only, in which case it 48*b1cdbd2cSJim Jagielski'offers the user to create a new (writable) document using the original 49*b1cdbd2cSJim Jagielski'as a template. 50*b1cdbd2cSJim JagielskiDim DocPath as String 51*b1cdbd2cSJim JagielskiDim MMessage as String 52*b1cdbd2cSJim JagielskiDim MTitle as String 53*b1cdbd2cSJim JagielskiDim RValue as Integer 54*b1cdbd2cSJim JagielskiDim oNewDocument as Object 55*b1cdbd2cSJim JagielskiDim mFileProperties(1) as New com.sun.star.beans.PropertyValue 56*b1cdbd2cSJim Jagielski PrepareForEditing = NULL 57*b1cdbd2cSJim Jagielski BasicLibraries.LoadLibrary( "Tools" ) 58*b1cdbd2cSJim Jagielski If InitResources("'Template'", "tpl") then 59*b1cdbd2cSJim Jagielski If IsMissing(oDocument) Then 60*b1cdbd2cSJim Jagielski oDocument = ThisComponent 61*b1cdbd2cSJim Jagielski End If 62*b1cdbd2cSJim Jagielski If oDocument.IsReadOnly then 63*b1cdbd2cSJim Jagielski MMessage = GetResText(SAMPLES) 64*b1cdbd2cSJim Jagielski MTitle = GetResText(SAMPLES + 1) 65*b1cdbd2cSJim Jagielski RValue = Msgbox(MMessage, (128+48+1), MTitle) 66*b1cdbd2cSJim Jagielski If RValue = 1 Then 67*b1cdbd2cSJim Jagielski DocPath = oDocument.URL 68*b1cdbd2cSJim Jagielski mFileProperties(0).Name = "AsTemplate" 69*b1cdbd2cSJim Jagielski mFileProperties(0).Value = True 70*b1cdbd2cSJim Jagielski mFileProperties(1).Name = "MacroExecutionMode" 71*b1cdbd2cSJim Jagielski mFileProperties(1).Value = com.sun.star.document.MacroExecMode.USE_CONFIG 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski oNewDocument = StarDesktop.LoadComponentFromURL(DocPath,"_default",0, mFileProperties()) 74*b1cdbd2cSJim Jagielski PrepareForEditing() = oNewDocument 75*b1cdbd2cSJim Jagielski DisposeDocument(oDocument) 76*b1cdbd2cSJim Jagielski Else 77*b1cdbd2cSJim Jagielski PrepareForEditing() = NULL 78*b1cdbd2cSJim Jagielski End If 79*b1cdbd2cSJim Jagielski Else 80*b1cdbd2cSJim Jagielski PrepareForEditing() = oDocument 81*b1cdbd2cSJim Jagielski End If 82*b1cdbd2cSJim Jagielski End If 83*b1cdbd2cSJim JagielskiEnd Function 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski'-------------------------------------------------------------------------------------- 88*b1cdbd2cSJim Jagielski'Calc Style Section starts here 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim JagielskiSub ShowStyles 91*b1cdbd2cSJim Jagielski'This sub displays the style selection dialog if the current document is a calc document. 92*b1cdbd2cSJim JagielskiDim TemplateDir, ActFileTitle, DisplayDummy as String 93*b1cdbd2cSJim JagielskiDim sFilterName(0) as String 94*b1cdbd2cSJim JagielskiDim StyleNames() as String 95*b1cdbd2cSJim JagielskiDim t as Integer 96*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 97*b1cdbd2cSJim Jagielski BasicLibraries.LoadLibrary("Tools") 98*b1cdbd2cSJim Jagielski If InitResources("'Template'", "tpl") then 99*b1cdbd2cSJim Jagielski oDocument = ThisComponent 100*b1cdbd2cSJim Jagielski If oDocument.SupportsService("com.sun.star.sheet.SpreadsheetDocument") Then 101*b1cdbd2cSJim Jagielski ToggleWindow(False) 102*b1cdbd2cSJim Jagielski oUcbObject = createUnoService("com.sun.star.ucb.SimpleFileAccess") 103*b1cdbd2cSJim Jagielski oFamilies = oDocument.StyleFamilies 104*b1cdbd2cSJim Jagielski SaveCurrentStyles(oDocument) 105*b1cdbd2cSJim Jagielski StylesDialog = LoadDialog("Template", "DialogStyles") 106*b1cdbd2cSJim Jagielski DialogModel = StylesDialog.Model 107*b1cdbd2cSJim Jagielski TemplateDir = GetPathSettings("Template", False, 0) 108*b1cdbd2cSJim Jagielski StylesDir = GetOfficeSubPath("Template", "wizard/styles/") 109*b1cdbd2cSJim Jagielski sQueryPath = GetOfficeSubPath("Template", "../wizard/bitmap/") 110*b1cdbd2cSJim Jagielski DialogModel.Title = GetResText(STYLES) 111*b1cdbd2cSJim Jagielski DialogModel.cmdCancel.Label = GetResText(STYLES+2) 112*b1cdbd2cSJim Jagielski DialogModel.cmdOk.Label = GetResText(STYLES+3) 113*b1cdbd2cSJim Jagielski Stylenames() = ReadDirectories(StylesDir, False, False, True,) 114*b1cdbd2cSJim Jagielski MaxIndex = Ubound(Stylenames()) 115*b1cdbd2cSJim Jagielski BubbleSortList(Stylenames(),True) 116*b1cdbd2cSJim Jagielski Dim cStyles(MaxIndex) 117*b1cdbd2cSJim Jagielski For t = 0 to MaxIndex 118*b1cdbd2cSJim Jagielski Files(t) = StyleNames(t,0) 119*b1cdbd2cSJim Jagielski cStyles(t) = StyleNames(t,1) 120*b1cdbd2cSJim Jagielski Next t 121*b1cdbd2cSJim Jagielski On Local Error Resume Next 122*b1cdbd2cSJim Jagielski DialogModel.lbStyles.StringItemList() = cStyles() 123*b1cdbd2cSJim Jagielski ToggleWindow(True) 124*b1cdbd2cSJim Jagielski StylesDialog.Execute 125*b1cdbd2cSJim Jagielski End If 126*b1cdbd2cSJim Jagielski End If 127*b1cdbd2cSJim JagielskiEnd Sub 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim JagielskiSub SelectStyle 131*b1cdbd2cSJim Jagielski'This sub loads the specific styles from a style document and loads them into the 132*b1cdbd2cSJim Jagielski'current document. 133*b1cdbd2cSJim JagielskiDim StylePath as String 134*b1cdbd2cSJim JagielskiDim NewStyle as String 135*b1cdbd2cSJim JagielskiDim Position as Integer 136*b1cdbd2cSJim Jagielski Position = DialogModel.lbStyles.SelectedItems(0) 137*b1cdbd2cSJim Jagielski If Position > -1 Then 138*b1cdbd2cSJim Jagielski ToggleWindow(False) 139*b1cdbd2cSJim Jagielski StylePath = Files(Position) 140*b1cdbd2cSJim Jagielski aOptions(0).Name = "OverwriteStyles" 141*b1cdbd2cSJim Jagielski aOptions(0).Value = true 142*b1cdbd2cSJim Jagielski oFamilies.loadStylesFromURL(StylePath, aOptions()) 143*b1cdbd2cSJim Jagielski ToggleWindow(True) 144*b1cdbd2cSJim Jagielski End If 145*b1cdbd2cSJim JagielskiEnd Sub 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim JagielskiSub SaveCurrentStyles(oDocument as Object) 149*b1cdbd2cSJim Jagielski'This sub stores the current document in the user work directory 150*b1cdbd2cSJim Jagielski On Error Goto ErrorOcurred 151*b1cdbd2cSJim Jagielski aTempURL = GetPathSettings("Work", False) 152*b1cdbd2cSJim Jagielski Dim aRightMost as String 153*b1cdbd2cSJim Jagielski aRightMost = Right(aTempURL, 1) 154*b1cdbd2cSJim Jagielski if aRightMost = "/" Then 155*b1cdbd2cSJim Jagielski aTempURL = aTempURL & aTempFileName 156*b1cdbd2cSJim Jagielski Else 157*b1cdbd2cSJim Jagielski aTempURL = aTempURL & "/" & aTempFileName 158*b1cdbd2cSJim Jagielski End If 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski While FileExists(aTempURL) 161*b1cdbd2cSJim Jagielski aTempURL=Left(aTempURL,(Len(aTempURL)-4)) & "_1.stc" 162*b1cdbd2cSJim Jagielski Wend 163*b1cdbd2cSJim Jagielski oDocument.storeToURL(aTempURL, NoArgs()) 164*b1cdbd2cSJim Jagielski Exit Sub 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim JagielskiErrorOcurred: 167*b1cdbd2cSJim Jagielski MsgBox(GetResText( STYLES+1 ), 16, GetResText( STYLES )) 168*b1cdbd2cSJim Jagielski On Local Error Goto 0 169*b1cdbd2cSJim JagielskiEnd Sub 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim JagielskiSub RestoreCurrentStyles 173*b1cdbd2cSJim Jagielski'This sub retrieves the styles from the temporarily save document 174*b1cdbd2cSJim Jagielski ToggleWindow(False) 175*b1cdbd2cSJim Jagielski On Local Error Goto NoFile 176*b1cdbd2cSJim Jagielski If FileExists(aTempURL) Then 177*b1cdbd2cSJim Jagielski aOptions(0).Name = "OverwriteStyles" 178*b1cdbd2cSJim Jagielski aOptions(0).Value = true 179*b1cdbd2cSJim Jagielski oFamilies.LoadStylesFromURL(aTempURL, aOptions()) 180*b1cdbd2cSJim Jagielski KillTempFile() 181*b1cdbd2cSJim Jagielski End If 182*b1cdbd2cSJim Jagielski StylesDialog.EndExecute 183*b1cdbd2cSJim Jagielski ToggleWindow(True) 184*b1cdbd2cSJim JagielskiNOFILE: 185*b1cdbd2cSJim Jagielski If Err <> 0 Then 186*b1cdbd2cSJim Jagielski Msgbox("Cannot load Document from " & aTempUrl, 64, GetProductname()) 187*b1cdbd2cSJim Jagielski End If 188*b1cdbd2cSJim Jagielski On Local Error Goto 0 189*b1cdbd2cSJim JagielskiEnd Sub 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim JagielskiSub CloseStyleDialog 193*b1cdbd2cSJim Jagielski KillTempFile() 194*b1cdbd2cSJim Jagielski DialogExited = True 195*b1cdbd2cSJim Jagielski StylesDialog.Endexecute 196*b1cdbd2cSJim JagielskiEnd Sub 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim JagielskiSub KillTempFile() 200*b1cdbd2cSJim Jagielski If oUcbObject.Exists(aTempUrl) Then 201*b1cdbd2cSJim Jagielski oUcbObject.Kill(aTempUrl) 202*b1cdbd2cSJim Jagielski End If 203*b1cdbd2cSJim JagielskiEnd Sub 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski</script:module> 206