<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!--*********************************************************** * * 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 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * ***********************************************************--> <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'", "tpl") Then DlgAgenda_gMyName = GetResText(1200) DialogModel.CmdCancel.Label = GetResText(1102) DialogModel.CmdAgdGoon.Label = GetResText(1103) ' DlgAgenda_gMsgNoCancel$ = GetResText(1201) DialogModel.FrmAgenda.Label = GetResText(1202) DialogModel.OptAgenda1.Label = GetResText(1203) DialogModel.OptAgenda2.Label = GetResText(1204) ' 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>