395 lines
No EOL
13 KiB
XML
395 lines
No EOL
13 KiB
XML
<?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> |