%PDF- %PDF-
Direktori : /usr/lib/libreoffice/share/basic/Template/ |
Current File : //usr/lib/libreoffice/share/basic/Template/ModuleAgenda.xba |
<?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="ModuleAgenda" script:language="StarBasic">' All variables must be declared before use Option Explicit ' Used for "disabling" the cancel button of the dialog Public DialogExited As Boolean Dim DlgAgenda_gMyName as String Public TemplateDialog as Object Public DialogModel as Object Public sTrueContent as String Public Bookmarkname as String Sub Initialize() ' User sets the type of minutes BasicLibraries.LoadLibrary( "Tools" ) TemplateDialog = LoadDialog("Template", "TemplateDialog") DialogModel = TemplateDialog.Model DialogModel.Step = 1 LoadLanguageAgenda() DialogModel.OptAgenda2.State = TRUE GetOptionValues() DialogExited = FALSE TemplateDialog.Execute End Sub Sub LoadLanguageAgenda() If InitResources("'Template'") Then DlgAgenda_gMyName = GetResText("AgendaDlgName") DialogModel.CmdCancel.Label = GetResText("STYLES_2") DialogModel.CmdAgdGoon.Label = GetResText("STYLES_3") ' DlgAgenda_gMsgNoCancel$ = GetResText("AgendaDlgNoCancel") DialogModel.FrmAgenda.Label = GetResText("AgendaDlgFrame") DialogModel.OptAgenda1.Label = GetResText("AgendaDlgButton1") DialogModel.OptAgenda2.Label = GetResText("AgendaDlgButton2") ' DialogModel.OptAgenda1.State = 1 End If End Sub Sub ModifyTemplate() Dim oDocument, oBookmarks, oBookmark, oBookmarkCursor, oTextField as Object Dim i as Integer oDocument = ThisComponent oBookMarks = oDocument.Bookmarks On Local Error Goto NOBOOKMARK TemplateDialog.EndExecute DialogExited = TRUE oBookmarkCursor = CreateBookmarkCursor(oDocument, BookmarkName) oBookmarkCursor.Text.insertString(oBookmarkCursor,"",True) ' Delete all the Bookmarks except for the one named "NextTopic" For i = oBookmarks.Count-1 To 0 Step -1 oBookMark = oBookMarks.GetByIndex(i) If oBookMark.Name <> "NextTopic" Then oBookMark.Dispose() End If Next i oBookMarkCursor = CreateBookmarkCursor(oDocument, "NextTopic") If Not IsNull(oBookMarkCursor) Then oTextField = oBookMarkCursor.TextField ' oTextField.TrueContent = sTrueContent oTextField.Content = sTrueContent End If NOBOOKMARK: If Err <> 0 Then RESUME NEXT End If End Sub Sub NewTopic ' Add a new topic to the agenda Dim oDocument, oBookmarks, oBookmark, oBookmarkCursor, oTextField as Object Dim oBaustein, oAutoText, oAutoGroup as Object Dim i as Integer oDocument = ThisComponent oBookMarkCursor = CreateBookMarkCursor(oDocument, "NextTopic") oTextField = oBookMarkCursor.TextField oAutoText = CreateUnoService("com.sun.star.text.AutoTextContainer") If oAutoText.HasbyName("template") Then oAutoGroup = oAutoText.GetbyName("template") If oAutoGroup.HasbyName(oTextField.Content) Then oBaustein = oAutoGroup.GetbyName(oTextField.Content) oBaustein.ApplyTo(oBookMarkCursor) Else Msgbox("AutoText '" & oTextField.Content & "' is not existing. Cannot insert additional topic!") End If Else Msgbox("AutoGroupField template is not existing. Cannot insert additional topic!", 16, DlgAgenda_gMyName ) End If End Sub ' Add initials, date and time at bottom of agenda, disable and hide command buttons Sub FinishAgenda Dim BtnAddAgendaTopic As Object Dim BtnFinishAgenda As Object Dim oUserField, oDateTimeField as Object Dim oBookmarkCursor as Object Dim oFormats, oLocale as Object Dim iDateTimeKey as Integer BasicLibraries.LoadLibrary( "Tools" ) oDocument = ThisComponent oUserField = oDocument.CreateInstance("com.sun.star.text.TextField.ExtendedUser") oUserField.UserDatatype = com.sun.star.text.UserDataPart.SHORTCUT oDateTimeField = oDocument.CreateInstance("com.sun.star.text.TextField.DateTime") ' Assign Standardformat to Datetime-Textfield oFormats = oDocument.Numberformats oLocale = oDocument.CharLocale iDateTimeKey = oFormats.GetStandardFormat(com.sun.star.util.NumberFormat.DATETIME,oLocale) oDateTimeField.NumberFormat = iDateTimeKey oBookmarkCursor = CreateBookmarkCursor(oDocument, "NextTopic") oBookmarkCursor.Text.InsertTextContent(oBookmarkCursor,oUserField,False) oBookmarkCursor.Text.InsertString(oBookmarkCursor," ",False) oBookmarkCursor.Text.InsertTextContent(oBookmarkCursor,oDateTimeField,False) BtnAddAgendaTopic = getControlModel(oDocument, "BtnAddAgendaTopic") BtnFinishAgenda = getControlModel(oDocument, "BtnFinishAgenda") If Not IsNull(BtnAddAgendaTopic) Then BtnAddAgendaTopic.Enabled = FALSE If Not IsNull(BtnFinishAgenda) Then BtnFinishAgenda.Enabled = FALSE End Sub Function CreateBookMarkCursor(oDocument as Object,sBookmarkName as String) oBookMarks = oDocument.Bookmarks If oBookmarks.HasbyName(sBookmarkName) Then oBookMark = oBookMarks.GetbyName(sBookmarkName) CreateBookMarkCursor = oBookMark.Anchor.Text.CreateTextCursorByRange(oBookMark.Anchor) Else Msgbox "Bookmark " & sBookmarkName & " is not defined!" End If End Function Sub DeleteButtons Dim AgendaFinished As Boolean Dim BtnAddAgendaTopic As Object Dim BtnFinishAgenda As Object oDocument = ThisComponent BtnAddAgendaTopic = getControlModel(oDocument, "BtnAddAgendaTopic") BtnFinishAgenda = getControlModel(oDocument, "BtnFinishAgenda") ' If buttons could be accessed: If at least one button is disabled, then agenda is finished AgendaFinished = FALSE If Not IsNull(BtnAddAgendaTopic) Then AgendaFinished = (AgendaFinished Or (BtnAddAgendaTopic.Enabled = FALSE)) End If If Not IsNull(BtnFinishAgenda) Then AgendaFinished = (AgendaFinished Or (BtnFinishAgenda.Enabled = FALSE)) End If ' Delete Buttons, empty rows at end of document & macro bindings if agenda is finished If AgendaFinished Then DisposeControl(oDocument, "BtnAddAgendaTopic") DisposeControl(oDocument, "BtnFinishAgenda") oBookmarkCursor = CreateBookMarkCursor(oDocument,"NextTopic") oBookMarkCursor.GotoEnd(True) oBookmarkCursor.Text.insertString(oBookmarkCursor,"",True) AttachBasicMacroToEvent(oDocument,"OnNew", "") AttachBasicMacroToEvent(oDocument,"OnSave", "") AttachBasicMacroToEvent(oDocument,"OnSaveAs", "") AttachBasicMacroToEvent(oDocument,"OnPrint", "") End If End Sub Sub GetOptionValues(Optional aEvent as Object) Dim CurTag as String Dim Taglist() as String If Not IsMissing(aEvent) Then CurTag = aEvent.Source.Model.Tag Else If DialogModel.OptAgenda1.State = TRUE Then CurTag = DialogModel.OptAgenda1.Tag Else CurTag = DialogModel.OptAgenda2.Tag End If End If Taglist() = ArrayoutOfString(CurTag, ";") Bookmarkname = TagList(0) sTrueContent = TagList(1) End Sub </script:module>