1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?>
2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3*b1cdbd2cSJim Jagielski<!--***********************************************************
4*b1cdbd2cSJim Jagielski *
5*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
6*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
7*b1cdbd2cSJim Jagielski * distributed with this work for additional information
8*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
9*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
10*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
11*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
14*b1cdbd2cSJim Jagielski *
15*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
16*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
17*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
19*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
20*b1cdbd2cSJim Jagielski * under the License.
21*b1cdbd2cSJim Jagielski *
22*b1cdbd2cSJim Jagielski ***********************************************************-->
23*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Embed" script:language="StarBasic">&apos; *** MODULE EMBED ***
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim JagielskiDim oDialog AS Object
26*b1cdbd2cSJim JagielskiDim oBrowseDialog As Object
27*b1cdbd2cSJim JagielskiDim document AS Object
28*b1cdbd2cSJim JagielskiDim arParas(0) As String
29*b1cdbd2cSJim JagielskiDim arSecs(0) As String
30*b1cdbd2cSJim JagielskiDim arVars(0) As String
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski&apos;=======================================================
33*b1cdbd2cSJim Jagielski&apos; Main
34*b1cdbd2cSJim Jagielski&apos;-------------------------------------------------------
35*b1cdbd2cSJim Jagielski&apos; Embeds a variable or a section
36*b1cdbd2cSJim Jagielski&apos;=======================================================
37*b1cdbd2cSJim JagielskiSub Main(optional bCR As Boolean)
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski	If not IsHelpFile Then
40*b1cdbd2cSJim Jagielski		msgbox(strErr_NoHelpFile)
41*b1cdbd2cSJim Jagielski		Exit Sub
42*b1cdbd2cSJim Jagielski	End If
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielski	GlobalScope.BasicLibraries.loadLibrary(&quot;Tools&quot;)
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski	document = StarDesktop.CurrentComponent
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski	BasicLibraries.LoadLibrary(&quot;HelpAuthoring&quot;)
49*b1cdbd2cSJim Jagielski	oDialog = LoadDialog(&quot;HelpAuthoring&quot;, &quot;dlgEmbed&quot;)
50*b1cdbd2cSJim Jagielski	oDialogModel = oDialog.Model
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski	oTxtFilePath = oDialog.GetControl(&quot;txtFilePath&quot;)   		&apos; path to file, rel to Docroot
53*b1cdbd2cSJim Jagielski	oTxtID = oDialog.GetControl(&quot;txtID&quot;) 					&apos; anchor
54*b1cdbd2cSJim Jagielski	oTxtHidFName = oDialog.GetControl(&quot;txtHidFName&quot;)		&apos; pure filename
55*b1cdbd2cSJim Jagielski	oOpVariable = oDialog.GetControl(&quot;opVariable&quot;)
56*b1cdbd2cSJim Jagielski	oOpSection = oDialog.GetControl(&quot;opSection&quot;)
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski	DocRoot = ReadConfig(&quot;HelpPrefix&quot;)
59*b1cdbd2cSJim Jagielski	EmbedFolder = ReadConfig(&quot;LastEmbedDir&quot;)
60*b1cdbd2cSJim Jagielski	EmbedFile = ReadConfig(&quot;LastEmbedFile&quot;)
61*b1cdbd2cSJim Jagielski	EmbedID = ReadConfig(&quot;LastEmbedAnchor&quot;)
62*b1cdbd2cSJim Jagielski	EmbedType = ReadConfig(&quot;LastEmbedType&quot;)
63*b1cdbd2cSJim Jagielski	If EmbedType = &quot;Variable&quot; Then
64*b1cdbd2cSJim Jagielski		oOpVariable.State = TRUE
65*b1cdbd2cSJim Jagielski	Else
66*b1cdbd2cSJim Jagielski		oOpVariable.State = FALSE
67*b1cdbd2cSJim Jagielski	End If
68*b1cdbd2cSJim Jagielski	SetLabel
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski	If IsSubDir(EmbedFolder,DocRoot) Then
71*b1cdbd2cSJim Jagielski		RelDir = Right(EmbedFolder,Len(EmbedFolder)-Len(DocRoot))
72*b1cdbd2cSJim Jagielski		If Dir(DocRoot+RelDir+EmbedFile) &gt; &quot;&quot; Then
73*b1cdbd2cSJim Jagielski			oTxtFilePath.Text = RelDir+EmbedFile
74*b1cdbd2cSJim Jagielski			oTxtHidFName.Text = DocRoot+RelDir+EmbedFile
75*b1cdbd2cSJim Jagielski			oTxtID.Text = EmbedID
76*b1cdbd2cSJim Jagielski		End If
77*b1cdbd2cSJim Jagielski	End If
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski	GoForIt = 1
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski	If (oDialog.Execute() = 1 AND oTxtFilePath.Text &lt;&gt; &quot;&quot;) Then
83*b1cdbd2cSJim Jagielski&apos;		msgbox (oTxtFilePath.Text)
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski		If oTxtID.Text = &quot;&quot; Then
86*b1cdbd2cSJim Jagielski			msgbox &quot;You did not specify a section or variable to embed.&quot;,256
87*b1cdbd2cSJim Jagielski		Else
88*b1cdbd2cSJim Jagielski			WriteConfig(&quot;LastEmbedAnchor&quot;,oTxtID.Text)
89*b1cdbd2cSJim Jagielski			If oOpVariable.State Then
90*b1cdbd2cSJim Jagielski				txtEmbed = oTxtFilePath.Text + &quot;#&quot; + oTxtID.Text
91*b1cdbd2cSJim Jagielski				InsertTag(&quot;EMBEDVAR&quot;,&quot;&lt;EMBEDVAR var=&quot;&quot;&quot; + txtEmbed + &quot;&quot;&quot;&gt;&quot;,&quot;hlp_aux_tag&quot;)
92*b1cdbd2cSJim Jagielski				SetCharStyle(&quot;Default&quot;)
93*b1cdbd2cSJim Jagielski				WriteConfig(&quot;LastEmbedType&quot;,&quot;Variable&quot;)
94*b1cdbd2cSJim Jagielski			Else
95*b1cdbd2cSJim Jagielski				txtEmbed = oTxtFilePath.Text + &quot;#&quot; + oTxtID.Text
96*b1cdbd2cSJim Jagielski				CR
97*b1cdbd2cSJim Jagielski				SetParaStyle(&quot;hlp_aux_embed&quot;)
98*b1cdbd2cSJim Jagielski				SetCharStyle(&quot;hlp_aux_tag&quot;)
99*b1cdbd2cSJim Jagielski				InsertTag(&quot;EMBED&quot;,&quot;&lt;EMBED href=&quot;&quot;&quot; + txtEmbed + &quot;&quot;&quot;&gt;&quot;,&quot;hlp_aux_tag&quot;)
100*b1cdbd2cSJim Jagielski				CR
101*b1cdbd2cSJim Jagielski				WriteConfig(&quot;LastEmbedType&quot;,&quot;Section&quot;)
102*b1cdbd2cSJim Jagielski			End If
103*b1cdbd2cSJim Jagielski		End If
104*b1cdbd2cSJim Jagielski	End If
105*b1cdbd2cSJim Jagielski	oDialog.dispose
106*b1cdbd2cSJim JagielskiEnd Sub
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski&apos;=======================================================
109*b1cdbd2cSJim Jagielski&apos; SetLabel
110*b1cdbd2cSJim Jagielski&apos;-------------------------------------------------------
111*b1cdbd2cSJim Jagielski&apos; Changes the text field label in the dialog
112*b1cdbd2cSJim Jagielski&apos;=======================================================
113*b1cdbd2cSJim JagielskiSub SetLabel
114*b1cdbd2cSJim Jagielski	olblID = oDialog.GetControl(&quot;lblID&quot;)
115*b1cdbd2cSJim Jagielski	oOpVariable = oDialog.GetControl(&quot;opVariable&quot;)
116*b1cdbd2cSJim Jagielski	If oOpVariable.getState Then
117*b1cdbd2cSJim Jagielski		olblID.setText(&quot;Variable ID&quot;)
118*b1cdbd2cSJim Jagielski		oDialog.Title = &quot;Embed Variable&quot;
119*b1cdbd2cSJim Jagielski	Else
120*b1cdbd2cSJim Jagielski		olblID.setText(&quot;Section or Paragraph ID&quot;)
121*b1cdbd2cSJim Jagielski		oDialog.Title = &quot;Embed Section&quot;
122*b1cdbd2cSJim Jagielski	End If
123*b1cdbd2cSJim JagielskiEnd Sub
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim JagielskiSub GetFile
126*b1cdbd2cSJim JagielskiDim ListAny(0) as Long
127*b1cdbd2cSJim Jagielski	ListAny(0) = com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_SIMPLE
128*b1cdbd2cSJim Jagielski	oFileDialog = CreateUnoService(&quot;com.sun.star.ui.dialogs.FilePicker&quot;)
129*b1cdbd2cSJim Jagielski	oFileDialog.Initialize(ListAny())
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielski	DocRoot = ReadConfig(&quot;HelpPrefix&quot;)
132*b1cdbd2cSJim Jagielski	sLastEmbedDir = ReadConfig(&quot;LastEmbedDir&quot;)
133*b1cdbd2cSJim Jagielski	sLastEmbedFile = ReadConfig(&quot;LastEmbedFile&quot;)
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski	If IsSubDir(sLastEmbedDir,DocRoot) Then
136*b1cdbd2cSJim Jagielski		oFileDialog.setDisplayDirectory(sLastEmbedDir)
137*b1cdbd2cSJim Jagielski		If sLastEmbedFile &lt;&gt; &quot;&quot; AND Dir(sLastEmbedDir+sLastEmbedFile) &gt; &quot;&quot; Then
138*b1cdbd2cSJim Jagielski			oFileDialog.setDefaultName(sLastEmbedFile)
139*b1cdbd2cSJim Jagielski		End If
140*b1cdbd2cSJim Jagielski	Else
141*b1cdbd2cSJim Jagielski		oFileDialog.setDisplayDirectory(DocRoot)
142*b1cdbd2cSJim Jagielski	End If
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski	oMasterKey = GetRegistryKeyContent(&quot;org.openoffice.TypeDetection.Types/&quot;)
145*b1cdbd2cSJim Jagielski	oTypes() = oMasterKey.Types
146*b1cdbd2cSJim Jagielski	oFileDialog.AppendFilter(&quot;Help&quot;, &quot;*.xhp&quot;)
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski	oFileDialog.SetTitle(&quot;Embed From Help File&quot;)
149*b1cdbd2cSJim Jagielski	iAccept = oFileDialog.Execute()
150*b1cdbd2cSJim Jagielski	If iAccept = 1 Then
151*b1cdbd2cSJim Jagielski		sPath = oFileDialog.Files(0)
152*b1cdbd2cSJim Jagielski		sCurDir = oFileDialog.getDisplayDirectory +&quot;/&quot;
153*b1cdbd2cSJim Jagielski		WriteConfig(&quot;LastEmbedDir&quot;,sCurDir)
154*b1cdbd2cSJim Jagielski		LastFile = Right(sPath, Len(sPath) - Len(sCurDir))
155*b1cdbd2cSJim Jagielski		WriteConfig(&quot;LastEmbedFile&quot;,LastFile)
156*b1cdbd2cSJim Jagielski
157*b1cdbd2cSJim Jagielski		oTxtPath = oDialog.GetControl(&quot;txtFilePath&quot;)
158*b1cdbd2cSJim Jagielski		oTxtHidFName = oDialog.GetControl(&quot;txtHidFName&quot;)
159*b1cdbd2cSJim Jagielski		oTxtHidFName.Text = sPath
160*b1cdbd2cSJim Jagielski
161*b1cdbd2cSJim Jagielski		If IsSubDir(sCurDir,DocRoot) Then
162*b1cdbd2cSJim Jagielski			oTxtPath.Text = GetRelPath(sPath, DocRoot)
163*b1cdbd2cSJim Jagielski		Else
164*b1cdbd2cSJim Jagielski			oTxtPath.Text = sPath
165*b1cdbd2cSJim Jagielski			msgbox(&quot;File is outside of your Document Root&quot;,48,&quot;Warning&quot;)
166*b1cdbd2cSJim Jagielski		End If
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski		oButBrowseIDs = oDialog.GetControl(&quot;butBrowseIDs&quot;)
169*b1cdbd2cSJim Jagielski		oButBrowseIDs.Enable = true
170*b1cdbd2cSJim Jagielski	End If
171*b1cdbd2cSJim Jagielski
172*b1cdbd2cSJim JagielskiEnd Sub
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim JagielskiSub UpdateFileName
175*b1cdbd2cSJim Jagielski	oTxtPath = oDialog.GetControl(&quot;txtFilePath&quot;)
176*b1cdbd2cSJim Jagielski	ShortFName = oTxtPath.Text
177*b1cdbd2cSJim Jagielski
178*b1cdbd2cSJim Jagielski	If ShortFName &gt; &quot;&quot; Then
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski		oTxtHidFName = oDialog.GetControl(&quot;txtHidFName&quot;)
181*b1cdbd2cSJim Jagielski		FName = oTxtHidFName.Text
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski		If Right(FName, Len(ShortFName)) &lt;&gt; ShortFName Then
184*b1cdbd2cSJim Jagielski		&apos;	oTxtHidFName.Text = MakeAbsPath(ShortFName)
185*b1cdbd2cSJim Jagielski			oTxtHidFName.Text = ShortFName
186*b1cdbd2cSJim Jagielski		End If
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski		oButBrowseIDs = oDialog.GetControl(&quot;butBrowseIDs&quot;)
189*b1cdbd2cSJim Jagielski		If not(FileExists(oTxtHidFName.Text)) Then
190*b1cdbd2cSJim Jagielski			msgbox oTxtHidFName.Text+&quot; cannot be found.&quot;,48,&quot;D&apos;oh!&quot;
191*b1cdbd2cSJim Jagielski			oButBrowseIDs.Enable = false
192*b1cdbd2cSJim Jagielski		Else
193*b1cdbd2cSJim Jagielski			oButBrowseIDs.Enable = true
194*b1cdbd2cSJim Jagielski		End If
195*b1cdbd2cSJim Jagielski	End If
196*b1cdbd2cSJim JagielskiEnd Sub
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim JagielskiSub BrowseEmbed
199*b1cdbd2cSJim Jagielski	BasicLibraries.LoadLibrary(&quot;HelpAuthoring&quot;)
200*b1cdbd2cSJim Jagielski	oBrowseDialog = LoadDialog(&quot;HelpAuthoring&quot;, &quot;dlg_BrowseEmbed&quot;)
201*b1cdbd2cSJim Jagielski	oOpVariable = oDialog.GetControl(&quot;opVariable&quot;)
202*b1cdbd2cSJim Jagielski	oTxtPath = oDialog.GetControl(&quot;txtFilePath&quot;)
203*b1cdbd2cSJim Jagielski	oTxtHidFName = oDialog.GetControl(&quot;txtHidFName&quot;)
204*b1cdbd2cSJim Jagielski	filename = oTxtHidFName.Text
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski	ReDim arParas(0)
207*b1cdbd2cSJim Jagielski	ReDim arVars(0)
208*b1cdbd2cSJim Jagielski	ReDim arSecs(0)
209*b1cdbd2cSJim Jagielski
210*b1cdbd2cSJim Jagielski&apos;	msgbox(filename)
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski	iNumber = Freefile
213*b1cdbd2cSJim Jagielski	If FileExists(filename) Then
214*b1cdbd2cSJim Jagielski		Dim arLines(0) As String
215*b1cdbd2cSJim Jagielski		Open filename For Input As iNumber
216*b1cdbd2cSJim Jagielski		Do While (not eof(iNumber))
217*b1cdbd2cSJim Jagielski			Line Input #iNumber, sLine
218*b1cdbd2cSJim Jagielski			sDim = ubound(arLines())+1
219*b1cdbd2cSJim Jagielski			ReDim Preserve arLines(sDim)
220*b1cdbd2cSJim Jagielski			arLines(sDim) = sLine
221*b1cdbd2cSJim Jagielski		Loop
222*b1cdbd2cSJim Jagielski		Close #iNumber
223*b1cdbd2cSJim Jagielski		sContent = join(arLines(),&quot; &quot;)
224*b1cdbd2cSJim Jagielski
225*b1cdbd2cSJim Jagielski		arTmp() = split(sContent,&quot;&lt;paragraph&quot;)
226*b1cdbd2cSJim Jagielski		For n=1 to ubound(arTmp())
227*b1cdbd2cSJim Jagielski			If arTmp(n) &lt;&gt; &quot;&quot; Then
228*b1cdbd2cSJim Jagielski				arTmp(n) = Right(arTmp(n),Len(arTmp(n))-Instr(arTmp(n),&quot;id=&quot;)-3)
229*b1cdbd2cSJim Jagielski				sId = Left(arTmp(n),Instr(arTmp(n),&quot;&quot;&quot;&quot;)-1)
230*b1cdbd2cSJim Jagielski				arTmp(n) = Right(arTmp(n),Len(arTmp(n))-Instr(arTmp(n),&quot;&gt;&quot;))
231*b1cdbd2cSJim Jagielski				arTmp(n) = Left(arTmp(n),Instr(arTmp(n),&quot;&lt;/paragraph&gt;&quot;)-1)
232*b1cdbd2cSJim Jagielski				If Len(arTmp(n) &gt; 100) Then
233*b1cdbd2cSJim Jagielski					arTmp(n) = Left(arTmp(n),100)+&quot;...&quot;
234*b1cdbd2cSJim Jagielski				End If
235*b1cdbd2cSJim Jagielski				sDim = ubound(arParas())
236*b1cdbd2cSJim Jagielski				arParas(sDim) = sId+&quot;: &quot;+arTmp(n)
237*b1cdbd2cSJim Jagielski				sDim = ubound(arParas())+1
238*b1cdbd2cSJim Jagielski				ReDim Preserve arParas(sDim)
239*b1cdbd2cSJim Jagielski			End If
240*b1cdbd2cSJim Jagielski		Next n
241*b1cdbd2cSJim Jagielski
242*b1cdbd2cSJim Jagielski		arTmp() = split(sContent,&quot;&lt;section&quot;)
243*b1cdbd2cSJim Jagielski		For n=1 to ubound(arTmp())
244*b1cdbd2cSJim Jagielski			If arTmp(n) &lt;&gt; &quot;&quot; Then
245*b1cdbd2cSJim Jagielski				arTmp(n) = Right(arTmp(n),Len(arTmp(n))-Instr(arTmp(n),&quot;id=&quot;)-3)
246*b1cdbd2cSJim Jagielski				sId = Left(arTmp(n),Instr(arTmp(n),&quot;&quot;&quot;&quot;)-1)
247*b1cdbd2cSJim Jagielski				arTmp(n) = Right(arTmp(n),Len(arTmp(n))-Instr(arTmp(n),&quot;&gt;&quot;))
248*b1cdbd2cSJim Jagielski				If Instr(arTmp(n),&quot;&lt;/section&gt;&quot;)&gt;0 Then
249*b1cdbd2cSJim Jagielski					arTmp(n) = Left(arTmp(n),Instr(arTmp(n),&quot;&lt;/section&gt;&quot;)-1)
250*b1cdbd2cSJim Jagielski				End If
251*b1cdbd2cSJim Jagielski				If Len(arTmp(n) &gt; 100) Then
252*b1cdbd2cSJim Jagielski					arTmp(n) = Left(arTmp(n),100)+&quot;...&quot;
253*b1cdbd2cSJim Jagielski				End If
254*b1cdbd2cSJim Jagielski				sDim = ubound(arSecs())
255*b1cdbd2cSJim Jagielski				arSecs(sDim) = sId+&quot;: &quot;+arTmp(n)
256*b1cdbd2cSJim Jagielski				sDim = ubound(arSecs())+1
257*b1cdbd2cSJim Jagielski				ReDim Preserve arSecs(sDim)
258*b1cdbd2cSJim Jagielski			End If
259*b1cdbd2cSJim Jagielski		Next n
260*b1cdbd2cSJim Jagielski
261*b1cdbd2cSJim Jagielski		arTmp() = split(sContent,&quot;&lt;variable&quot;)
262*b1cdbd2cSJim Jagielski		For n=1 to ubound(arTmp())
263*b1cdbd2cSJim Jagielski			If arTmp(n) &lt;&gt; &quot;&quot; Then
264*b1cdbd2cSJim Jagielski				arTmp(n) = Right(arTmp(n),Len(arTmp(n))-Instr(arTmp(n),&quot;id=&quot;)-3)
265*b1cdbd2cSJim Jagielski				sId = Left(arTmp(n),Instr(arTmp(n),&quot;&quot;&quot;&quot;)-1)
266*b1cdbd2cSJim Jagielski				arTmp(n) = Right(arTmp(n),Len(arTmp(n))-Instr(arTmp(n),&quot;&gt;&quot;))
267*b1cdbd2cSJim Jagielski				arTmp(n) = Left(arTmp(n),Instr(arTmp(n),&quot;&lt;/variable&gt;&quot;)-1)
268*b1cdbd2cSJim Jagielski				If Len(arTmp(n) &gt; 100) Then
269*b1cdbd2cSJim Jagielski					arTmp(n) = Left(arTmp(n),100)+&quot;...&quot;
270*b1cdbd2cSJim Jagielski				End If
271*b1cdbd2cSJim Jagielski				sDim = ubound(arVars())
272*b1cdbd2cSJim Jagielski				arVars(sDim) = sId+&quot;: &quot;+arTmp(n)
273*b1cdbd2cSJim Jagielski				sDim = ubound(arVars())+1
274*b1cdbd2cSJim Jagielski				ReDim Preserve arVars(sDim)
275*b1cdbd2cSJim Jagielski			End If
276*b1cdbd2cSJim Jagielski		Next n
277*b1cdbd2cSJim Jagielski
278*b1cdbd2cSJim Jagielski		ShowSecs
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski		If oBrowseDialog.Execute() = 1 Then
281*b1cdbd2cSJim Jagielski			olbElements = oBrowseDialog.GetControl(&quot;lbElements&quot;)
282*b1cdbd2cSJim Jagielski			sSelected = olbElements.SelectedItem
283*b1cdbd2cSJim Jagielski			sSelected = Left(sSelected,Instr(sSelected,&quot;:&quot;)-1)
284*b1cdbd2cSJim Jagielski			oTxtID = oDialog.GetControl(&quot;txtID&quot;)
285*b1cdbd2cSJim Jagielski			oTxtID.Text = sSelected
286*b1cdbd2cSJim Jagielski		End If
287*b1cdbd2cSJim Jagielski	Else
288*b1cdbd2cSJim Jagielski		msgbox &quot;Cannot open &quot;+filename,48,&quot;Error&quot;
289*b1cdbd2cSJim Jagielski	End If
290*b1cdbd2cSJim JagielskiEnd Sub
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim JagielskiSub UpdateLIst
293*b1cdbd2cSJim Jagielski	oOpSections = oBrowseDialog.GetControl(&quot;opSections&quot;)
294*b1cdbd2cSJim Jagielski	oOpVariables = oBrowseDialog.GetControl(&quot;opVariables&quot;)
295*b1cdbd2cSJim Jagielski	oOpParas = oBrowseDialog.GetControl(&quot;opParas&quot;)
296*b1cdbd2cSJim Jagielski	If oOpSections.getState Then
297*b1cdbd2cSJim Jagielski		ShowSecs
298*b1cdbd2cSJim Jagielski	ElseIf oOpVariables.getState Then
299*b1cdbd2cSJim Jagielski		ShowVars
300*b1cdbd2cSJim Jagielski	ElseIf oOpParas.getState Then
301*b1cdbd2cSJim Jagielski		ShowParas
302*b1cdbd2cSJim Jagielski	End If
303*b1cdbd2cSJim JagielskiEnd Sub
304*b1cdbd2cSJim Jagielski
305*b1cdbd2cSJim JagielskiSub ShowSecs
306*b1cdbd2cSJim Jagielski	olbElements = oBrowseDialog.GetControl(&quot;lbElements&quot;)
307*b1cdbd2cSJim Jagielski	olbElements.RemoveItems(0,olbElements.ItemCount)
308*b1cdbd2cSJim Jagielski	olbElements.AddItems(arSecs(),ubound(arSecs()))
309*b1cdbd2cSJim Jagielski	oOpSection = oDialog.GetControl(&quot;opSection&quot;)
310*b1cdbd2cSJim Jagielski	oOpSection.setState(TRUE)
311*b1cdbd2cSJim Jagielski	SetLabel
312*b1cdbd2cSJim JagielskiEnd Sub
313*b1cdbd2cSJim Jagielski
314*b1cdbd2cSJim JagielskiSub ShowVars
315*b1cdbd2cSJim Jagielski	olbElements = oBrowseDialog.GetControl(&quot;lbElements&quot;)
316*b1cdbd2cSJim Jagielski	olbElements.RemoveItems(0,olbElements.ItemCount)
317*b1cdbd2cSJim Jagielski	olbElements.AddItems(arVars(),ubound(arVars()))
318*b1cdbd2cSJim Jagielski	oOpVariable = oDialog.GetControl(&quot;opVariable&quot;)
319*b1cdbd2cSJim Jagielski	oOpVariable.setState(TRUE)
320*b1cdbd2cSJim Jagielski	SetLabel
321*b1cdbd2cSJim JagielskiEnd Sub
322*b1cdbd2cSJim Jagielski
323*b1cdbd2cSJim JagielskiSub ShowParas
324*b1cdbd2cSJim Jagielski	olbElements = oBrowseDialog.GetControl(&quot;lbElements&quot;)
325*b1cdbd2cSJim Jagielski	olbElements.RemoveItems(0,olbElements.ItemCount)
326*b1cdbd2cSJim Jagielski	olbElements.AddItems(arParas(),ubound(arParas()))
327*b1cdbd2cSJim Jagielski	oOpVariable = oDialog.GetControl(&quot;opSection&quot;)
328*b1cdbd2cSJim Jagielski	oOpVariable.setState(TRUE)
329*b1cdbd2cSJim Jagielski	SetLabel
330*b1cdbd2cSJim JagielskiEnd Sub
331*b1cdbd2cSJim Jagielski
332*b1cdbd2cSJim JagielskiSub CheckButton
333*b1cdbd2cSJim Jagielski	olbElements = oBrowseDialog.GetControl(&quot;lbElements&quot;)
334*b1cdbd2cSJim Jagielski	obutSelect = oBrowseDialog.GetControl(&quot;butSelect&quot;)
335*b1cdbd2cSJim Jagielski	sSelected = olbElements.SelectedItem
336*b1cdbd2cSJim Jagielski	If sSelected = &quot;&quot; Then
337*b1cdbd2cSJim Jagielski		oButSelect.enable = false
338*b1cdbd2cSJim Jagielski	Else
339*b1cdbd2cSJim Jagielski		oButSelect.enable = true
340*b1cdbd2cSJim Jagielski	End If
341*b1cdbd2cSJim JagielskiEnd Sub
342*b1cdbd2cSJim Jagielski
343*b1cdbd2cSJim Jagielski
344*b1cdbd2cSJim JagielskiFunction IsSubDir(D as String, R as String)
345*b1cdbd2cSJim Jagielski	 IsSubDir = (Left(D,Len(R)) = R)
346*b1cdbd2cSJim JagielskiEnd Function
347*b1cdbd2cSJim Jagielski</script:module>
348