123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <!--
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- -->
- <script:module xmlns:script="http://openoffice.org/2000/script" script:name="DialogModul" script:language="StarBasic">Option Explicit
- Public Const bDebugWizard = True
- Public Const SBFIRSTAPPLCHECKED = 0
- Public Const SBSECONDAPPLCHECKED = 1
- Public Const SBTHIRDAPPLCHECKED = 2
- Public Const SBFOURTHAPPLCHECKED = 3
- Public WizardMode as String
- Public Const SBMICROSOFTMODE = "MS"
- ' The absolute maximal Number of possible Applications
- Public Const SBMAXAPPLCOUNT = 4
- Public Const Twip = 425
- Public MaxApplCount as Integer
- Public CurOffice As Integer
- Public SOBitmapPath As String
- Public SOWorkPath As String
- Public SOTemplatePath as String
- Public bCancelTask As Boolean
- Public bDoKeepApplValues as Boolean
- Public oUcb as Object
- Public PathSeparator as String
- Public ApplCount as Integer
- Public sKeyName(SBMAXAPPLCOUNT-1) as String
- Public sValueName(SBMAXAPPLCOUNT-1) as String
- Public sCRLF as String
- Public MSFilterName(5,4) as String
- Public Applications(SBMAXAPPLCOUNT-1,9)
- Public Const SBAPPLCONVERT = 0
- Public Const SBDOCCONVERT = 1
- Public Const SBDOCRECURSIVE = 2
- Public Const SBDOCSOURCE = 3
- Public Const SBDOCTARGET = 4
- Public Const SBTEMPLCONVERT = 5
- Public Const SBTEMPLRECURSIVE = 6
- Public Const SBTEMPLSOURCE = 7
- Public Const SBTEMPLTARGET = 8
- Public Const SBAPPLKEY = 9
- Public XMLTemplateList()
- ' Application-relating Data are stored in this Array
- ' according to the following structure:
- ' Applications(X,0) = True/False (Application is to be converted)
- ' Applications(X,1) = True/False (Documents are to be converted)
- ' Applications(X,2) = True/False (Including Subdirectories)
- ' Applications(X,3) = "File:///..." (SourceUrl of the documents)
- ' Applications(X,4) = "File///:..." (TargetUrl of the documents)
- ' Applications(X,5) = True/False (Templates are to be converted)
- ' Applications(X,6) = True/False (Including Subdirectories)
- ' Applications(X,7) = "File:///..." (SourceUrl of the templates)
- ' Applications(X,8) = "File:///..." (TargetUrl of the templates)
- ' Applications(X,9) = 0 (Key to the original Index of the Applications)
- Sub FillStep_Welcome()
- Dim i as Integer
- ' bDoKeepApplValues = False
- ImportDialogArea.Title = sTitle
- With ImportDialog
- .cmdHelp.Label = sHelpButton
- .cmdCancel.Label = sCancelButton
- .cmdBack.Label = sBackButton
- .cmdGoOn.Label = sNextButton
- .WelcomeTextLabel.Label = sWelcomeTextLabel1
- .WelcomeTextLabel3.Label = sWelcomeTextLabel3
- .optMSDocuments.Label = sContainerName(0)
- .chkMSApplication1.Label = sMsDocumentCheckbox(0)
- .chkMSApplication2.Label = sMsDocumentCheckbox(1)
- .chkMSApplication3.Label = sMsDocumentCheckbox(2)
- .cmdBack.Enabled = False
- .Step = 1
-
- If Not oFactoryKey.hasbyName("com.sun.star.text.TextDocument") Then
- .chkLogfile.State = 0
- .chkLogfile.Enabled = False
- End If
- End With
- CheckModuleInstallation()
- ToggleNextButton()
- End Sub
- Sub FillStep_InputPaths(OfficeIndex as Integer, bStartup as Boolean)
- Dim Index as Integer
- Dim oNullObject as Object
- If bStartup And Not bDoKeepApplValues Then
- If ImportDialog.optMSDocuments.State = 1 Then
- SetupMSConfiguration()
- Else
- 'Not supposed to happen - is there an assert in BASIC...
- End If
- FillUpApplicationList()
- End If
- CurOffice = OfficeIndex
- Index = Applications(CurOffice,SBAPPLKEY)
- InitializePathsforCurrentApplication(Index)
- With ImportDialog
- .chkTemplatePath.Label = sTemplateCheckbox(Index)
- .chkDocumentPath.State = Abs(Applications(CurOffice,SBDOCCONVERT))
- .chkDocumentSearchSubDir.State = Abs(Applications(CurOffice,SBDOCRECURSIVE))
- .txtDocumentImportPath.Text = ConvertFromUrl(Applications(CurOffice,SBDOCSOURCE))
- .txtDocumentExportPath.Text = ConvertFromUrl(Applications(CurOffice,SBDOCTARGET))
- .hlnDocuments.Label = sProgressMoreDocs
- If WizardMode = SBMICROSOFTMODE Then
- ImportDialogArea.Title = sTitle & " - " & sMSDocumentCheckBox(Index)
- End If
- .chkTemplatePath.Enabled = True
- .chkDocumentPath.Enabled = True
- .chkTemplatePath.Label = sTemplateCheckbox(Index)
- .chkDocumentPath.Label = sDocumentCheckbox(Index)
- .hlnTemplates.Label = sProgressMoreTemplates
- .chkTemplatePath.State = Abs(Applications(CurOffice,SBTEMPLCONVERT))
- ToggleInputPaths(oNullObject,"Template")
- ToggleInputPaths(oNullObject,"Document")
- .chkTemplateSearchSubDir.State = Abs(Applications(CurOffice,SBTEMPLRECURSIVE))
- .txtTemplateImportPath.Text = ConvertFromUrl(Applications(CurOffice,SBTEMPLSOURCE))
- .txtTemplateExportPath.Text = ConvertFromUrl(Applications(CurOffice,SBTEMPLTARGET))
- .cmdGoOn.Label = sNextButton
- .cmdBack.Enabled = True
- ImportDialog.Step = 2
- End With
- ImportDialogArea.GetControl("chkTemplatePath").SetFocus()
- ToggleNextButton()
- End Sub
- Sub FillUpApplicationList()
- Dim i as Integer
- Dim a as Integer
- Dim BoolValue as Boolean
- If Not bDoKeepApplValues Then
- a = 0
- For i = 1 To ApplCount
- If ImportDialog.optMSDocuments.State = 1 Then
- BoolValue = ImportDialogArea.GetControl("chkMSApplication" & i).Model.State = 1
- End If
- Applications(a,SBAPPLCONVERT) = BoolValue
- Applications(a,SBDOCCONVERT) = BoolValue
- Applications(a,SBDOCRECURSIVE) = BoolValue
- Applications(a,SBDOCSOURCE) = "" ' GetDefaultPath(i)
- Applications(a,SBDOCTARGET) = "" ' SOWorkPath
- Applications(a,SBTEMPLCONVERT) = BoolValue
- Applications(a,SBTEMPLRECURSIVE) = BoolValue
- Applications(a,SBTEMPLSOURCE) = "" ' GetTemplateDefaultPath(i)
- Applications(a,SBTEMPLTARGET) = "" ' GetTargetTemplatePath(i)
- Applications(a,SBAPPLKEY) = i-1
- If BoolValue Then
- a = a + 1
- End If
- Next i
- ApplCount = a
- End If
- End Sub
- Sub InitializePathsforCurrentApplication(i as Integer)
- AssignPathToCurrentApplication(SBDOCSOURCE, GetDefaultPath(i))
- AssignPathToCurrentApplication(SBDOCTARGET, SOWorkPath)
- AssignPathToCurrentApplication(SBTEMPLSOURCE, GetTemplateDefaultPath(i))
- AssignPathToCurrentApplication(SBTEMPLTARGET, GetTargetTemplatePath(i))
- End Sub
- Sub AssignPathToCurrentApplication(Index as Integer, NewPath as String)
- If Applications(CurOffice,Index) = "" Then
- If CurOffice > 0 Then
- Applications(CurOffice,Index) = Applications(CurOffice-1,Index)
- Else
- Applications(CurOffice,Index) = NewPath
- End If
- End If
- End Sub
- Sub SaveStep_InputPath()
- Applications(CurOffice,SBDOCCONVERT) = ImportDialog.chkDocumentPath.State = 1
- Applications(CurOffice,SBDOCRECURSIVE) = ImportDialog.chkDocumentSearchSubDir.State = 1
- Applications(CurOffice,SBDOCSOURCE) = ConvertToURL(ImportDialog.txtDocumentImportPath.Text)
- Applications(CurOffice,SBDOCTARGET) = ConvertToUrl(ImportDialog.txtDocumentExportPath.Text)
- Applications(CurOffice,SBTEMPLCONVERT) = ImportDialog.chkTemplatePath.State = 1
- Applications(CurOffice,SBTEMPLRECURSIVE) = ImportDialog.chkTemplateSearchSubDir.State = 1
- Applications(CurOffice,SBTEMPLSOURCE) = ConvertToURL(ImportDialog.txtTemplateImportPath.Text)
- Applications(CurOffice,SBTEMPLTARGET) = ConvertToURL(ImportDialog.txtTemplateExportPath.Text)
- End Sub
- Sub ToggleInputPaths(aEvent as Object, Optional sDocType)
- Dim bDoEnable as Boolean
- Dim sLocDocType as String
- Dim oCheckBox as Object
- If Not IsNull(aEvent) Then
- sLocDocType = aEvent.Source.Model.Tag
- Else
- sLocDocType = sDocType
- End If
- With ImportDialogArea
- oCheckBox = .GetControl("chk" & sLocDocType & "Path").Model
- bDoEnable = oCheckBox.State = 1 And oCheckBox.Enabled
- .GetControl("lbl" & sLocDocType & "Import").Model.Enabled = bDoEnable
- .GetControl("lbl" & sLocDocType & "Export").Model.Enabled = bDoEnable
- .GetControl("txt" & sLocDocType & "ImportPath").Model.Enabled = bDoEnable
- .GetControl("txt" & sLocDocType & "ExportPath").Model.Enabled = bDoEnable
- .GetControl("chk" & sLocDocType & "SearchSubDir").Model.Enabled = bDoEnable
- .GetControl("cmd" & sLocDocType & "Import").Model.Enabled = bDoEnable
- .GetControl("cmd" & sLocDocType & "Export").Model.Enabled = bDoEnable
- End With
- ToggleNextButton()
- End Sub
- Function MakeSummaryString()
- Dim sTmpText As String
- Dim i as Integer
- Dim Index as Integer
- Dim sAddText as String
- For i = 0 To ApplCount -1
- Index = Applications(i,SBAPPLKEY)
- If Applications(i,SBTEMPLCONVERT) Then
- ' Templates are to be converted
- sAddText = ""
- If WizardMode = SBMICROSOFTMODE Then
- sAddText = sSumMSTemplates(Index) & sCRLF
- End If
- sTmpText = sTmpText & sAddText & ConvertFromUrl(Applications(i,SBTEMPLSOURCE)) & sCRLF
- If Applications(i,SBTEMPLRECURSIVE) Then
- ' Including Subdirectories
- sTmpText = sTmpText & sSumInclusiveSubDir & sCRLF
- End If
- sTmpText = sTmpText & sSumSaveDocuments & sCRLF
- sTmpText = sTmpText & ConvertFromUrl(Applications(i,SBTEMPLTARGET)) & sCRLF
- sTmpText = sTmpText & sCRLF
- End If
- If Applications(i,SBDOCCONVERT) Then
- ' Documents are to be converted
- If WizardMode = SBMICROSOFTMODE Then
- sAddText = sSumMSDocuments(Index) & sCRLF
- End If
- sTmpText = sTmpText & sAddText & ConvertFromUrl(Applications(i,SBDOCSOURCE)) & sCRLF
- If Applications(i,SBDOCRECURSIVE) Then
- ' Including Subdirectories
- sTmpText = sTmpText & sSumInclusiveSubDir & sCRLF
- End If
- sTmpText = sTmpText & sSumSaveDocuments & sCRLF
- sTmpText = sTmpText & ConvertFromUrl(Applications(i,SBDOCTARGET)) & sCRLF
- sTmpText = sTmpText & sCRLF
- End If
- Next i
- MakeSummaryString = sTmpText
- End Function
- Sub FillStep_Summary()
- ImportDialogArea.Title = sTitle
- With ImportDialog
- .SummaryTextbox.Text = MakeSummaryString()
- .cmdGoOn.Enabled = .SummaryTextbox.Text <> ""
- .cmdGoOn.Label = sBeginButton
- .SummaryHeaderLabel.Label = sSummaryHeader
- .Step = 3
- End With
- ImportDialogArea.GetControl("SummaryHeaderLabel").SetFocus()
- End Sub
- Sub FillStep_Progress()
- With ImportDialog
- .cmdBack.Enabled = False
- .cmdGoOn.Enabled = False
- .hlnProgress.Label = sProgressPage_1
- .LabelRetrieval.FontWeight = com.sun.star.awt.FontWeight.BOLD
- .LabelRetrieval.Label = sProgressPage_2
- .LabelCurProgress.Label = sProgressPage_3
- .LabelCurDocumentRetrieval.Label = ""
- .LabelCurTemplateRetrieval.Label = ""
- .LabelCurDocument.Label = ""
- .Step = 4
- End With
- ImportDialogArea.GetControl("LabelRetrieval").SetFocus()
- If ImportDialog.chkLogfile.State = 1 Then
- ImportDialog.cmdShowLogFile.DefaultButton = True
- End If
- End Sub
- Sub SetupMSConfiguration()
- Wizardmode = SBMICROSOFTMODE
- MaxApplCount = 3
- ApplCount = 3
- ' chkTemplatePath-Captions
- sTemplateCheckBox(0) = GetResText("MSTemplateCheckbox_1_")
- sTemplateCheckBox(1) = GetResText("MSTemplateCheckbox_2_")
- sTemplateCheckBox(2) = GetResText("MSTemplateCheckbox_3_")
- ' DocumentCheckbox- Captions
- sDocumentCheckBox(0) = GetResText("MSDocumentCheckbox_1_")
- sDocumentCheckBox(1) = GetResText("MSDocumentCheckbox_2_")
- sDocumentCheckBox(2) = GetResText("MSDocumentCheckbox_3_")
- sKeyName(0) = "Software\Microsoft\Office\8.0\Word\Options"
- sKeyName(1) = "Software\Microsoft\Office\8.0\Excel\Microsoft Excel"
- sKeyName(2) = "Software\Microsoft\Office\8.0\PowerPoint\Recent Folder List\Default"
- sValueName(0) = "DOC-PATH"
- sValueName(1) = "DefaultPath"
- sValueName(2) = ""
- ' See definition of Filtername-Array about meaning of fields
- MSFilterName(0,0) = "doc|docx|docm"
- MSFilterName(0,1) = "writer8|writer8|writer8"
- MSFilterName(0,2) = "odt|odt|odt"
- MSFilterName(0,3) = sMSDocumentCheckBox(0)
- MSFilterName(0,4) = "Word"
-
- MSFilterName(1,0) = "xls|xlsx|xlsm"
- MSFilterName(1,1) = "calc8|calc8|calc8"
- MSFilterName(1,2) = "ods|ods|ods"
- MSFilterName(1,3) = sMSDocumentCheckBox(1)
- MSFilterName(1,4) = "Excel"
- MSFilterName(2,0) = "ppt|pps|pptx|pub|pptm|ppsx|ppsm"
- MSFilterName(2,1) = "impress8|impress8|impress8|impress8|impress8|impress8|impress8"
- MSFilterName(2,2) = "odp|odp|odp|odp|odp|odp|odp"
- MSFilterName(2,3) = sMSDocumentCheckBox(2)
- MSFilterName(2,4) = "PowerPoint/Publisher"
- MSFilterName(3,0) = "dot|dotx|dotm"
- MSFilterName(3,1) = "writer8_template|writer8_template|writer8_template"
- MSFilterName(3,2) = "ott|ott|ott"
- MSFilterName(3,3) = sMSTemplateCheckBox(0)
- MSFilterName(3,4) = "Word"
-
- MSFilterName(4,0) = "xlt|xltx|xltm"
- MSFilterName(4,1) = "calc8_template|calc8_template|calc8_template"
- MSFilterName(4,2) = "ots|ots|ots"
- MSFilterName(4,3) = sMSTemplateCheckBox(1)
- MSFilterName(4,4) = "Excel"
- MSFilterName(5,0) = "pot|potx|potm"
- MSFilterName(5,1) = "impress8_template|impress8_template|impress8_template"
- MSFilterName(5,2) = "otp|otp|otp"
- MSFilterName(5,3) = sMSTemplateCheckBox(2)
- MSFilterName(5,4) = "PowerPoint"
- End Sub
- Function CheckControlPath(oCheckbox as Object, oTextBox as Object, ByVal bDoEnable as Boolean)
- Dim sPath as String
- If Not bDoEnable Then
- CheckControlPath = False
- ElseIf oCheckbox.State = 0 Then
- CheckControlPath = True
- Else
- sPath = ConvertToUrl(Trim(oTextBox.Text))
- CheckControlPath = oUcb.Exists(sPath)
- End If
- End Function
- Function CheckInputPaths() as Boolean
- Dim bChangePage as Boolean
- bChangePage = CheckTextBoxPath(ImportDialog.txtTemplateImportPath, True, False, sTitle, False)
- bChangePage = CheckTextBoxPath(ImportDialog.txtTemplateExportPath, bChangePage, True, sTitle, False)
- bChangePage = CheckTextBoxPath(ImportDialog.txtDocumentImportPath, bChangePage, False, sTitle, False)
- bChangePage = CheckTextBoxPath(ImportDialog.txtDocumentExportPath, bChangePage, True, sTitle, False)
- CheckInputPaths = bChangePage
- End Function
- Function CheckTextBoxPath(oTextBox as Object, ByVal bCheck as Boolean, bCreateNew as Boolean, sTitle as String, bgetResources as Boolean) as Boolean
- Dim iCreate as Integer
- Dim sQueryMessage as String
- Dim sUrlPath as String
- Dim sMessageNoDir as String
- Dim sShowPath as String
- Dim oLocUcb as Object
- oLocUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
- If bGetResources Then
- If InitResources("ImportWizard") then
- sNoDirCreation = GetResText("NoDirCreation")
- sMsgDirNotThere = GetResText("MsgDirNotThere")
- sQueryForNewCreation = GetResText("QueryfornewCreation")
- Else
- CheckTextBoxPath() = False
- Exit Function
- End If
- End If
- If oTextBox.Enabled Then
- If bCheck Then
- sShowPath = oTextBox.Text
- sUrlPath = ConvertToUrl(sShowPath)
- If Not oLocUcb.Exists(sUrlPath) Then
- If Not bCreateNew Then
- ' Sourcedirectories must be existing, Targetdirectories may be created new
- sQueryMessage = ReplaceString(sMsgDirNotThere, sShowPath,"%1")
- Msgbox(sQueryMessage,16,sTitle)
- CheckTextBoxPath() = False
- Exit Function
- Else
- sQueryMessage = ReplaceString(sMsgDirNotThere, sShowPath,"%1")
- sQueryMessage = sQueryMessage & Chr(13) & sQueryForNewCreation
- iCreate = Msgbox (sQueryMessage, 36, sTitle)
- If iCreate = 6 Then
- On Local Error Goto NOVALIDPATH
- CreateFolder(sUrlPath)
- If Not oLocUcb.Exists(sUrlPath) Then
- Goto NOVALIDPATH
- End If
- Else
- CheckTextBoxPath() = False
- Exit Function
- End If
- End If
- End If
- CheckTextBoxPath() = True
- Else
- CheckTextBoxPath() = False
- End If
- Else
- CheckTextBoxPath() = True
- End If
- Exit Function
- NOVALIDPATH:
- sMessageNoDir = ReplaceString(sNoDirCreation, sShowPath, "%1")
- Msgbox(sMessageNoDir, 16, sTitle)
- CheckTextBoxPath() = False
- End Function
- Sub InitializeProgressPage(oDialog as Object)
- oDialog.LabelRetrieval.FontWeight = com.sun.star.awt.FontWeight.NORMAL
- oDialog.LabelCurProgress.FontWeight = com.sun.star.awt.FontWeight.BOLD
- End Sub
- Sub SetProgressDisplay(AbsFound as Integer)
- ImportDialog.LabelRetrieval.Label = sProgressPage_2 & " " & ReplaceString(sProgressPage_5, Str(AbsFound) & " ", "%1")
- ImportDialog.LabelCurDocumentRetrieval.Label = sProgressFound & " " & CStr(AbsDocuFound) & " " & sProgressMoreDocs
- ImportDialog.LabelCurTemplateRetrieval.Label = sProgressFound & " " & CStr(AbsTemplateFound) & " " & sProgressMoreTemplates
- End Sub
- Sub TakoverFolderName(aEvent as Object)
- Dim RefControlName as String
- Dim oRefControl
- RefControlName = aEvent.Source.Model.Tag
- oRefControl = ImportDialogArea.GetControl(RefControlName)
- GetFolderName(oRefControl.Model)
- ToggleNextButton()
- End Sub
- Sub FinalizeDialogButtons()
- ImportDialog.cmdShowLogFile.Enabled = ((Isnull(oLogDocument) = False) And (ImportDialog.chkLogfile.State = 1))
- ImportDialog.cmdCancel.Enabled = False
- ImportDialog.cmdGoOn.Label = sCloseButton
- ImportDialog.cmdGoOn.Enabled = True
- End Sub
- </script:module>
|