Option Explicit ' ***** BASIC ***** Public HeaderPreviews(4) as Object Public ImportDialog as Object Public ImportDialogArea as Object Public oFactoryKey as Object Public bShowLogFile as Boolean Public oBinFilterComp as Object ' If the ProgressPage ist already on Top The Dialog will be immediately closed when this flag is ' set to False Public bConversionIsRunning as Boolean Public RetValue as Integer Sub Main() Dim NoArgs() as New com.sun.star.beans.PropertyValue bShowLogFile=FALSE If Not bDebugWizard Then On Local Error Goto RTError End If BasicLibraries.LoadLibrary("Tools") RetValue = 10 bIsFirstLogTable = True bConversionIsRunning = False sCRLF = CHR(13) & CHR(10) oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") oFactoryKey = GetRegistryKeyContent("org.openoffice.Setup/Office/Factories") If GetImportWizardPaths() = False Then Exit Sub End If bCancelTask = False bDoKeepApplValues = False CurOffice = 0 ImportDialogArea = LoadDialog("ImportWizard","ImportDialog") ImportDialog = ImportDialogArea.Model LoadLanguage() WizardMode = SBXMLMODE MaxApplCount = 4 FillStep_Welcome() RepaintHeaderPreview() ImportDialog.ImportPreview.BackGroundColor = RGB(0,60,126) ImportDialog.cmdGoOn.DefaultButton = True ImportDialogArea.GetControl("optMSDocuments").SetFocus() oBinFilterComp = createBF_MigrateFilterIfPossible() ToggleCheckboxesWithBoolean(True) RetValue = ImportDialogArea.Execute() If bShowLogFile=TRUE Then OpenDocument(sLogUrl, NoArgs()) End if If RetValue = 0 Then CancelTask() End If ImportDialogArea.Dispose() End Exit Sub RTError: Msgbox sRTErrorDesc, 16, sRTErrorHeader End Sub Sub NextStep() Dim iCurStep as Integer If Not bDebugWizard Then On Error Goto RTError End If bConversionIsRunning = False iCurStep = ImportDialog.Step Select Case iCurStep Case 1 FillStep_InputPaths(0, True) Case 2 If CheckInputPaths Then SaveStep_InputPath If CurOffice < ApplCount - 1 Then CurOffice = CurOffice + 1 TakeOverPathSettings() FillStep_InputPaths(CurOffice, False) Else FillStep_Summary() End If End If Case 3 FillStep_Progress() Select Case WizardMode Case SBMICROSOFTMODE Call ConvertAllDocuments(MSFilterName()) CASE SBXMLMODE Call ConvertAllDocuments(XMLFilterName()) End Select Case 4 CancelTask(True) End Select If ((ImportDialog.chkLogfile.State <> 1) OR (iCurStep <> 3)) Then ImportDialog.cmdGoOn.DefaultButton = True End If RepaintHeaderPreview() Exit Sub RTError: Msgbox sRTErrorDesc, 16, sRTErrorHeader End Sub Sub PrevStep() Dim iCurStep as Integer If Not bDebugWizard Then On Error Goto RTError End If bConversionIsRunning = False iCurStep = ImportDialog.Step Select Case iCurStep Case 4 ImportDialog.cmdCancel.Label = sCancelButton FillStep_Summary() Case 3 FillStep_InputPaths(Applcount-1, False) Case 2 SaveStep_InputPath If CurOffice > 0 Then CurOffice = CurOffice - 1 FillStep_InputPaths(CurOffice, False) Else FillStep_Welcome() ToggleCheckboxesWithBoolean(True) bDoKeepApplValues = True End If End Select ImportDialog.cmdGoOn.DefaultButton = True RepaintHeaderPreview() Exit Sub RTError: Msgbox sRTErrorDesc, 16, sRTErrorHeader End Sub Sub CancelTask() If bConversionIsRunning Then If Msgbox(sConvertError1, 36, sConvertError2) = 6 Then bCancelTask = True bInterruptSearch = True Else bCancelTask = False ImportDialog.cmdCancel.Enabled = True End If Else ImportDialogArea.EndExecute() End If End Sub Sub TemplateDirSearchDialog() CallDirSearchDialog(ImportDialog.TemplateImportPath) End Sub Sub RepaintHeaderPreview() Dim Bitmap As Object Dim CurStep as Integer Dim sBitmapPath as String Dim LocPrefix as String CurStep = ImportDialog.Step LocPrefix = WizardMode LocPrefix = ReplaceString(LocPrefix,"XML", "SO") If CurStep = 2 Then sBitmapPath = SOBitmapPath & LocPrefix & "-Import_" & CurStep & "-" & Applications(CurOffice,SBAPPLKEY) + 1 & ".bmp" Else sBitmapPath = SOBitmapPath & "Import_" & CurStep & ".bmp" End If ImportDialog.ImportPreview.ImageURL = sBitmapPath End Sub Sub CheckModuleInstallation() Dim i as Integer For i = 1 To MaxApplCount ImportDialogArea.GetControl("chk" & WizardMode & "Application" & i).Model.Enabled = Abs(CheckInstalledModule(i-1)) Next i End Sub Function createBF_MigrateFilterIfPossible() Dim oService On Error Goto RTError oService = createUnoService("com.sun.star.comp.office.BF_MigrateFilter") getBinFilterCompIfItExists = oService Exit Function RTError: createBF_MigrateFilterIfPossible = Nothing End Function Function CheckInstalledModule(Index as Integer) as Boolean Dim ModuleName as String Dim NameList() as String Dim MaxIndex as Integer Dim i as Integer ModuleName = ModuleList(Index) If Instr(1,ModuleName,"/") <> 0 Then CheckInstalledModule() = False NameList() = ArrayoutOfString(ModuleName,"/", MaxIndex) For i = 0 To MaxIndex If oFactoryKey.HasByName(NameList(i)) Then CheckInstalledModule() = True End If Next i Else CheckInstalledModule() = oFactoryKey.HasByName(ModuleName) End If End Function Sub ToggleCheckboxes(oEvent as Object) Dim bMSEnable as Boolean WizardMode = oEvent.Source.Model.Tag bMSEnable = WizardMode = "MS" ToggleCheckboxesWithBoolean(bMSEnable) End Sub Sub ToggleCheckboxesWithBoolean(bMSEnable as Boolean) If bMSEnable = True Then WizardMode = SBMICROSOFTMODE MaxApplCount = 3 Else WizardMode = SBXMLMODE MaxApplCount = 4 End If With ImportDialogArea If (isNull(oBinFilterComp)) Then .GetControl("optSODocuments").Visible = False .GetControl("chkSOApplication1").Visible = False .GetControl("chkSOApplication2").Visible = False .GetControl("chkSOApplication3").Visible = False .GetControl("chkSOApplication4").Visible = False Else .GetControl("chkSOApplication1").Model.Enabled = Not bMSEnable .GetControl("chkSOApplication2").Model.Enabled = Not bMSEnable .GetControl("chkSOApplication3").Model.Enabled = Not bMSEnable .GetControl("chkSOApplication4").Model.Enabled = Not bMSEnable End if .GetControl("chkMSApplication1").Model.Enabled = bMSEnable .GetControl("chkMSApplication2").Model.Enabled = bMSEnable .GetControl("chkMSApplication3").Model.Enabled = bMSEnable End With CheckModuleInstallation() bDoKeepApplValues = False ToggleNextButton() End Sub Sub ToggleNextButton() Dim iCurStep as Integer Dim bDoEnable as Boolean Dim i as Integer iCurStep = ImportDialog.Step Select Case iCurStep Case 1 With ImportDialog If .optMSDocuments.State = 1 Then bDoEnable = .chkMSApplication1.State = 1 Or .chkMSApplication2.State = 1 Or .chkMSApplication3.State = 1 Else bDoEnable = .chkSOApplication1.State = 1 Or .chkSOApplication2.State = 1 Or .chkSOApplication3.State = 1 Or .chkSOApplication4.State = 1 End If End With bDoKeepApplValues = False Case 2 bDoEnable = CheckControlPath(ImportDialog.chkTemplatePath, ImportDialog.txtTemplateImportPath, True) bDoEnable = CheckControlPath(ImportDialog.chkDocumentPath, ImportDialog.txtDocumentImportPath, bDoEnable) End Select ImportDialog.cmdGoOn.Enabled = bDoEnable End Sub Sub TakeOverPathSettings() 'Takes over the Pathsettings from the first selected application to the next applications If Applications(CurOffice,SBDOCSOURCE) = "" Then Applications(CurOffice,SBDOCSOURCE) = Applications(0,SBDOCSOURCE) Applications(CurOffice,SBDOCTARGET) = Applications(0,SBDOCTARGET) If WizardMode = SBXMLMODE AND Applications(CurOffice,SBAPPLKEY) = 3 Then Applications(CurOffice,SBTEMPLSOURCE) = Applications(CurOffice,SBDOCSOURCE) Applications(CurOffice,SBTEMPLTARGET) = Applications(CurOffice,SBDOCTARGET) Else Applications(CurOffice,SBTEMPLSOURCE) = Applications(0,SBTEMPLSOURCE) Applications(CurOffice,SBTEMPLTARGET) = Applications(0,SBTEMPLTARGET) End If End If End Sub Function GetImportWizardPaths() as Boolean SOBitmapPath = GetOfficeSubPath("Template", "../wizard/bitmap") If SOBitmapPath <> "" Then SOWorkPath = GetPathSettings("Work", False) If SOWorkPath <> "" Then SOTemplatePath = GetPathSettings("Template_writable",False,0) If SOTemplatePath <> "" Then GetImportWizardPaths() = True Exit Function End If End If End If GetImportWizardPaths() = False End Function