home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2003 March
/
PCWorld_2003-03_cd.bin
/
Software
/
Vyzkuste
/
openoffice
/
f_0283
/
AutoPilotRun.xba
next >
Wrap
Extensible Markup Language
|
2002-02-19
|
13KB
|
395 lines
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="AutoPilotRun" script:language="StarBasic">Option Explicit
Public SourceDir as String
Public TargetDir as String
Public TargetStemDir as String
Public SourceFile as String
Public TargetFile as String
Public Source as String
Public SubstFile as String
Public SubstDir as String
Public NoArgs()
Public FilterList(6) as String
Public GoOn as Boolean
Public DoUnprotect as Integer
Public Password as String
Public DocIndex as Integer
Public oPathSettings as Object
Public oDocInfo as Object
Public oUcb as Object
Public TotDocCount as Integer
Public sTotDocCount as String
Public OpenProperties(1) as New com.sun.star.beans.PropertyValue
Sub StartAutoPilot()
Dim i As Integer
BasicLibraries.LoadLibrary("Tools")
BasicLibraries.LoadLibrary("ImportWizard")
If InitResources("Euro Converter", "eur") Then
oDocInfo = CreateUnoService("com.sun.star.document.DocumentProperties")
oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oLocale = GetStarOfficeLocale()
InitializeConverter(oLocale, 2)
ToggleGoOnButton()
DialogModel.cmdGoOn.DefaultButton = True
DialogConvert.GetControl("optWholeDir").SetFocus()
DialogConvert.Execute
DialogConvert.Dispose()
End If
End Sub
Sub ConvertDocuments()
Dim FilesList()
Dim bDisposable as Boolean
If Source <> "" And TargetDir <> "" Then
If DialogModel.optSingleFile.State = 1 Then
SourceFile = Source
TotDocCount = 1
Else
SourceDir = Source
TargetStemDir = TargetDir
FilterList(0) = "application/x-starcalc"
FilterList(1) = "application/vnd.stardivision.calc"
FilterList(2) = "application/vnd.sun.xml.calc"
If DialogModel.chkTextDocuments.State = 1 Then
ReDim Preserve FilterList(6) as String
FilterList(3) = "application/x-starwriter"
FilterList(4) = "application/vnd.stardivision.writer"
FilterList(5) = "application/vnd.stardivision.writer/web"
FilterList(6) = "application/vnd.sun.xml.writer"
End If
FilesList() = ReadDirectories(SourceDir, bRecursive, True, False, FilterList())
TotDocCount = Ubound(FilesList(),1) + 1
End If
InitializeProgressPage(DialogModel)
' ChangeToNextProgressStep()
sTotDocCount = CStr(TotDocCount)
OpenProperties(0).Name = "Hidden"
OpenProperties(0).Value = True
OpenProperties(1).Name = "AsTemplate"
OpenProperties(1).Value = False
For DocIndex = 0 To TotDocCount - 1
If InitializeDocument(FilesList(), bDisposable) Then
If StoreDocument() Then
ConvertDocument()
oDocument.Store
End If
If bDisposable Then
oDocument.Dispose()
End If
End If
Next DocIndex
DialogModel.cmdBack.Enabled = True
DialogModel.cmdGoOn.Enabled = True
DialogModel.cmdGoOn.Label = sReady
DialogModel.cmdCancel.Label = sEnd
End If
End Sub
Function InitializeDocument(FilesList(), bDisposable as Boolean) as Boolean
' The Autopilot is started from step No. 2
Dim sViewPath as String
Dim bIsReadOnly as Boolean
Dim sExtension as String
On Local Error Goto NEXTFILE
If Not bCancelTask Then
If DialogModel.optWholeDir.State = 1 Then
SourceFile = FilesList(DocIndex,0)
TargetFile = ReplaceString(SourceFile,TargetStemDir,SourceDir)
TargetDir = DirectorynameoutofPath(TargetFile, "/")
Else
SourceFile = Source
TargetFile = TargetDir & "/" & FileNameoutofPath(SourceFile, "/")
End If
If CreateFolder(TargetDir) Then
sExtension = GetFileNameExtension(SourceFile, "/")
oDocument = OpenDocument(SourceFile, OpenProperties(), bDisposable)
If (oDocument.IsReadOnly) AND (UCase(SourceFile) = UCase(TargetFile)) Then
bIsReadOnly = True
Msgbox(sMsgDOCISREADONLY, 16, GetProductName())
Else
bIsReadOnly = False
RetrieveDocumentObjects()
sViewPath = CutPathView(SourceFile, 60)
DialogModel.lblCurDocument.Label = Str(DocIndex+1) & "/" & sTotDocCount & " (" & sViewPath & ")"
End If
InitializeDocument() = Not bIsReadOnly
Else
InitializeDocument() = False
End If
Else
InitializeDocument() = False
End If
NEXTFILE:
If Err <> 0 Then
InitializeDocument() = False
Resume LETSGO
LETSGO:
End If
End Function
Sub ChangeToNextProgressStep()
DialogModel.lblCurProgress.FontWeight = com.sun.star.awt.FontWeight.NORMAL
DialogConvert.GetControl("lblCurProgress").Visible = True
End Sub
Function StoreDocument() as Boolean
Dim sCurFileExists as String
Dim iOverWrite as Integer
If (TargetFile <> "") And (Not bCancelTask) Then
On Local Error Goto NOSAVING
If oUcb.Exists(TargetFile) Then
sCurFileExists = ReplaceString(sMsgFileExists, ConvertFromUrl(TargetFile), "<1>")
sCurFileExists = ReplaceString(sCurFileExists, chr(13), "<CR>")
iOverWrite = Msgbox (sCurFileExists, 32 + 3, sMsgDLGTITLE)
Select Case iOverWrite
Case 1 ' OK
Case 2 ' Abort
bCancelTask = True
StoreDocument() = False
Exit Function
Case 7 ' No
StoreDocument() = False
Exit Function
End Select
End If
If TargetFile <> SourceFile Then
oDocument.StoreAsUrl(TargetFile,NoArgs)
Else
oDocument.Store
End If
StoreDocument() = True
NOSAVING:
If Err <> 0 Then
StoreDocument() = False
Resume CLERROR
End If
CLERROR:
End If
End Function
Sub SwapExtent()
DialogModel.chkRecursive.Enabled = DialogModel.optWholeDir.State = 1
If DialogModel.optWholeDir.State = 1 Then
DialogModel.lblSource.Label = sSOURCEDIR '"Quellverzeichnis:"
If Not IsNull(SubstFile) Then
SubstFile = DialogModel.txtSource.Text
DialogModel.txtSource.Text = SubstDir
End If
Else
DialogModel.LblSource.Label = sSOURCEFILE '"Quelldatei:"
If Not IsNull(SubstDir) Then
SubstDir = DialogModel.txtSource.Text
DialogModel.txtSource.Text = SubstFile
End If
End If
ToggleGoOnButton()
End Sub
Function InitializeThirdStep() as Boolean
Dim TextBoxText as String
Source = AssignFileName(DialogModel.txtSource.Text, DialogModel.lblSource.Label, True)
If CheckTextBoxPath(DialogModel.txtTarget, True, True, sMsgDLGTITLE, True) Then
TargetDir = AssignFileName(DialogModel.txtTarget.Text, DialogModel.lblTarget.Label, False)
Else
TargetDir = ""
End If
If Source <> "" And TargetDir <> "" Then
bRecursive = DialogModel.chkRecursive.State = 1
bDoUnprotect = DialogModel.chkProtect.State = 1
DialogModel.lblRetrieval.FontWeight = com.sun.star.awt.FontWeight.BOLD
DialogModel.lblRetrieval.Label = sPrgsRETRIEVAL
DialogModel.lblCurProgress.Label = sPrgsCONVERTING
If DialogModel.optWholeDir.State = 1 Then
TextBoxText = sSOURCEDIR & " " & ConvertFromUrl(Source) & chr(13) '& " "
If DialogModel.chkRecursive.State = 1 Then
TextBoxText = TextBoxText & DeleteStr(sInclusiveSubDir,"~") & chr(13)
End If
Else
TextBoxText = sSOURCEFILE & " " & ConvertFromUrl(Source) & chr(13)
End If
TextBoxText = TextBoxText & sTARGETDIR & " " & ConvertFromUrl(TargetDir) & chr(13)
If DialogModel.chkProtect.State = 1 Then
TextBoxText = TextboxText & sPrgsUNPROTECT
End If
DialogModel.txtConfig.Text = TextBoxText
ToggleProgressStep()
DialogModel.cmdGoOn.Enabled = False
InitializeThirdStep() = True
Else
InitializeThirdStep() = False
End If
End Function
Sub ToggleProgressStep(Optional aEvent as Object)
Dim bMakeVisible as Boolean
Dim LocStep as Integer
' If the Sub is call by the 'cmdBack' Button then set the 'bMakeVisible' variable accordingly
bMakeVisible = IsMissing(aEvent)
If bMakeVisible Then
DialogModel.Step = 3
Else
DialogModel.Step = 2
End If
DialogConvert.GetControl("lblCurrencies").Visible = Not bMakeVisible
DialogConvert.GetControl("lstCurrencies").Visible = Not bMakeVisible
DialogConvert.GetControl("cmdBack").Visible = bMakeVisible
DialogConvert.GetControl("cmdGoOn").Visible = bMakeVisible
DialogModel.imgPreview.ImageUrl = BitmapDir & "euro_" & DialogModel.Step & ".bmp"
End Sub
Sub EnableStep2DialogControls(OnValue as Boolean)
With DialogModel
.hlnExtent.Enabled = OnValue
.optWholeDir.Enabled = OnValue
.optSingleFile.Enabled = OnValue
.chkProtect.Enabled = OnValue
.cmdCallSourceDialog.Enabled = OnValue
.cmdCallTargetDialog.Enabled = OnValue
.lblSource.Enabled = OnValue
.lblTarget.Enabled = OnValue
.txtSource.Enabled = OnValue
.txtTarget.Enabled = OnValue
.imgPreview.Enabled = OnValue
.lstCurrencies.Enabled = OnValue
.lblCurrencies.Enabled = OnValue
If OnValue Then
ToggleGoOnButton()
.chkRecursive.Enabled = .optWholeDir.State = 1
Else
.cmdGoOn.Enabled = False
.chkRecursive.Enabled = False
End If
End With
End Sub
Sub InitializeProgressPage()
DialogConvert.GetControl("lblRetrieval").Visible = False
DialogConvert.GetControl("lblCurProgress").Visible = False
DialogModel.lblRetrieval.FontWeight = com.sun.star.awt.FontWeight.NORMAL
DialogModel.lblCurProgress.FontWeight = com.sun.star.awt.FontWeight.BOLD
DialogConvert.GetControl("lblRetrieval").Visible = True
DialogConvert.GetControl("lblCurProgress").Visible = True
End Sub
Function AssignFileName(sPath as String, ByVal HeaderString, bCheckFileType as Boolean) as String
Dim bIsValid as Boolean
Dim sLocMimeType as String
Dim sNoDirMessage as String
HeaderString = DeleteStr(HeaderString, ":")
sPath = ConvertToUrl(Trim(sPath))
bIsValid = oUcb.Exists(sPath)
If bIsValid Then
If DialogModel.optSingleFile.State = 1 Then
If bCheckFileType Then
sLocMimeType = GetRealFileContent(oDocInfo, sPath)
If DialogModel.chkTextDocuments.State = 1 Then
If (Instr(1, sLocMimeType, "writer") = 0) And (Instr(1, sLocMimeType, "calc") = 0) Then
Msgbox(sMsgFileInvalid, 48, sMsgDLGTITLE)
bIsValid = False
End If
Else
If Instr(1, sLocMimeType, "calc") = 0 Then
Msgbox(sMsgFileInvalid, 48, sMsgDLGTITLE)
bIsValid = False
End If
End If
End If
Else
If Not oUcb.IsFolder(sPath) Then
sNoDirMessage = ReplaceString(sMsgNODIRECTORY,sPath,"<1>")
Msgbox(sNoDirMessage,48, sMsgDLGTITLE)
bIsValid = False
Else
sPath = RTrimStr(sPath,"/")
sPath = sPath & "/"
End If
End if
Else
Msgbox(HeaderString & " '" & ConvertFromUrl(sPath) & "' " & sMsgNOTTHERE,48, sMsgDLGTITLE)
End If
If bIsValid Then
AssignFileName() = sPath
Else
AssignFilename() = ""
End If
End Function
Sub ToggleGoOnButton()
Dim bDoEnable as Boolean
Dim sLocMimeType as String
Dim sPath as String
bDoEnable = Ubound(DialogModel.lstCurrencies.SelectedItems()) > -1
If bDoEnable Then
' Check if Source is set correctly
sPath = ConvertToUrl(Trim(DialogModel.txtSource.Text))
bDoEnable = oUcb.Exists(sPath)
End If
DialogModel.cmdGoOn.Enabled = bDoEnable
End Sub
Sub CallFolderPicker()
GetFolderName(DialogModel.txtTarget)
ToggleGoOnButton()
End Sub
Sub CallFilePicker()
If DialogModel.optSingleFile.State = 1 Then
Dim oMasterKey as Object
Dim oTypes() as Object
Dim oUIKey() as Object
oMasterKey = GetRegistryKeyContent("org.openoffice.Office.TypeDetection/")
oTypes() = oMasterKey.Types
oUIKey = GetRegistryKeyContent("org.openoffice.Office.UI/FilterClassification/LocalFilters")
If DialogModel.chkTextDocuments.State = 1 Then
Dim FilterNames(7,1) as String
FilterNames(4,0) = oTypes.GetByName("writer_StarOffice_XML_Writer").UIName
FilterNames(4,1) = "*.sxw"
FilterNames(5,0) = oTypes.GetByName("writer_StarOffice_XML_Writer_Template").UIName
FilterNames(5,1) = "*.stw"
FilterNames(6,0) = oUIKey.Classes.GetByName("sw3to5").DisplayName
FilterNames(6,1) = "*.sdw"
FilterNames(7,0) = oUIKey.Classes.GetByName("sw3to5templ").DisplayName
Filternames(7,1) = "*.vor"
Else
ReDim FilterNames(3,1) as String
End If
FilterNames(0,0) = oTypes.GetByName("calc_StarOffice_XML_Calc").UIName
Filternames(0,1) = "*.sxc"
FilterNames(1,0) = oTypes.GetByName("calc_StarOffice_XML_Calc_Template").UIName
Filternames(1,1) = "*.stc"
FilterNames(2,0) = oUIKey.Classes.GetByName("sc345").DisplayName
FilterNames(2,1) = "*.sdc"
FilterNames(3,0) = oUIKey.Classes.GetByName("sc345templ").DisplayName
Filternames(3,1) = "*.vor"
GetFileName(DialogModel.txtSource, Filternames())
Else
GetFolderName(DialogModel.txtSource)
End If
ToggleGoOnButton()
End Sub
Sub PreviousStep()
DialogModel.Step = 2
DialogModel.cmdGoOn.Label = sGOON
DialogModel.cmdCancel.Label = sCANCEL
End Sub</script:module>