/3.2 (Extension.1 Name: "AV-p.mapper" FirstRootClassName: "List" Roots: 2 Roots: 3 Roots: 49 Roots: 66 Roots: 102 Roots: 103 Roots: 104 Roots: 105 Roots: 106 Roots: 107 Roots: 108 Roots: 109 Roots: 110 Roots: 111 Roots: 112 Roots: 113 Roots: 114 Roots: 115 Roots: 116 Roots: 117 Roots: 118 Roots: 119 Roots: 120 Version: 32 About: "AV-p.mapper is a utility for creating map files for p.mapper application." InstallScript: 121 UninstallScript: 122 ExtVersion: 1 ) (List.2 ) (List.3 Child: 4 ) (AVDLog.4 Name: "avmscfg.mapDlg" X: 26 Y: 55 W: 496 H: 418 ConstrainedControlNames: 5 ConstrainedControlNames: 6 ConstrainedControlNames: 7 ConstrainedControlNames: 8 ConstrainedControlNames: 9 ConstrainedControlNames: 10 ConstrainedControlNames: 11 ConstrainedControlNames: 12 Constraints: 13 Constraints: 14 Constraints: 15 Constraints: 16 Constraints: 17 Constraints: 18 Constraints: 19 Constraints: 20 Server: 21 ControlPanel: 22 Title: "MapFile Creator" EscapeEnabled: 1 Modal: 1 Resizable: 1 AlwaysOnTop: 1 HasTitleBar: 1 Closeable: 1 DefaultButton: 48 ) (AVStr.5 S: "but_map" ) (AVStr.6 S: "but_web" ) (AVStr.7 S: "but_ref" ) (AVStr.8 S: "but_sbar" ) (AVStr.9 S: "but_save" ) (AVStr.10 S: "but_clear" ) (AVStr.11 S: "but_writemap" ) (AVStr.12 S: "but_testmap" ) (Numb.13 N: 85.00000000000000 ) (Numb.14 N: 85.00000000000000 ) (Numb.15 N: 85.00000000000000 ) (Numb.16 N: 85.00000000000000 ) (Numb.17 N: 101.00000000000000 ) (Numb.18 N: 86.00000000000000 ) (Numb.19 N: 102.00000000000000 ) (Numb.20 N: 102.00000000000000 ) (Nil.21 ) (CPanel.22 Child: 23 Child: 24 Child: 25 Child: 26 Child: 27 Child: 28 Child: 29 Child: 30 Child: 32 Child: 33 Child: 34 Child: 35 ResBox: 36 ResBox: 37 ResBox: 38 ResBox: 39 ResBox: 40 ResBox: 41 ResBox: 42 ResBox: 43 ResBox: 44 ResBox: 45 ResBox: 46 ResBox: 47 Listening: 1 ) (LButn.23 InternalName: "but_map" Tag: "1" Label: "MAP" Click: "avmscfg.mDlg.ShowParams" ) (LButn.24 InternalName: "but_web" Tag: "2" Label: "WEB" Click: "avmscfg.mDlg.ShowParams" ) (LButn.25 InternalName: "but_ref" Tag: "3" Label: "REFERENCE" Click: "avmscfg.mDlg.ShowParams" ) (LButn.26 InternalName: "but_sbar" Tag: "4" Label: "SCALEBAR" Click: "avmscfg.mDlg.ShowParams" ) (TextBox.27 InternalName: "tbx_params" Listening: 1 Constraints: 0x33 Changed: "avmscfg.SaveEnableBut" VerticalScroll: 1 HorizontalScroll: 1 NextControl: 21 ) (LButn.28 InternalName: "but_save" Disabled: 1 Label: "Save" Click: "avmscfg.SaveParams" ) (LButn.29 InternalName: "but_clear" Label: "Clear" Click: "avmscfg.mDlg.ClearBut" ) (AVLBox.30 InternalName: "lbx_layers" NextControl: 21 ContentKind: 4 Constraints: 0x35 ColumnCount: 1 HorizontalScroll: 1 Listening: 1 VerticalScroll: 1 SelectionStyle: 31 Apply: "avmscfg.mDlg.ShowThmParams" ) (AVEnum.31 Name: "LISTBOX_SELECTION_MULTIRANGE" ) (LButn.32 InternalName: "but_writemap" Tag: "write" Label: "Write Map File" Click: "avmscfg.WriteMapFile" ) (TextLabel.33 InternalName: "txt_layers" Constraints: 0x55 Label: "Layers/Themes" Listening: 1 ) (TextLabel.34 InternalName: "txt_params" Constraints: 0x55 Label: "Parameters" Listening: 1 ) (LButn.35 InternalName: "but_testmap" Tag: "test" Label: "Test Map File" Click: "avmscfg.WriteMapFile" ) (RectD.36 Left: 16.00000000000000 Top: 52.00000000000000 Right: 135.00000000000000 Bottom: 29.00000000000000 ) (RectD.37 Left: 16.00000000000000 Top: 84.00000000000000 Right: 135.00000000000000 Bottom: 61.00000000000000 ) (RectD.38 Left: 16.00000000000000 Top: 117.00000000000000 Right: 135.00000000000000 Bottom: 94.00000000000000 ) (RectD.39 Left: 16.00000000000000 Top: 149.00000000000000 Right: 135.00000000000000 Bottom: 126.00000000000000 ) (RectD.40 Left: 171.00000000000000 Top: 379.00000000000000 Right: 488.00000000000000 Bottom: 24.00000000000000 ) (RectD.41 Left: 170.00000000000000 Top: 410.00000000000000 Right: 228.00000000000000 Bottom: 388.00000000000000 ) (RectD.42 Left: 430.00000000000000 Top: 25.00000000000000 Right: 486.00000000000000 Bottom: 6.00000000000000 ) (RectD.43 Left: 8.00000000000000 Top: 410.00000000000000 Right: 158.00000000000000 Bottom: 176.00000000000000 ) (RectD.44 Left: 395.00000000000000 Top: 410.00000000000000 Right: 485.00000000000000 Bottom: 388.00000000000000 ) (RectD.45 Left: 10.00000000000000 Top: 178.00000000000000 Right: 128.00000000000000 Bottom: 159.00000000000000 ) (RectD.46 Left: 172.00000000000000 Top: 33.00000000000000 Right: 459.00000000000000 Bottom: 9.00000000000000 ) (RectD.47 Left: 284.00000000000000 Top: 410.00000000000000 Right: 374.00000000000000 Bottom: 388.00000000000000 ) (Nil.48 ) (List.49 Child: 50 Child: 58 ) (List.50 Child: 51 Child: 55 Child: 57 ) (List.51 Child: 52 Child: 53 Child: 54 ) (AVStr.52 S: "View" ) (AVStr.53 S: "ButtonBar" ) (AVStr.54 S: "avmscfg.mDlg.Open" ) (Butn.55 Help: "Open MapFile Creator//Open MapFile Creator" Icon: 56 Click: "avmscfg.mDlg.Open" ) (AVIcon.56 Name: "M" Res: "Icons.M" ) (Numb.57 N: 22.00000000000000 ) (List.58 Child: 59 Child: 63 Child: 65 ) (List.59 Child: 60 Child: 61 Child: 62 ) (AVStr.60 S: "Table" ) (AVStr.61 S: "ButtonBar" ) (AVStr.62 S: "avmscfg.ImgCat2TileShape" ) (Butn.63 Help: "Convert ImageCatalog to TileShape//Convert ImageCatalog to TileShape" Icon: 64 Click: "avmscfg.ImgCat2TileShape" ) (AVIcon.64 Name: "RandomColor" Res: "Icons.RandomColor" ) (Numb.65 N: 25.00000000000000 ) (List.66 Child: 67 Child: 74 Child: 81 Child: 88 Child: 95 ) (List.67 Child: 68 Child: 72 Child: 73 ) (List.68 Child: 69 Child: 70 Child: 71 ) (AVStr.69 S: "View" ) (AVStr.70 S: "p.mapper" ) (AVStr.71 S: "avmscfg.mDlg.Open" ) (Choice.72 Label: "MapFile Creator" Click: "avmscfg.mDlg.Open" Shortcut: "Keys.None" ) (Numb.73 ) (List.74 Child: 75 Child: 79 Child: 80 ) (List.75 Child: 76 Child: 77 Child: 78 ) (AVStr.76 S: "View" ) (AVStr.77 S: "p.mapper" ) (AVStr.78 S: "avmscfg.BaseConfig" ) (Choice.79 Label: "Base Configuration" Click: "avmscfg.BaseConfig" Shortcut: "Keys.None" ) (Numb.80 N: 1.00000000000000 ) (List.81 Child: 82 Child: 86 Child: 87 ) (List.82 Child: 83 Child: 84 Child: 85 ) (AVStr.83 S: "View" ) (AVStr.84 S: "p.mapper" ) (AVStr.85 S: "avmscfg.ReConfig.Themes" ) (Choice.86 Label: "Re-Configure Theme" Click: "avmscfg.ReConfig.Themes" Shortcut: "Keys.None" ) (Numb.87 N: 2.00000000000000 ) (List.88 Child: 89 Child: 93 Child: 94 ) (List.89 Child: 90 Child: 91 Child: 92 ) (AVStr.90 S: "View" ) (AVStr.91 S: "p.mapper" ) (AVStr.92 S: "avmscfg.EditIni" ) (Choice.93 Label: "Edit INI File" Click: "avmscfg.EditIni" Shortcut: "Keys.None" ) (Numb.94 N: 3.00000000000000 ) (List.95 Child: 96 Child: 100 Child: 101 ) (List.96 Child: 97 Child: 98 Child: 99 ) (AVStr.97 S: "View" ) (AVStr.98 S: "p.mapper" ) (AVStr.99 S: "avmscfg.TileIndexShape" ) (Choice.100 Label: "Create Tile Shape" Click: "avmscfg.TileIndexShape" Shortcut: "Keys.None" ) (Numb.101 N: 4.00000000000000 ) (List.102 ) (Script.103 Name: "avmscfg.BaseConfig.ReturnThmProp" SourceCode: "\n''\n'' RETURNS THEME/LAYER PROPERTIES\n'' Is called from script \"avmscfg.BaseConfig\"\n''\n\n\n'v = av.GetActiveDoc\n't = v.GetActiveThemes.Get(0)\n\nt = self\ntheLegend = t.GetLegend\n\nlayType = \"type???\"\nif (t.Is(FTheme)) then\n tType = \"f\"\n if (t.GetFTab.GetSrcName.GetSubName = \"Point\") then\n layType = \"point\" \n elseif (t.GetFTab.GetSrcName.GetSubName = \"Arc\") then\n layType = \"line\" \n elseif (t.GetFTab.GetSrcName.GetSubName = \"Polygon\") then\n layType = \"polygon\"\n end \nelseif (t.Is(ITheme)) then\n t Type = \"i\"\n layType = \"raster\"\nend \n\n\nbn = t.getSrcName.getFilename.GetBaseName\nlayData = bn.Substitute(\".shp\", \"\")\n\n'msgBox.info(layData,\"\")\nlayDescr = t.GetName\n\nlayStr = \"\"\nlayStr = layStr + \"#\" + nl\nlayStr = layStr + \"# Start of Layer \"+ layDescr + nl\nlayStr = layStr + \"#\" + nl\n\nlayStr = layStr + \"LAYER\" + nl\nlayStr = layStr + \" NAME \" + layData.Quote + nl\nlayStr = layStr + \" TYPE \" + layType + nl\nlayStr = layStr + \" DATA \" + layData.Quote + nl\n\n\n' MIN/MAXSCALE\nthmThreshold = t.GetThreshold \nif (th mThreshold <> nil) then\n if (thmThreshold.IsMaximumOn) then\n layStr = layStr + \" MAXSCALE \" + thmThreshold.GetMaximum.AsString + nl\n end \n if (thmThreshold.IsMinimumOn) then\n layStr = layStr + \" MINSCALE \" + thmThreshold.GetMinimum.AsString + nl\n end\nend\n\n' SYMBOL SCALED TO REF SCALE\nif (theLegend.IsScaled) then\n refScale = theLegend.GetRefScale.SetFormat(\"d\")\n layStr = layStr + \" SYMBOLSCALE \" + refScale.AsString + nl\nend \n\n\n' METADATA SECTION\n'------------------\nlayStr = layStr + \" MET ADATA \" + nl\nlayStr = layStr + \" \"\"DESCRIPTION\"\" \" + layDescr.Quote + nl\n\n\n'# FIELD NAMES FOR FEATURE THEMES\nif (tType = \"f\") then\n FieldList = t.GetFTab.GetFields \n fld0 = \"\"\n for each f in FieldList\n if (f.IsTypeShape.Not) then \n fld0 = fld0 + f.GetName + \",\"\n end\n end\n fldStr = fld0.left(fld0.Count -1).Quote\n\n layStr = layStr + \" \"\"RESULT_FIELDS\"\" \" + fldStr.Ucase + nl\n layStr = layStr + \" \"\"RESULT_HEADERS\"\" \" + fldStr + nl\nend\n\nlayStr = layStr + \" END # Metadata \" + nl \n\n\nif (t.getlabelfield.asstring <> \"\") then\n if (t.getgraphics.count >0) then\n layStr = layStr + \"LABELITEM \" + t.getLabelField.asString.Quote + nl\n end\nend\n\n\n\n'----------------------------\n' CLASSES FOR FEATURE THEMES\n'----------------------------\n\nif (tType = \"f\") then\n\n 'msgBox.Info(t.GetLegend.GetLegendType.asString, \"\")\n\n '# SINGLE SYMBOL\n '----------------\n if (t.GetLegend.GetLegendType.asString = \"LEGEND_TYPE_SIMPLE\") then \n\n lstSymbols = t.GetLegend.GetSymbols\n theSymbol = lstSymbols. get(0)\n\n theColor = theSymbol.GetColor\n lstRGB = theColor.GetRGBList\n fgRGB = lstRGB.get(0).asstring +\" \"+ lstRGB.get(1).asstring +\" \"+ lstRGB.get(2).asstring\n\n\n layStr = layStr + \" CLASS\" + nl\n layStr = layStr + \" Name '\" + t.getname + \"'\" + nl\n layStr = layStr + \" COLOR \" + fgRGB + nl\n\n\n if (layType = \"polygon\") then \n if (theSymbol.IsOutlined) then\n outlColor = theSymbol.GetOlColor \n lstRGB = outlColor.GetRGBList\n outlRGB = lstRGB.get(0).asstring +\" \" + lstRGB.get(1).asstring +\" \"+ lstRGB.get(2).asstring\n layStr = layStr + \" OUTLINECOLOR \" + outlRGB + nl\n end\n elseif ((layType = \"point\") or (layType = \"line\")) then \n symSize = theSymbol.GetSize.Round\n if (symSize = 0) then \n symSize = 1 \n end\n layStr = layStr + \" SYMBOL 'circle' \" + nl\n layStr = layStr + \" SIZE \" + symSize.AsString + nl \n end\n\n layStr = layStr + \" TEMPLATE void\" + nl\n layStr = layStr + \" END # Class\" + nl\n\n\n\n '# UNI QUE VALUE\n '---------------\n elseif (t.GetLegend.GetLegendType.asString = \"LEGEND_TYPE_UNIQUE\") then \n\n lstSymbols = t.GetLegend.GetSymbols\n theclasses = t.GetLegend.getClassifications\n classIndex = 0\n classFldName = t.getlegend.getFieldNames.get(0)\n\n layStr = layStr + \" CLASSITEM \" + classFldName + nl\n\n for each theSymbol in lstSymbols\n theColor = theSymbol.GetColor\n\n if (theColor.isTransparent.not) then \n lstRGB = theColor.GetRGBList\n fgRGB = lstRGB.get(0).ass tring +\" \"+ lstRGB.get(1).asstring +\" \"+ lstRGB.get(2).asstring\n\n theId = theClasses.get(classIndex).ReturnMaximum.AsString\n clsName = theClasses.get(classIndex).getLabel\n\n layStr = layStr + \" CLASS\" + nl\n layStr = layStr + \" NAME \" + clsName.Quote + nl\n layStr = layStr + \" EXPRESSION \" + theId.Quote + nl\n layStr = layStr + \" COLOR \" + fgRGB + nl\n\n if (layType = \"polygon\") then\n if (theSymbol.IsOutlined) then\n outlColor = theSym bol.GetOlColor\n lstRGB = outlColor.GetRGBList\n outlRGB = lstRGB.get(0).asstring +\" \"+ lstRGB.get(1).asstring +\" \"+ lstRGB.get(2).asstring\n\n layStr = layStr + \" OUTLINECOLOR \" + outlRGB + nl \n end\n end\n \n \n \n\n layStr = layStr + \" TEMPLATE void\" + nl\n layStr = layStr + \" END # Class\" + nl \n\n classindex = classindex + 1 \n end\n end\n\n\n '# GRADUATED COLORS VALUE\n '-------------------------\n elsei f (t.GetLegend.GetLegendType.asString = \"LEGEND_TYPE_COLOR\") then \n\n lstSymbols = t.GetLegend.GetSymbols\n theclasses = t.GetLegend.getClassifications\n classIndex = 0\n\n classFldName = t.getLegend.getFieldNames.get(0)\n classFld = t.GetFTab.FindField(classFldName)\n\n for each theSymbol in lstSymbols\n theColor = theSymbol.GetColor\n\n if (theColor.isTransparent.not) then \n lstRGB = theColor.GetRGBList\n fgRGB = lstRGB.get(0).asString +\" \"+ lstRGB.get(1).asstring +\" \"+ lstR GB.get(2).asstring\n\n clsName = theClasses.get(classIndex).getLabel\n\n\n '# CLASS EXPRESSION\n valPrecision = t.GetLegend.GetPrecision \n if (valPrecision < 0) then\n numFormat = \"d.\"\n for each n in 1..valPrecision.Abs \n numFormat = numFormat + \"d\"\n end \n else\n numFormat = \"d\"\n end\n\n 'msgBox.Info(valPrecision.AsString,\"\")\n\n minValStr = theClasses.get(classIndex).ReturnMinimum.SetFormat(numFormat).AsString\n maxValStr = theClasses.get(classIndex).ReturnMaximum.SetFormat(numFormat).AsString\n\n\n clsExpr = \"([\" + classFldName.Ucase + \"]>\" + minValStr + \" AND [\" + classFldName.Ucase + \"]<=\" + maxValStr +\")\" \n\n\n layStr = layStr + \" CLASS\" + nl\n layStr = layStr + \" NAME \" + clsName.Quote + nl\n layStr = layStr + \" EXPRESSION \" + clsExpr + nl\n layStr = layStr + \" COLOR \" + fgRGB + nl\n\n if (layType = \"polygon\") then\n if (theSymbol.IsOutlined) then\n outlColor = theSymbol.GetOlColor\n lstRGB = outlColor.GetRGBList\n outlRGB = lstRGB.get(0).asstring +\" \"+ lstRGB.get(1).asstring +\" \"+ lstRGB.get(2).asstring\n\n layStr = layStr + \" OUTLINECOLOR \" + outlRGB + nl \n end\n end\n\n layStr = layStr + \" TEMPLATE void\" + nl\n layStr = layStr + \" END # Class\" + nl\n\n classindex = classindex + 1 \n end\n end\n\n \n '# Graduated Symbol Legend\n '--------------------------\n e lseif (t.GetLegend.GetLegendType.asString = \"LEGEND_TYPE_SYMBOL\") then \n\n lstSymbols = t.GetLegend.GetSymbols\n theclasses = t.GetLegend.getClassifications\n classIndex = 0\n\n classFldName = t.getLegend.getFieldNames.get(0)\n classFld = t.GetFTab.FindField(classFldName)\n\n for each theSymbol in lstSymbols\n 'msgBox.Info(lstSymbols.Count.AsString, \"\")\n theColor = theSymbol.GetColor\n\n if (theColor.isTransparent.not) then \n lstRGB = theColor.GetRGBList\n fgRGB = lstRGB. get(0).asString +\" \"+ lstRGB.get(1).asstring +\" \"+ lstRGB.get(2).asstring\n\n clsName = theClasses.get(classIndex).getLabel\n\n\n '# CLASS EXPRESSION\n valPrecision = t.GetLegend.GetPrecision \n if (valPrecision < 0) then\n numFormat = \"d.\"\n for each n in 1..valPrecision.Abs \n numFormat = numFormat + \"d\"\n end \n else\n numFormat = \"d\"\n end\n\n symSize = theSymbol.GetSize.Round\n\n 'msgBox.Info(valPrecision.AsString,\"\")\n \n minValStr = theClasses.get(classIndex).ReturnMinimum.SetFormat(numFormat).AsString\n maxValStr = theClasses.get(classIndex).ReturnMaximum.SetFormat(numFormat).AsString\n\n if (minValStr = minValStr) then\n clsExpr = \"([\" + classFldName.Ucase + \"] = \" + minValStr +\")\"\n else\n clsExpr = \"([\" + classFldName.Ucase + \"]>\" + minValStr + \" AND [\" + classFldName.Ucase + \"]<=\" + maxValStr +\")\" \n end\n\n layStr = layStr + \" CLASS\" + nl\n layStr = layStr + \" NAME \" + clsName.Quote + nl\n layStr = layStr + \" EXPRESSION \" + clsExpr + nl\n layStr = layStr + \" COLOR \" + fgRGB + nl\n layStr = layStr + \" SYMBOL 'circle' \" + nl\n layStr = layStr + \" SIZE \" + symSize.AsString + nl\n\n\n\n layStr = layStr + \" TEMPLATE void\" + nl\n layStr = layStr + \" END # Class\" + nl\n\n classindex = classindex + 1 \n end\n end\n \n end\n \n\nend ' for feature themes \n\nlayStr = layStr + \"END # Layer\" + nl + nl\n\n\n''msgBox.Report(layStr,\"\")\n\nlayConfig = {\"avmscfg\", bn, layStr}\n\n\nreturn layConfig\n\n\n\n" ) (Script.104 Name: "avmscfg.CheckThemeOTag" SourceCode: "\n'' avmscfg.CheckThemeOTag\n'' Checks if theme has assigned ObjectTag\n''\n\n't = av.GetActiveDoc\nt = self\n\n\nviewOTag = t.GetObjectTag\n\nif (viewOTag = nil) then\n return false\nelse\n if (viewOTag.Is(List).Not) then\n return false\n else \n if (viewOTag.Get(0) <> \"avmscfg\") then\n return false\n else\n return true\n end\n end \nend" ) (Script.105 Name: "avmscfg.CheckViewOTag" SourceCode: "\n'' avmscfg.CheckViewOTag\n'' Checks if current view has extension object tag assigned to\n''\n\n'v = av.GetActiveDoc\nv = self\n\n\nviewOTag = v.GetObjectTag\n\nif (viewOTag = nil) then\n return false\nelse\n if (viewOTag.Is(List).Not) then\n return false\n else \n if (viewOTag.Get(0) <> \"avmscfg\") then\n return false\n else\n return true\n end\n end \nend" ) (Script.106 Name: "avmscfg.ReadIni" SourceCode: "\n'====================================\n' READ INI FILE AND RETURN KEY VALUE\n'-----------------------------------\n' Armin Burger\n'====================================\n\n'-------------------------\n' INITIALIZE KERNEL32.DLL\n'-------------------------\nkernel32 = DLL.Make(FileName.FindInSystemSearchPath(\"kernel32.dll\"))\nif (kernel32 = nil) then\n msgBox.Error(\"Cannot find file kernel32.dll\",\"\")\n exit\nend \n\n\n'--------------------------------------\n' GET INPUT PARAMETERS AND GET INI KEY\n'------------------------- -------------\n\nhomeVar = system.getEnvVar(\"AVHOME\")\niniFile = homeVar + \"\\etc\\avpmapper.ini\"\nif (iniFile.AsFileName.IsFile.Not) then\n msgBox.Error(\"Config file avpgcon.ini not in directory ..\\ARCVIEW\\ETC\", \"INI File Not Found\")\n return nil\nend \n\n\n\niniSection = self.Get(0)\niniKey = self.Get(1)\n\nkeyValue = String.MakeBuffer(100)\n\niniFName = Filename.Make(iniFile) '' CHECK FOR INI FILE\nif (File.Exists(iniFName)=FALSE) then\n msgBox.Error(\"INI file \" + nl+ iniFName.AsString + nl + \"not found. Te rminating\",\"\")\n exit\nend \n\nReadIni = DLLProc.Make(kernel32, \"GetPrivateProfileStringA\", \n #DLLPROC_TYPE_INT32, {#DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_INT32, #DLLPROC_TYPE_STR})\n'' returnMsg SECTION [..] Key \"\" EmptyInValueStr Count(EmptyInValueStr) ini-FileName\n\niniReadVal = ReadIni.Call({iniSection, iniKey, \"\", keyValue, keyValue.Count, iniFName.AsString}) \n\nif (iniReadVal <= 0) then\n msgBox.Error(\"Section = \" + iniSection + \" or Key = \" + iniKey + \" not found in .INI file\" + nl+ iniFile, \"\")\n exit \nend\n\nkeyValue = keyValue.Substitute(\"*null*\",\"\")\nreturn keyValue\n" ) (Script.107 Name: "avmscfg.WriteIni" SourceCode: "'====================================\n' WRITE NEW KEY TO INI FILE \n'====================================\n\n' takes input \n' * iniFile as path to .INI file\n' * iniSection as SECTION [...]\n' * iniKey as Key\n' * newKeyVal as the new Key\n\n' outputs\n' * TRUE if successfull\n\n' SYNTAX\n' retMsg = av.run(\"WriteIni\",{iniFile, iniSection, iniKey, newKeyVal}) ''=> BOOLEAN\n\n'=====================================\n\n'-------------------------\n' INITIALIZE KERNEL32.DLL\n'-------------------------\nker nel32 = DLL.Make(FileName.FindInSystemSearchPath(\"kernel32.dll\"))\nif (kernel32 = nil) then\n msgBox.Error(\"Cannot find file kernel32.dll\",\"\")\n exit\nend \n\n\n'--------------------------------------\n' GET INPUT PARAMETERS AND GET INI KEY\n'--------------------------------------\n\niniFile = self.Get(0)\niniSection = self.Get(1)\niniKey = self.Get(2)\nnewKeyVal = self.Get(3)\n\niniFName = Filename.Make(iniFile) '' CHECK FOR INI FILE\nif (File.Exists(iniFName)=FALSE) then\n msgBox.Error(\"INI file \" + n l+ iniFName.AsString + nl + \"not found. Terminating\",\"\")\n exit\nend \n\nWriteini = DLLProc.Make(kernel32, \"WritePrivateProfileStringA\", \n #DLLPROC_TYPE_INT32, {#DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR, #DLLPROC_TYPE_STR})\n'' returnMsg SECTION [..] Key newKeyValue ini-FileName \n\niniWriteVal = WriteIni.Call({iniSection, iniKey, newKeyVal, iniFName.AsString})\n\nif (iniWriteVal <= 0) then\n return FALSE\nelse\n return TRUE \nend\n\n" ) (Script.108 Name: "avmscfg.Map2Browser" SourceCode: "\n'-----------------------------------------------------------\n' NOW CALL DEFAULT BROWSER AND OPEN QUERY RESULT HTML FILE\n' © for this part by Juna Papajorgji, University of Florida\n'-----------------------------------------------------------\n\nmapURL = self\n\n\n'Setup DLL file objects.\n'-------------------------------------------------------------\nif (System.GetOSVariant = #SYSTEM_OSVARIANT_MSWNT) then\n dllShell32 = DLL.Make(FileName.FindInSystemSearchPath(\"shell32.dll\"))\n dllUser32 = DLL.Make(FileName.FindI nSystemSearchPath(\"user32.dll\"))\nElseIf (System.GetOSvariant = #SYSTEM_OSVARIANT_MSW95) then\n dllShell32 = DLL.Make(FileName.FindInSystemSearchPath(\"shell32.dll\"))\n dllUser32 = DLL.Make(FileName.FindInSystemSearchPath(\"user32.dll\"))\nElse\n MsgBox.Warning(\"Required DLL files cannot be found\"+NL+\"Check that the SYSTEM folder is in your path.\", \"Stop, is this a Windoze machine?\")\n return nil\nEnd\n\n'Setup Win32API functions as Avenue DLLProc objects\ndpGetActivewindow = DLLProc.Make(dllUser32, \"GetActiveWindow \",\n #DLLPROC_TYPE_INT32, 'return value type\n {}) 'argument list\n\ndpShellExecute = DLLProc.Make(dllShell32, \"ShellExecuteA\",\n #DLLPROC_TYPE_INT32, 'return value type\n {#DLLPROC_TYPE_INT32, 'argument list\n #DLLPROC_TYPE_STR,\n #DLLPROC_TYPE_STR,\n #DLLPROC_TYPE_STR,\n #DLLPROC_TYPE_STR,\n #DLLPROC_TYPE_INT32})\n\n\n'Get the Window Handle (hWnd) of the ArcView window\n'---------------------------------------------------\nhWnd_active = dpGetActivewindow.Call({})\n'''or-> hWnd_active = DLL.GetAVWindowHandle\n\n\n'Send the URL to the default browser\n'-------------------------------------------\nretvalue = dpShellExecute.Call({hWnd_active, \"Open\", mapURL, \"\", FileName.GetCWD.AsString, 1})\n\n\n'Let the user know if the link failed. The \"ShellExecuteA \"\n'function returns an integer greater than 32 if the process succeeded.\n'---------------------------------------------------------------------\nif (retvalue <=32) then \n MsgBox.Warning (\"Loading map failed.\",\"Server error\")\nEnd\n\n" ) (Script.109 Name: "avmscfg.mDlg.ClearBut" SourceCode: "\n' avmscfg.mDlg.ClearBut\n\nmapDlg = av.FindDialog(\"avmscfg.mapDlg\")\n\nparamTxtBox = mapDlg.FindByName(\"tbx_params\")\nparamTxtBox.Empty\n\nparamTxtLabl = mapDlg.FindByName(\"txt_params\")\nparamTxtLabl.SetLabel(\"Parameters\")\n\n\n\n" ) (Script.110 Name: "avmscfg.mDlg.ShowParams" SourceCode: "\n' SHOW PARAMETERS READ FROM VIEW OBJECT TAG FOR\n' MAP, WEB, REFERENCE, SCALEBAR\n\ntheView = _avmscfg_theView\nviewOTag = theView.GetObjectTag\n\n\nmapDlg = av.FindDialog(\"avmscfg.mapDlg\")\n\nparamTxtBox = mapDlg.FindByName(\"tbx_params\")\nparamTxtLabl = mapDlg.FindByName(\"txt_params\")\n\n\nidx = self.GetTag.AsNumber\n\nelemOTag = viewOTag.Get(idx)\nelemName = elemOTag.Get(0)\nloadStr = elemOTag.Get(1)\n\n_avmscfg_LoadedTag = {\"view\", idx, elemName}\n\nparamTxtLabl.SetLabel(\"Parameters for \" + elemName)\nparamTxtBox.SetText(loa dStr)\n\nmapDlg.FindByName(\"but_save\").SetEnabled(FALSE)\n\n\n\n\n\n\n" ) (Script.111 Name: "avmscfg.mDlg.ShowThmParams" SourceCode: "\n'' \n'' SHOW PARAMETERS FOR SELECTED THEME/LAYER\n'' Read from theme object tag\n''\n\n\ntheView = _avmscfg_theView\n\nmapDlg = av.FindDialog(\"avmscfg.mapDlg\")\nparamTxtBox = mapDlg.FindByName(\"tbx_params\")\nparamTxtLabl = mapDlg.FindByName(\"txt_params\")\nlayerLBox = mapDlg.FindByName(\"lbx_layers\")\n\nlayIdx = layerLBox.GetCurrentRow\ntheLayer = layerLBox.GetSelection.Get(0) \nloadStr = theLayer.GetObjectTag.Get(2)\n\n_avmscfg_LoadedTag = {\"theme\", layIdx}\n\nparamTxtBox.SetText(loadStr)\nparamTxtLabl.SetLabel(\"Parameters for layer/theme \" + theLayer.GetName.Quote)\n\nmapDlg.FindByName(\"but_save\").SetEnabled(FALSE)" ) (Script.112 Name: "avmscfg.SaveEnableBut" SourceCode: "\n' CHANGE SCRIPT FOR TEXT BOX\n' is called when user modifies text and thus enables \"Save\" button\n\nmapDlg = av.FindDialog(\"avmscfg.mapDlg\")\nmapDlg.FindByName(\"but_save\").SetEnabled(TRUE)" ) (Script.113 Name: "avmscfg.SaveParams" SourceCode: "\n''\n'' SAVE PARAMETERS MODIFIED BY USER BACK TO OBJECT TAGS\n''\n\ntheView = _avmscfg_theView\nmapDlg = av.FindDialog(\"avmscfg.mapDlg\")\nparamTxtBox = mapDlg.FindByName(\"tbx_params\")\n\nif (paramTxtBox.IsEmpty.Not) then\n\n paramList = _avmscfg_LoadedTag\n pObj = paramList.Get(0)\n objIdx = paramList.Get(1) \n ''msgBox.Info(objIdx.AsString,\"\")\n\n '# CHANGE PARAMETERS FOR MAP, WEB, REF, SBAR\n if (pObj = \"view\") then\n\n viewOTag = theView.GetObjectTag\n elemParams = viewOTag.Get(objIdx) \n\n elemParams.Set(1, paramTxtBox.GetText)\n viewOTag.Set(objIdx, elemParams) \n\n '# CHANGE PARAMETERS FOR LAYERS\n else\n theLayers = theView.GetThemes\n curLayer = theLayers.Get(objIdx)\n layOTag = curLayer.GetObjectTag\n layOTag.Set(2, paramTxtBox.GetText)\n\n end\n\n\n self.SetEnabled(FALSE)\n\n\nend " ) (Script.114 Name: "avmscfg.WriteMapFile" SourceCode: "\n'' WRITE VIEW AND THEME PARAMS TO MAP FILE\n'' avmscfg.WriteMapFile\n\n\nmapFileType = self.GetTag\n\n\n\ntheView = _avmscfg_theView\nviewOTag = theView.GetObjectTag\n\n'------------------------\n' MAP FILE HEADER PARAMS\n'------------------------\nmapStr = viewOTag.Get(1).Get(1)\nwebStr = viewOTag.Get(2).Get(1)\nrefStr = viewOTag.Get(3).Get(1)\nsbarStr = viewOTag.Get(4).Get(1)\nlegStr = \"LEGEND\" + nl + \"END\" + nl\n\n'--------\n' LAYERS\n'--------\nmapDlg = av.FindDialog(\"avmscfg.mapDlg\")\nlayerLBox = mapDlg.FindByName(\"lbx_l ayers\")\n\nmapLayers = layerLBox.GetSelection\nif (mapLayers.Count = 0) then\n mapLayers = layerLBox.GetList\nend\n\nnumLayers = mapLayers.Count\nallLayStr = \"#================== START OF LAYER SECTION =====================#\" +nl\n\nfor each layId in (numLayers -1)..0 by -1\n mapLay = mapLayers.Get(layId)\n layStr = mapLay.GetObjectTag.Get(2)\n allLayStr = allLayStr + layStr + nl \nend \n\nmapFileStr = mapStr + nl + webStr + nl + refStr + nl + legStr + nl +sbarStr + nl+nl +allLayStr + nl + \"END #Map\"\n'msgBox.Report(m apFileStr,\"\")\n\n\n'------------\n' WRITE FILE\n'------------\n' WRITE MAP FILE FOR USE IN APPLICATION\nif (mapFileType = \"write\") then\n\n mapFilename = FileDialog.Put(\"pmapper.map\".AsFilename, \"*.map\", \"Save File As...\")\n if (mapFilename = nil) then \n return nil \n end\n\n txtF = TextFile.Make(mapFilename, #FILE_PERM_WRITE )\n txtF.Write (mapFileStr, mapFileStr.Count)\n txtF.Close\n\n\n' WRITE TEST MAP FILE AND LOAD INTO BROWSER\nelse\n\n webServer = av.Run(\"avmscfg.ReadIni\", {\"SERVER\",\"webserver\"})\n testpage = a v.Run(\"avmscfg.ReadIni\", {\"SERVER\",\"testpage\"})\n mapdir = av.Run(\"avmscfg.ReadIni\", {\"SERVER\",\"mapdir\"})\n\n mapFilePath = mapdir + \"/pmappertest.map\"\n mapFilename = mapFilePath.AsFilename\n txtF = TextFile.Make(mapFilename, #FILE_PERM_WRITE )\n txtF.Write (mapFileStr, mapFileStr.Count)\n txtF.Close\n\n baseURL = webServer + \"/\" + testpage + \"?mapfile=\" + mapFilePath\n baseURL = baseURL.Substitute(\"//\", \"/\")\n mapURL = \"http://\" + baseURL \n\n av.Run(\"avmscfg.Map2Browser\", mapURL)\n\n\n\n\n\n\n\nend\n\n\n" ) (Script.115 Name: "avmscfg.mDlg.Open" SourceCode: "\n'====================================\n' OPEN DIALOG FOR MAP FILE CREATION\n'====================================\n\ntheView = av.GetActiveDoc\n_avmscfg_theView = theView\n\n\n'-------------------------------------------\n' CHECK IF VIEW IS CONFIGURED FOR MAPSERVER\n'-------------------------------------------\nif (av.Run(\"avmscfg.CheckViewOTag\",theView) = false) then\n msgBox.Error(\"Current view has not been configured yet for \" + nl + \n \"use with MapServer.\" + nl +\n \"Please run menu 'Bas e Configuration' first\", \"\")\n return nil\nend \n\n\n'-------------------------------------------------------\n' CHECK FOR NEW THEMES NOT YET CONFIGURED FOR MAPSERVER\n'-------------------------------------------------------\ntheLayers = theView.GetThemes\n\nnewLayers = {}\nnewLayerStr = \"\"\nfor each lay in theLayers\n if (av.Run(\"avmscfg.CheckThemeOTag\", lay) = false) then\n newLayers.Add(lay)\n newLayerStr = newLayerStr + lay.GetName + \" \"\n end\nend\n\nif (newLayers.Count > 0) then\n runConfig = msgB ox.YesNo(\"The themes \" + newLayerStr + \"have been added to the view and are not configured for inclusion in MapServer map file.\" + nl+\n \"Do you want to run configuration for them?\", \"Configure New Themes?\", TRUE) \n if (runConfig) then\n for each lay in newLayers\n layConfig = av.Run(\"avmscfg.BaseConfig.ReturnThmProp\", lay)\n lay.SetObjectTag(layConfig)\n end\n end \nend\n\n\n'-------------\n' OPEN DIALOG\n'-------------\nmapDlg = av.FindDialog(\"avmscfg.mapDlg\")\nlayLBox = mapD lg.FindByName(\"lbx_layers\")\nlayLBox.DefineFromList(theLayers)\n\nparamTxtBox = mapDlg.FindByName(\"tbx_params\")\nparamTxtBox.Empty\n\nparamTxtLabl = mapDlg.FindByName(\"txt_params\")\nparamTxtLabl.SetLabel(\"Parameters\")\n\n\nmapDlg.Open\n\n\n\n" ) (Script.116 Name: "avmscfg.ImgCat2TileShape" SourceCode: "' TILEINDEX FOR MAPSERVER FROM ESRI IMAGECATALOG\n' Author: Armin Burger\n' Calculates the tileindex shape file from an ESRI \n' image catalog for use in the MapServer map file.\n' Usage: Load dbf/Info table as table in ArcView. \n' Run the script for this table.\n\n\n'-----------------------------------------\n' INTABLE - INPUT TABLE FOR IMAGE CATALOG\n'-----------------------------------------\ntheInTable = av.GetActiveDoc\ntheInVTab = theInTable.GetVTab\ntheInFields = theInVTab.GetFields\n\ntheLocFld = theInVTab.FindF ield(\"IMAGE\")\nminXFld = theInVTab.FindField(\"XMIN\")\nminYFld = theInVTab.FindField(\"YMIN\")\nmaxXFld = theInVTab.FindField(\"XMAX\")\nmaxYFld = theInVTab.FindField(\"YMAX\")\n\n'-----------------------------------\n' OUT SHAPE FILE AS TILEINDEX SHAPE\n'-----------------------------------\nfileDef = av.GetProject.MakeFileName(\"tileind\", \"shp\")\nmyFileName = FileDialog.Put(fileDef,\"*.shp\",\"Save the new theme\")\nnewFTab = FTab.MakeNew(myFileName,Polygon)\n\nGrdID = Field.Make(\"ID\", #FIELD_LONG, 10, 0)\ntheLoc = Field.Make(\"Loca tion\", #FIELD_CHAR, 100, 0)\n\nfldList = {}\nfldList.Add(GrdID)\nfldList.Add(theLoc)\n\nnewFTab.AddFields(fldList)\n\n\n'------------------------------\n' CALCULATE COORDINATES\n'------------------------------\nid = 1\nfor each rec in theInVTab \n\n ' POINTS\n ' 2--3 <== order of points\n ' | |\n ' 1--4\n\n minX = theInVTab.ReturnValueNumber(minXFld, rec)\n minY = theInVTab.ReturnValueNumber(minYFld, rec)\n maxX = theInVTab.ReturnValueNumber(maxXFld, rec)\n maxY = theInVTab.ReturnValueNumber(max YFld, rec)\n\n p1 = Point.Make(minX,minY)\n p2 = Point.Make(minX,maxY)\n p3 = Point.Make(maxX,maxY)\n p4 = Point.Make(maxX,minY)\n \n ' POLYGON AND ATTRIBUTE VALUES\n newPoly = Polygon.Make({{p1, p2, p3, p4}})\n \n n = newFTab.AddRecord\n newFTab.SetValue(newFTab.FindField(\"Shape\"),n,newPoly)\n \n newFTab.SetValue(GrdID,n,id)\n id = id + 1\n \n newFTab.SetValue(theLoc,n,theInVTab.ReturnValue(theLocFld, rec))\n \nend\n" ) (Script.117 Name: "avmscfg.BaseConfig" SourceCode: "\n''=================================================================\n'' BASIC CONFIGURATION FOR MAP FILE\n''\n'' Calls script \"avmscfg.BaseConfig.ReturnThmProp\" for each theme\n''\n''=================================================================\n\n\ntheView = av.GetActiveDoc\n_avmscfg_theView = theView\n\n\nexistingConfig = FALSE\n\n' CHECK IF VIEW HAS ALREADY BEEN CONFIGURED\n'' Ask what to do\nif (av.Run(\"avmscfg.CheckViewOTag\",theView) = true) then\n existingConfig = TRUE\n reconfigure = msgBox.YesNo(\"Current view has already been configured for use with MapServer. \" + \n \"If you reconfigure all manual configuration \" + nl + \"will be lost.\" + nl +\n \"Do you want to continue?\",\n \"WARNING: Re-Configure?\", FALSE)\n if (reconfigure = false) then\n exit\n end\n \nend \n\n\ntheunits = theView.getunits.asstring\nif (theunits = \"UNITS_LINEAR_UNKNOWN\") then\n msgbox.info(\"It is important to have the map units set in the view properties. This is needed by mapserver. Please set them in the View-Properties dialog and try again\", \"MapServer\")\n exit\nend\n\n\nu = \"meters\"\nif (theunits = \"UNITS_LINEAR_METERS\") then u = \"meters\" end\nif (theunits = \"UNITS_UNITS_LINEAR_DEGREES\") then u = \"dd\" end\nif (theunits = \"UNITS_LINEAR_INCHES\") then u = \"inches\" end\nif (theunits = \"UNITS_LINEAR_FEET\") then u = \"feet\" end\nif (theunits = \"UNITS_LINEAR_MILES\") then u = \"miles\" end\nif (theunits = \"UNITS_LINEAR_KILOMETERS\") then u = \"kilometers\" end\n\n\nviewExtent = theView.getdisplay.ReturnVisExtent\ntotalExtent = theVi ew.ReturnExtent\n\nmapExtent = viewExtent.getleft.SetFormat( \"d.ddd\" ).asstring + \" \"+ viewExtent.getbottom.SetFormat( \"d.ddd\" ).asstring +\" \" + viewextent.getright.SetFormat( \"d.ddd\" ).asstring +\" \"+ viewextent.gettop.SetFormat( \"d.ddd\" ).asstring\nthetotalextent = totalextent.getleft.SetFormat( \"d.ddd\" ).asstring + \" \"+ totalextent.getbottom.SetFormat( \"d.ddd\" ).asstring +\" \" + totalextent.getright.SetFormat( \"d.ddd\" ).asstring +\" \"+ totalextent.gettop.SetFormat( \"d.ddd\" ).asstring\n\ndefLayStr = \"\"\nfor each l in theView.GetThemes\n bn = l.getSrcName.getFilename.GetBaseName\n layName = bn.Substitute(\".shp\", \"\")\n\n defLayStr = defLayStr + layName + \",\"\nend\ndefLayStr = defLayStr.left(defLayStr.Count -1)\n\n\n\n\n\n'-----------------------------\n'# PARAMETERS FOR MAP AND WEB\n'-----------------------------\n'# GET DEFAULT VALUES FROM INI FILE\ndatadir = av.Run(\"avmscfg.ReadIni\", {\"MAPFILE\",\"datadir\"})\nimagecolor = av.Run(\"avmscfg.ReadIni\", {\"MAPFILE\",\"imagecolor\"})\nfontset = av.Run(\"avmscfg.ReadIni\", {\"MAPFILE\",\"fo ntset\"})\nsymbolset = av.Run(\"avmscfg.ReadIni\", {\"MAPFILE\",\"symbolset\"})\nimgpath = av.Run(\"avmscfg.ReadIni\", {\"MAPFILE\",\"imgpath\"})\nimgurl = av.Run(\"avmscfg.ReadIni\", {\"MAPFILE\",\"imgurl\"})\n\n\nlabels = {\"MAP: SHAPEPATH * \", \"MAP: IMAGECOLOR\", \"MAP: FONTSET * \", \"MAP: SYMBOLSET * \", \"WEB: IMAGEPATH * \", \"WEB: IMAGEURL * \"}\ndefaults = {datadir, imagecolor, fontset, symbolset, imgpath, imgurl } \nMapWebParam = MsgBox.MultiInput (\"Settings for MAP and WEB\", \"Settings MAP and WEB\", labels, defaults)\n\nif (MapWebParam.Count = 0) then exit end\n\nshpPath = MapWebParam.Get(0) \nimgColor = MapWebParam.Get(1)\nfontSet = MapWebParam.Get(2)\nsymbSet = MapWebParam.Get(3)\nimgPath = MapWebParam.Get(4)\nimgURL = MapWebParam.Get(5)\n\n\n'-----------------------------\n'# STRINGS FOR MAP AND WEB\n'-----------------------------\n\nmapStr = \"\"\nmapStr = mapStr + \"#\" + nl\nmapStr = mapStr + \"# Start of map file - created \" + date.now.asstring + nl\nmapStr = mapStr + \"#\" + nl\nmapStr = mapStr + \"MAP \" + nl\nmapStr = mapStr + \"EXTENT \" + mapExtent + nl\nmapStr = mapStr + \"UNITS \" + u + nl\nmapStr = mapStr + \"SHAPEPATH \" + shpPath.Quote + nl\nmapStr = mapStr + \"FONTSET \" + fontSet.Quote + nl\nmapStr = mapStr + \"SYMBOLSET \" + symbSet.Quote + nl\nmapStr = mapStr + \"RESOLUTION 96\" + nl\n\n\nwebStr = \"\"\nwebStr = webStr + \"#\" + nl\nwebStr = webStr + \"# Start of web interface definition\" + nl\nwebStr = webStr + \"#\" + nl\nwebStr = webStr + \"WEB\" + nl\nwebStr = webStr + \" TEMPLATE \"\"map.html\"\"\" + nl \nwebStr = webStr + \" IM AGEPATH \" + imgPath.Quote + nl\nwebStr = webStr + \" IMAGEURL \" + imgURL.Quote + nl\nwebStr = webStr + \" METADATA\" + nl\nwebStr = webStr + \" END # Metadata\" + nl\nwebStr = webStr + \"END # Web\" + nl\n\n\n\n\n'----------------------------------------\n'# PARAMETERS FOR REFERENCE AND SCALEBAR \n'----------------------------------------\nlabels = {\"REF: IMAGE * \", \"REF: SIZE \", \"SBAR: INTERVALS\", \"SBAR: SIZE\" }\ndefaults = {\"images/reference.png\", \"180 140\", \"4\", \"200 3\" } \nRefSbarParam = MsgBox.MultiInput (\"Settin gs for REFERENCE MAP and SCALEBAR\", \"Settings REFERENCE MAP and SCALEBAR\", labels, defaults)\n\nif (RefSbarParam.Count = 0) then exit end\n\n\nrefImg = RefSbarParam.Get(0) \nrefSize = RefSbarParam.Get(1)\nsbarInt = RefSbarParam.Get(2)\nsbarSize = RefSbarParam.Get(3)\n\n\nrefStr = \"\"\nrefStr = refStr + \"#\" + nl\nrefStr = refStr + \"# Start of Reference map definition\" + nl\nrefStr = refStr + \"#\" + nl\nrefStr = refStr + \"REFERENCE\" + nl\nrefStr = refStr + \" EXTENT \" + mapExtent + nl\nrefStr = refStr + \" IMAGE \" + refImg. Quote + nl\nrefStr = refStr + \" SIZE \" + refSize + nl\nrefStr = refStr + \" COLOR -1 -1 -1\" + nl\nrefStr = refStr + \" OUTLINECOLOR 255 0 0\" + nl\nrefStr = refStr + \"END # Reference\" + nl\n\n\n\nsbarStr = \"\"\nsbarStr = sbarStr + \"#\" + nl\nsbarStr = sbarStr + \"# Start of ScaleBar definition\" + nl\nsbarStr = sbarStr + \"#\" + nl\nsbarStr = sbarStr + \"SCALEBAR\" + nl\nsbarStr = sbarStr + \" INTERVALS \" + sbarInt + nl\nsbarStr = sbarStr + \" SIZE \" + sbarSize + nl\nsbarStr = sbarStr + \" UNITS \" + u + nl\nsbarStr = sbarStr + \" COLOR 250 250 250\" + nl\nsbarStr = sbarStr + \" OUTLINECOLOR 0 0 0\" + nl\nsbarStr = sbarStr + \" BACKGROUNDCOLOR 100 100 100\" + nl\nsbarStr = sbarStr + \" STYLE 0\" + nl\nsbarStr = sbarStr + \" POSTLABELCACHE true\" + nl\nsbarStr = sbarStr + \" LABEL\" + nl\nsbarStr = sbarStr + \" COLOR 255 255 255\" + nl\nsbarStr = sbarStr + \" OUTLINECOLOR 0 0 0\" + nl\nsbarStr = sbarStr + \" SIZE small\" + nl\nsbarStr = sbarStr + \" END # Label\" + nl\nsbarStr = sbarStr + \"END # Reference\" + nl\n\n\n'# WRITE STRING LIST TO VIEW OBJ ECT TAG\nviewOTag = {\"avmscfg\",{\"MAP\",mapStr}, {\"WEB\",webStr}, {\"REFERENCE\",refStr}, {\"SCALEBAR\",sbarStr} }\ntheView.SetObjectTag(viewOTag)\n\n\n\n'------------------------------------\n' CREATE LAYER ENTRY FOR EACH THEME\n'------------------------------------\nif (existingConfig = TRUE) then\n reconfigThms = msgBox.YesNo(\"Do you want to re-configure also all THEMES/LAYERS?. \" + \n \"All existing manual configuration will be lost.\" + nl +\n \"Do you want to continue?\",\n \"WARNING : Re-Configure THEMES?\", FALSE)\n if (reconfigThms = false) then\n exit\n end \nend\n\n\ntheThemes = theView.GetThemes\n\nfor each t in theThemes\n layConfig = av.Run(\"avmscfg.BaseConfig.ReturnThmProp\", t)\n t.SetObjectTag(layConfig)\nend \n\n\n" ) (Script.118 Name: "avmscfg.ReConfig.Themes" SourceCode: "\n' RE-CONFIGURE SELECTED THEMES\n' e.g. after changes to legend\n\n\ntheView = av.GetActiveDoc\ntheThemes = theView.GetThemes\n\nnewThemes = msgBox.MultiListAsString(theThemes, \"Select themes that you want to re-configure.\" + nl+\n \"Note: all manual changes will be lost\", \"Themes to Re-Configure\")\n\nif (newThemes = nil) then exit end\n\nfor each t in newThemes\n layConfig = av.Run(\"avmscfg.BaseConfig.ReturnThmProp\", t)\n t.SetObjectTag(layConfig)\nend\n\n" ) (Script.119 Name: "avmscfg.EditIni" SourceCode: "\n'' LOAD INI FILE INTO NOTEPAD\n\nhomeVar = system.getEnvVar(\"AVHOME\")\niniFile = homeVar + \"\\etc\\avpmapper.ini\"\nif (iniFile.AsFileName.IsFile.Not) then\n msgBox.Error(\"Config file avpmapper.ini not in directory ..\\ARCVIEW\\ETC\", \"INI File Not Found\")\n exit\nend \n\ncmd = \"notepad.exe \" + iniFile \nsystem.Execute(cmd)" ) (Script.120 Name: "avmscfg.TileIndexShape" SourceCode: "\n' =======================================================================================\n' CREATE TILE POLYGONS FROM IMAGE EXTENTS FOR USE IN MAPSERVER\n'\n' creates tileindex shapes for images\n' NOTES: for processing JPEGs, the appropriate extension has to be loaded before\n' for UNIX servers the images have to be accessable by the Win host via SAMBA \n'\n' =======================================================================================\n\n'----------------------\n' GET IMAGES FROM DISK\n'------ ----------------\nimgList = {}\nwhile (TRUE)\n srcList = SourceDialog.Showclass(\"Select Images\",ImgSrc)\n if (srcList.Count < 1) then\n exit\n end\n\n for each i in srcList\n imgPath = i.GetFileName.AsString.Substitute(\"\\\",\"/\")\n imgList.Add(imgPath)\n end\n\n again = MsgBox.YesNo( \"Do you want to add other images?\", \"Add Other Images\", FALSE ) \n if (not again) then \n break \n end\nend\n\n'msgBox.multiListAsString(imgList,\"\",\"\")\n\n\n\n'-----------------------------------\n' OUT SHAPE FILE AS TILEINDEX S HAPE\n'-----------------------------------\nfileDef = av.GetProject.MakeFileName(\"tileind\", \"shp\")\nmyFileName = FileDialog.Put(fileDef,\"*.shp\",\"Save the new theme\")\nif (myFileName = nil) then\n exit\nend \nnewFTab = FTab.MakeNew(myFileName,Polygon)\n\nGrdID = Field.Make(\"ID_NR\", #FIELD_LONG, 10, 0)\ntheLoc = Field.Make(\"Location\", #FIELD_CHAR, 130, 0)\n\nfldList = {}\nfldList.Add(GrdID)\nfldList.Add(theLoc)\n\nnewFTab.SetEditable(TRUE)\nnewFTab.AddFields(fldList)\n\n\n\n'------------------------\n' WRITE TILE POLYGONS\n'----- -------------------\n\n''''''''''''''''''''''''unix'''''''''''''''''''''''''''''''''''''''''''''\n'' FOR UNIX SERVERS \nlabels = {\"WIN PATH\", \"UNIX PATH\"}\ndefVals = {imgList.Get(0).Left(3), \"/var/www/mapserver/\"} '' <=== CHANGE DEFAULT UNIX PATH HERE\naskStr = \"Change paths WIN -> UNIX. CANCEL for WIN environment.\"\nsubstLst = msgBox.MultiInput(askStr, \"??? win2unix ???\", labels, defVals)\nif (substLst.Count > 1) then \n isUnix = TRUE \n winPath = substLst.Get(0)\n unixPath = substLst.Get(1)\nelse\n isUnix = F ALSE\nend \n''''''''''''''''''''''''unix'''''''''''''''''''''''''''''''''''''''''''''\n\nid = 1\nfor each img in imgList\n myTheme = Theme.Make(SrcName.Make(img))\n if (myTheme = nil) then\n continue\n end \n\n minX = myTheme.ReturnExtent.GetLeft.SetFormat(\"d.dddd\") ''.AsString\n minY = myTheme.ReturnExtent.GetBottom.SetFormat(\"d.dddd\") ''.AsString\n maxX = myTheme.ReturnExtent.GetRight.SetFormat(\"d.dddd\") ''.AsString\n maxY = myTheme.ReturnExtent.GetTop.SetFormat(\"d.dddd\") ''.AsString \n\n ' POINTS\n ' 2--3 <== order of points\n ' | |\n ' 1--4\n\n p1 = Point.Make(minX,minY)\n p2 = Point.Make(minX,maxY)\n p3 = Point.Make(maxX,maxY)\n p4 = Point.Make(maxX,minY)\n\n ' POLYGON AND ATTRIBUTE VALUES\n newPoly = Polygon.Make({{p1, p2, p3, p4}})\n\n n = newFTab.AddRecord\n newFTab.SetValue(newFTab.FindField(\"Shape\"),n,newPoly)\n\n newFTab.SetValue(GrdID,n,id)\n id = id + 1\n\n if (isUnix = TRUE) then\n img = img.Substitute(winPath, unixPath)\n end \n\n newFTab.SetValue(theLoc,n,img)\n\nend\n\nnewFTab.SetEditable(FALSE)\nnewFTab.Flush\n\n\n\n\n\n\n\n\n\n\n\n\n" ) (Script.121 Name: "avmscfg_Extension_Install" SourceCode: "'DO NOT EDIT!!!\n\nif (av.getproject=nil) then return(nil) end\n\n\ntheDocs = SELF.get(0)\ntheDialogs = SELF.get(1)\ntheControlList = SELF.get(2)\ntheMenuList = SELF.get(3)\ntheToolMenuList=SELF.Get(4)\ntheProject=Av.getproject\n\n\n'Add the Docs\n'\nfor each adoc in theDocs\n theProject.addDoc(adoc)\nend\n\n'Add the Dialogs\n'\nfor each adialog in theDialogs\n theProject.addDialog(adialog)\nend\n\n'Add the Controls\n'\nfor each totalControl in theControlList\n 'The Control list\n acontrol=totalControl.get(0)\n \n 'The physical c ontrol\n theControl = totalControl.get(1)\n \n 'The control Index\n theCindex=totalControl.get(2)\n\n 'Find the DocGUI\n theControlDoc=av.getproject.findGUI(aControl.get(0))\n if (theControlDoc=NIL) then \n MsgBox.Warning(\"The GUI \"+aControl.get(0)+\" cannot be found in the current project.\",\"Script Eror\")\n return(nil)\n end\n \n 'This finds the control set \n thecommand=\"av.getproject.findGUI(\"\"\"+aControl.get(0)+\"\"\").Get\"+acontrol.get(1)\n thescript1=Script.Make(thecommand)\n thec ontrolset=thescript1.doit(\"\")\n \n 'Add the control to the control set\n theControlSet.Add(theControl,theCindex)\nend\n\n\n'Add the menus\nfor each totalcontrol in theMenuList\n \n 'The Control list\n acontrol=totalControl.get(0)\n mDoc=acontrol.get(0)\n mMenu=acontrol.get(1)\n mMenuItem=acontrol.get(2)\n\n 'The physical control\n theControl = totalControl.get(1)\n \n 'The control Index\n theCindex=totalControl.get(2)\n\n 'Find the DocGUI\n theControlDoc=av.getproject.findGUI(aControl.get(0))\n if (theControlDoc=NIL) then \n MsgBox.Warning(\"The GUI \"+aControl.get(0)+\" cannot be found in the current project.\",\"Script Eror\")\n return(nil)\n end\n \n theMbar=av.getproject.findGUI(mDoc).GetMenuBar\n themenu=theMbar.findbylabel(mMenu)\n if (themenu=NiL) then\n themenu=menu.make\n themenu.setlabel(mMenu)\n theMbar.add(themenu,999)\n end\n \n themenu.add(thecontrol, theCindex)\nend\n \n \n'Add the Tool Menus\n\nfor each totalControl in theToolMenuList\n 'The Control list\n acontrol=totalControl.get(0)\n \n 'The physical control\n theControl = totalControl.get(1)\n \n 'The control Index\n theCindex=totalControl.get(2)\n\n 'Find the DocGUI\n theControlDoc=av.getproject.findGUI(aControl.get(0))\n if (theControlDoc=NIL) then \n MsgBox.Warning(\"The GUI \"+aControl.get(0)+\" cannot be found in the current project.\",\"Script Eror\")\n return(nil)\n end\n \n 'This finds the control set \n thecommand=\"av.getproject.findGUI(\"\"\"+aControl.get(0)+\"\"\").Get\"+acontr ol.get(1)\n thescript1=Script.Make(thecommand)\n thecontrolset=av.getproject.findGUI(aControl.get(0)).GetToolBar\n \n 'Add the control to the control set\n theControlSet.Add(theControl,theCindex)\nend\n\n\nav.getproject.setmodified(true)\n\n\n'And the scripts add themselves\n" ) (Script.122 Name: "avmscfg_Extension_Uninstall" SourceCode: "'DO NOT EDIT!!!\n\n'The SELF is the Extension\n\ntheDocs = SELF.get(0)\ntheDialogs = SELF.get(1)\ntheControlList = SELF.get(2)\ntheMenuList = SELF.get(3)\ntheToolMenuList=SELF.get(4)\ntheProject=Av.getproject\n\n\n'Remove the Docs\n'\nfor each adoc in theDocs\n If (theProject.finddoc(adoc.getname)<>NIL) then \n theAnswer=msgbox.yesno(\"Remove the Document \"+adoc.getname+\"?\",\"Remove Document?\",TRUE)\n if (theAnswer=TRUE) then theProject.RemoveDoc(adoc) end\n end\nend\n\n'Remove the Dialogs\n'\nfor each adialog in theDialogs\n the Project.RemoveDialog(adialog.AsString)\nend\n\n'Removethe Controls\n'\nfor each totalControl in theControlList\n 'Get the control list from the Ext\n acontrol=totalControl.get(0)\n \n 'Get the physical Control\n theControl = totalControl.get(1)\n \n 'Get the Controls Index\n theCindex=totalControl.get(2)\n\n 'Find the DocGUI for the Control\n theControlDoc=av.getproject.findGUI(aControl.get(0))\n if (theControlDoc=NIL) then \n MsgBox.Warning(\"The GUI \"+aControl.get(0)+\" cannot be found in the current project.\",\"Script Eror\")\n return(nil)\n end\n \n 'This sequence finds the appropiate control set\n thecommand=\"av.getproject.findGUI(\"\"\"+aControl.get(0)+\"\"\").Get\"+acontrol.get(1)\n thescript1=Script.Make(thecommand)\n thecontrolset=thescript1.doit(\"\")\n\n 'See if the control is in the set , if so remove it\n if (theControlSet.GetControls.find(theControl)<>NIL) then\n theControlSet.remove(theControl)\n if (thecontrol = \"ToolBar\") then\n theControlSet.selectdefault\n end\n end\nend\n\n\n'Remove the Menus\n'\nfor each totalcontrol in theMenuList\n \n 'The Control list\n acontrol=totalControl.get(0)\n mDoc=acontrol.get(0)\n mMenu=acontrol.get(1)\n mMenuItem=acontrol.get(2)\n\n 'The physical control\n theControl = totalControl.get(1)\n \n 'The control Index\n theCindex=totalControl.get(2)\n\n 'Find the DocGUI\n theControlDoc=av.getproject.findGUI(aControl.get(0))\n if (theControlDoc=NIL) then \n MsgBox.Warning(\"The GUI \"+aControl.get(0)+\" cannot b e found in the current project.\",\"Script Eror\")\n return(nil)\n end\n \n theMbar=av.getproject.findGUI(mDoc).GetMenuBar\n themenu=theMbar.findbylabel(mMenu)\n if (themenu=NiL) then\n MsgBox.Warning(\"The menu named \"+mMenu+\" is not here.\",\"Script Eror\")\n 'return(nil)\n else\n \n thething=themenu.getcontrols.find(thecontrol)\n if (thething<>NIL) then \n themenu.remove(thecontrol) \n end\n 'msgbox.info(themenu.GetControls.count.asstring,\"\")\n if (themenu.GetControls.count<1) th en\n theMbar.remove(themenu)\n end\n end\nend\n \nfor each totalControl in theToolMenuList\n 'Get the control list from the Ext\n acontrol=totalControl.get(0)\n \n 'Get the physical Control\n theControl = totalControl.get(1)\n \n 'Get the Controls Index\n theCindex=totalControl.get(2)\n\n 'Find the DocGUI for the Control\n theControlDoc=av.getproject.findGUI(aControl.get(0))\n if (theControlDoc=NIL) then \n MsgBox.Warning(\"The GUI \"+aControl.get(0)+\" cannot be found in the current pr oject.\",\"Script Eror\")\n return(nil)\n end\n \n 'This sequence finds the appropiate control set\n thecontrolset=av.getproject.findGUI(aControl.get(0)).GetToolBar\n\n \n 'See if the control is in the set , if so remove it\n if (theControlSet.GetControls.find(theControl)<>NIL) then\n \n theControlSet.remove(theControl)\n theControlSet.selectdefault\n end\n\nend\n \n\n'And the scripts delete themselves\n\n\nav.getproject.setmodified(true)\n" )