/3.1 (Extension.1 Name: "Stuff!" FirstRootClassName: "List" Roots: 2 Roots: 19 Version: 31 About: "Stuff for ArcView Users (v1.0)" InstallScript: 41 UninstallScript: 42 ExtVersion: 1 ) (List.2 Child: 3 Child: 4 Child: 5 Child: 6 Child: 7 Child: 8 Child: 9 Child: 10 Child: 11 Child: 12 Child: 13 Child: 14 Child: 15 Child: 16 Child: 17 Child: 18 ) (Script.3 Name: "Doc.Clone" SourceCode: "' Doc.Clone\n\nfor each d1 in av.GetProject.GetSelectedDocs\n d2 = d1.Clone\n d2.SetName(\"Copy of\"++d1.GetName)\n av.GetProject.AddDoc(d2)\n av.GetProject.SetModified(true)\nend\n" ) (Script.4 Name: "Graphic.AddArrowhead" SourceCode: "'Graphic.AddArrowhead\n\n'Add Arrowhead to Line or Polyline\n\n'**** find rotation coefficients\n\ntheGraphic = av.GetActiveDoc.GetGraphics.GetSelected.Get(0)\ntheShape=theGraphic.GetShape\nif (theShape.Is(Line)) then\n Vcount = 2\n point1 = theShape.ReturnStart\n point2 = theShape.ReturnEnd\nelse\n Vlist = theShape.AsMultiPoint.AsList\n Vcount = Vlist.Count\n point1 = VList.Get(Vcount - 2)\n point2 = VList.Get(Vcount - 1)\nend\ndistance =(((point2.GetX - point1.GetX)^2)+\n ((point2.GetY - point1.GetY)^2)).sqr t\ncos = (point2.GetX - point1.GetX) / distance\nsin = -(point2.GetY - point1.GetY) / distance\n\n'**** get symbol attributes\n\ntheSymbol = theGraphic.GetSymbol\ntheColor = theSymbol.GetColor\ntheWidth = theSymbol.GetWidth\n\n'**** get display-to-pointsize conversion\n\ntheDisplay = av.GetActiveDoc.GetDisplay\nP_inches = 1/72\ntemp = #UNITS_LINEAR_INCHES\nif (theDisplay.Is(PageDisplay)) then\n\n '**** layout units are always inches\n\n P_size = P_inches\nelse\n theUnits = theDisplay.GetUnits\n if (theUnits.AsString.Cont ains(\"UNKNOWN\")) then\n\n '**** if units are unknown, use DisplayHeight / 400\n\n P_size = theDisplay.ReturnVisExtent.GetHeight / 400\n else\n theScale = av.GetActiveDoc.ReturnScale\n P_size = Units.Convert(P_inches,temp,theUnits) * theScale\n end\nend\n\n'**** get arrowhead size\n\ntemp = (P_size * 10 * theWidth).AsString\n\nP_size = MsgBox.Input(\"Units:\",\"Arrowhead Size\",temp)\nif (P_size = nil) then\n exit\nend\nM = P_size.AsNumber\n\n'**** create arrowhead polygon\n\nPointList = List.Make\nthePoint = point2\nPointList.Add(thePoint)\nX0 = point2.GetX\nY0 = point2.GetY\nX = (-0.25 * cos * M) + (0.5 * sin * M) + X0\nY = (0.25 * sin * M) + (0.5 * cos * M) + Y0\nthePoint = Point.Make(X,Y)\nPointList.Add(thePoint)\nX = (0.75 * cos * M) + X0\nY = (-0.75 * sin * M) + Y0\nthePoint = Point.Make(X,Y)\nPointList.Add(thePoint)\nX = (-0.25 * cos * M) + (-0.5 * sin * M) + X0\nY = (0.25 * sin * M) + (-0.5 * cos * M) + Y0\nthePoint = Point.Make(X,Y)\nPointList.Add(thePoint)\nthePoint = point2\nPointList.Add(thePoint)\ntheList = List.Ma ke\ntheList.Add(PointList)\nArrow = Polygon.Make(theList)\n\n'**** draw arrowhead, set symbol, and group with line\n\nG_list = av.GetActiveDoc.GetGraphics\nArrow_G = GraphicShape.Make(Arrow)\ntheFill = RasterFill.Make\ntheFill.SetStyle(#RASTERFILL_STYLE_SOLID)\ntheFill.SetColor(theColor)\ntheFill.SetOutlined(FALSE)\nArrow_G.SetSymbol(theFill)\nArrow_G.SetVisible(TRUE)\nArrow_G.SetSelected(TRUE)\nG_list.Add(Arrow_G)\nG_list.GroupSelected\nav.GetProject.SetModified(true)\n" ) (Script.5 Name: "Graphic.Duplicate" SourceCode: "'Graphic.Duplicate\n\ntheGraphics = av.GetActiveDoc.GetGraphics\ng_list = theGraphics.GetSelected\ntheGraphics.UnSelectAll\nfor each g in g_list\n g2 = g.Clone\n p = Point.Make(0.125,0.125)\n g2.Offset(p)\n g2.SetSelected(true)\n theGraphics.Add(g2)\n g2.invalidate\nend\n" ) (Script.6 Name: "Graphic.IsOneLine" SourceCode: "'Graphic.IsOneLine\n\n'Enable if single Line or PolyLine is selected\n\ntheCount = av.GetActiveDoc.GetGraphics.GetSelected.Count\nif (theCount = 1) then\n theGraphic = av.GetActiveDoc.GetGraphics.GetSelected.Get(0)\n if (theGraphic.Is(GraphicShape)) then\n theShape=theGraphic.GetShape\n SELF.SetEnabled((theShape.Is(Line)) OR (theShape.Is(PolyLine)))\n else\n SELF.SetEnabled(FALSE)\n end\nelse\n SELF.SetEnabled(FALSE)\nend\n" ) (Script.7 Name: "Layout.LegendTextSize" SourceCode: "' Layout.LegendTextSize\n' sets the text size of a legend frame\n\n'**** get legend frame data\n\ntheLayout = av.GetActiveDoc\nG_List = theLayout.GetGraphics.GetSelected\ntheObj = G_List.Get(0)\ntheBounds = theObj.GetBounds\ntheOrigin = theBounds.ReturnOrigin\ntheSymbolList = theObj.ReturnSymbols\nfor each s in theSymbolList\n if (s.Is(TextSymbol)) then\n theTextSize = s.GetSize\n break\n end\nend\nresult = MsgBox.Input(\"Enter text size:\",\"Legend Text\",theTextSize.AsString)\nif (result = nil) then\n return nil \nend\nnewTextSize = result.AsNumber\n\n'**** set text size\n\ntheObj.Invalidate\ntheScale = newTextSize / theTextSize\nX = theBounds.GetWidth * theScale\nY = theBounds.GetHeight * theScale\nIsDone = FALSE\nwhile (IsDone.Not)\n newBounds = Rect.Make(theOrigin, X@Y)\n theObj.SetBounds(newBounds)\n\n '**** check text size\n\n theSymbolList = theObj.ReturnSymbols\n for each s in theSymbolList\n if (s.Is(TextSymbol)) then\n ts = s.GetSize\n break\n end\n end\n temp1 = (ts * 10000).Round\n temp2 = (newTextSize * 10000).Round\n if (temp1 = temp2) then\n IsDone = TRUE\n else\n X = X * (newTextSize / ts)\n Y = Y * (newTextSize / ts)\n end\nend\ntheObj.Draw\ntheObj.Invalidate\n" ) (Script.8 Name: "Layout.LegendTSUpdate" SourceCode: "' Layout.LegendTSUpdate\n' Update script for Layout.LegendTextSize\n\ntheLayout = av.GetActiveDoc\nG_List = theLayout.GetGraphics.GetSelected\nEnabled = true\nif (G_List.Count = 0) then\n Enabled = false\nelse\n theObj = G_List.Get(0)\n if (theObj.Is(LegendFrame).Not) then\n Enabled = false\n end\nend\nSELF.SetEnabled(Enabled)\n" ) (Script.9 Name: "Layout.PutTextFile" SourceCode: "'Layout.PutTextFile\n'Create graphic text from text file\n\n'**** get user point and Layout units\n\ntheLayout = av.GetActiveDoc\nthePoint = theLayout.GetDisplay.ReturnUserPoint\n\n'**** get text\n\ntxt_name = FileDialog.Show(\"*.*\", \"Text File\", \"Create Text\")\nif (txt_name = nil) then\n exit\nend\ntxt_file = TextFile.Make(txt_name, #FILE_PERM_READ)\ntheText = txt_file.Read(txt_file.GetSize)\ntxt_file.Close\n\n'**** create graphic text and set as selected\n\ngt = GraphicText.Make(theText,thePoint)\ngt.SetDisplay(theLayout.GetD isplay)\ntheLayout.GetGraphics.UnselectAll\ngt.SetSelected(TRUE)\ntheLayout.GetGraphics.AddName(gt)\nav.GetProject.SetModified(true)\n\n" ) (Script.10 Name: "Layout.Scalebar" SourceCode: "'Layout.Scalebar\n'Create scalebar from given Viewframe and point of origin\n\n'**** Get user point and Layout units\n\ntheLayout = av.GetActiveDoc\np = theLayout.GetDisplay.ReturnUserPoint\nL_units = theLayout.GetDisplay.GetUnits\n\n'**** Get ViewFrame properties\n\ntheViewFrame = theLayout.GetGraphics.GetSelected.Get(0)\ntheView = theViewFrame.GetView\nV_units = theView.GetDisplay.GetUnits\nif (V_units.AsString.Contains(\"UNKNOWN\")) then\n Msgbox.warning(\"View must have defined units\",\"Invalid View\")\n exit\nend\nV_scal e = theViewFrame.ReturnScale\n\n'**** Create dialog box to set properties\n\nS_units = V_units.AsString.AsTokens(\"_\").Get(2).LCase\nS_interval = Units.Convert(V_scale,L_units,V_units)\nlabels = {\"Units:\", \"Interval Size:\", \"Intervals:\", \"Left Divisions:\"}\ndefaults = {S_units, S_interval.AsString, \"2\", \"2\"}\nparmlist = MsgBox.MultiInput(\"Enter Desired Parameters:\", \"Scale Bar Parameters\", labels, defaults)\nif (parmlist.Count = 0) then\n exit\nend\n\ntemp = \"#UNITS_LINEAR_\"+parmlist.Get(0).Ucase\nS_units = temp.AsEnum \nS_interval = parmlist.Get(1).AsNumber\nS_intervals = parmlist.Get(2).AsNumber\nS_divisions = parmlist.Get(3).AsNumber\n\n'**** Calculate bounds\n\ntemp = S_interval / V_scale\nI_size = Units.Convert(temp,S_units,L_units)\nS_size = ( I_size * S_intervals )\nif (S_divisions > 0) then\n S_size = S_size + I_size\nend\n\nX2 = p.GetX + S_size\nY2 = p.GetY + I_size\n\n'**** Create scalebar and set parameters\n\nr = Rect.MakeXY(p.GetX,p.GetY,X2,Y2)\nsf = ScalebarFrame.Make(r)\nsf.SetDisplay(theLayout.GetDisplay)\ntheLayout.GetGraphic s.UnselectAll\nsf.SetSelected(TRUE)\nsf.SetViewFrame(theViewFrame)\nsf.SetUnits(S_units)\nsf.SetInterval(S_interval)\nsf.SetIntervals(S_intervals)\nsf.SetDivisions(S_divisions)\nsf.SetStyle(#SCALEBARFRAME_STYLE_ALTFILLED)\nsf.SetPreserveInterval(true)\ntheLayout.GetGraphics.AddName(sf)\nav.GetProject.SetModified(true)\n\n" ) (Script.11 Name: "Layout.ScalebarUpdate" SourceCode: "'Layout.ScalebarUpdate\n\n'Enable if ViewFrame is selected\n\ntheLayout = av.GetActiveDoc\n\nSELF.SetEnabled((theLayout.GetGraphics.GetSelected.Count = 1) AND\n (theLayout.GetGraphics.GetSelected.Get(0).Is(ViewFrame)))\n\n" ) (Script.12 Name: "Layout.UnselectAllGraphics" SourceCode: "' Layout.UnselectAllGraphics\n\nav.GetActiveDoc.GetGraphics.UnselectAll\n\n" ) (Script.13 Name: "View.CopyView" SourceCode: "'View.CopyView\n'Copy/Paste View Extent and Scale\n\ntheView = av.GetActiveDoc\nHasRect = Clipboard.The.HasKindOf(Rect)\nHasNumber = Clipboard.The.HasKindOf(Number)\nif ((HasRect) and (HasNumber)) then\n resp = MsgBox.YesNo(\"Paste extent and scale?\", \"\", false)\n if (resp) then\n theRect = theView.ReturnExtent\n theExtent = Clipboard.The.ReturnKindOf(Rect,TheRect).Get(0)\n theScale = Clipboard.The.ReturnKindOf(Number,TheRect).Get(0)\n theView.GetDisplay.ZoomToRect(theExtent)\n theView.GetDisplay.ZoomTo Scale(theScale)\n exit\n end\nend\nresp = MsgBox.YesNo(\"Copy extent and scale?\", \"\", false)\nif (resp) then\n 'Add centerpoint and scale to clipboard\n\n theExtent = theView.GetDisplay.ReturnExtent\n theScale = theView.ReturnScale\n Clipboard.The.Empty\n Clipboard.The.Add(theExtent)\n Clipboard.The.Add(theScale)\n MsgBox.Info(\"Extent and scale copied.\",\"\")\nend\n" ) (Script.14 Name: "View.CopyView.Update" SourceCode: "'View.CopyView.Update\n\n'Enable if Map Units are defined\n\nSELF.SetEnabled(not\n (av.GetActiveDoc.GetDisplay.GetUnits.AsString.Contains(\"UNKNOWN\")))\n" ) (Script.15 Name: "View.GeoRefImage" SourceCode: "'View.GeoRefImage\n\n'**** get image theme and point ***************************************\n\ntheView = av.GetActiveDoc\nthmImage = theView.GetActiveThemes.Get(0)\np1 = theView.GetDisplay.ReturnUserPoint\n\n' **** if georefpoint is not null, find out if current point is 2nd **\n\ngeorefpoint = Self.GetObjectTag\nif (georefpoint = nil) then\n resp = false\nelseif (georefpoint.Is(Point)) then\n resp = MsgBox.YesNo(\"Use current point to complete rectangle?\", \"\", false)\nelse\n resp = false\nend\n\nif (not resp) then\n\n ' **** store current point *****************************************\n\n Self.SetObjectTag(p1)\n MsgBox.Info(\"Point collected\", \"\")\n\nelse\n\n ' **** retrieve first point ****************************************\n\n p2 = p1\n p1 = georefpoint\n r1 = Rect.MakeXY( p1.GetX, p1.GetY, p2.GetX, p2.GetY)\n\n ' **** get coordinates for second rectangle ************************\n\n labels = {\"X1:\", \"Y1:\", \"X2:\", \"Y2:\"}\n XYlist = MsgBox.MultiInput(\"Enter Map Coordinates\", \"Georeference Points\", labels, {})\n if (XYlist.Count > 0) then\n X1 = XYlist.Get(0)\n Y1 = XYlist.Get(1)\n X2 = XYlist.Get(2)\n Y2 = XYlist.Get(3)\n if ( X1.IsNumber and Y1.IsNumber and X2.IsNumber and Y2.IsNumber ) then\n r2 = Rect.MakeXY( X1.AsNumber, Y1.AsNumber, X2.AsNumber, Y2.AsNumber)\n thmImage.GetImgSrc.MatchRectangles(r1, r2)\n\n thmImage.Invalidate(TRUE)\n temp = av.Run(\"View.ZoomToThemes\", \"\")\n Self.SetObjectTag(nil)\n else\n Msgbox.warning(\"Invalid coordinate entry\", \"Georeference Points\")\n end\n end\nend\n" ) (Script.16 Name: "View.ImageThemesUpdate" SourceCode: "'View.ImageThemesUpdate\n'Update script for View.GeoRefImage\n\ntheView = av.GetActiveDoc\nSELF.SetEnabled((theView.GetActiveThemes.Count > 0) AND\n (theView.GetActiveThemes.Get(0).Is(ITheme)))\n" ) (Script.17 Name: "View.LegendTextItem" SourceCode: "' View.LegendTextItem\n\n' Allows the user to pick a descriptive field to populate the \"Text\"\n' entries of a legend. Works for joined (lookup table) items too! If a\n' one-to-many relationship exists between the value field and the text\n' field, the first value encountered will be used.\n\n' Use View.ActiveThemesUpdate for the update script\n\ntheTitle = \"Legend Text Item\"\ntheView = av.GetActiveDoc\ntheTheme = theView.GetActiveThemes.Get(0)\nif (theTheme.Is(FTheme).Not) then\n MsgBox.Error(\"Active theme is not FT heme\",theTitle)\n return nil\nend\ntheLegend = theTheme.GetLegend\ntheFTab = theTheme.GetFTab\nflist = List.Make\nfor each f in theFTab.GetFields\n if ((f.IsTypeShape.Not) and (f.IsVisible)) then\n flist.Add(f)\n end\nend\nTextField = MsgBox.Choice(flist,\"Select Field:\",theTitle)\nif (TextField = nil) then\n return nil\nend\nnum_c = theLegend.GetNumClasses\nvfname = theLegend.ReturnFieldNames.Get(0)\nValueField = theFTab.FindField(vfname)\n\n'**** create summary table for value and text fields\n\nt_name = FileName. GetTmpDir.MakeTmp(\"sum\",\"dbf\")\nt = theFTab.Summarize(t_name,dBASE,ValueField,{TextField},{#VTAB_SUMMARY_FIRST})\nvf = t.GetFields.Get(0)\nvf_name = vf.GetName\ntf = t.GetFields.Get(2)\nbm = t.GetSelection\n\n'**** update legend\n\nfor each i in 0..(num_c - 1)\n clist = theLegend.ReturnClassInfo(i)\n val_s = clist.Get(1)\n if (vf.IsTypeString) then\n val_s = val_s.Quote\n end\n\n '**** perform query for value\n\n q = \"[\" + vf_name + \"] =\" ++ val_s\n t.Query(q,bm,#VTAB_SELTYPE_NEW)\n\n '**** retrieve text it em value and insert into legent\n\n r = bm.GetNextSet(-1)\n if (r = -1) then\n continue\n end\n theText = t.ReturnValue(tf,r).AsString\n clist.Set(0,theText)\n theLegend.SetClassInfo(i,clist)\nend\n\n'**** clean up\n\nbm = nil\nvf = nil\ntf = nil\nt = nil\nav.PurgeObjects\nFile.Delete(t_name)\ntheView.InvalidateTOC(theTheme)\nav.GetProject.SetModified(true)\n\nreturn nil\n\n\n" ) (Script.18 Name: "View.Mask" SourceCode: "'View.Mask\n'Mask view to selected feature\n\n'**** search for selected feature\n\ntheView = av.GetActiveDoc\ntheGraphicList = theView.GetGraphics\ntheFeature = nil\nfor each t in theView.GetActiveThemes\n tbl = t.GetFTab\n recno = tbl.GetSelection.GetNextSet(-1)\n if (recno <> -1) then\n theFeature = tbl.ReturnValue(tbl.FindField(\"shape\"),recno)\n end\nend\nif (theFeature = nil) then\n MsgBox.Info(\"No selected feature found\",\"Mask\")\n exit\nend\nif (not (theFeature.Is(polygon))) then\n MsgBox.Info(\"Last sel ected feature found is not polygon\",\"Mask\")\n exit\nend\n\n'**** create mask graphic\n\ntheList = theFeature.Clone.AsList\nplist = theView.ReturnExtent.AsPolygon.AsList.Get(0)\ntheList.insert(plist)\np = Polygon.Make(theList)\ng = GraphicShape.Make(p)\ng.SetSelected(TRUE)\ntheGraphicList.Add(g)\n" ) (List.19 Child: 20 Child: 22 Child: 23 Child: 25 Child: 27 Child: 29 Child: 31 Child: 33 Child: 35 Child: 37 Child: 39 Child: 40 ) (Butn.20 Help: "Open Project//Open Project" Icon: 21 Click: "Project.Open" ) (AVIcon.21 Name: "Open" Res: "Icons.Open" ) (Choice.22 Help: "Use field in active theme to populate legend description" Update: "View.ActiveThemesUpdate" Label: "Legend Text Item" Click: "View.LegendTextItem" Shortcut: "Keys.None" ) (Butn.23 Help: "Copy/Paste Extent//Copy/Paste View Extent and Scale" Update: "View.CopyView.Update" Icon: 24 Click: "View.CopyView" ) (AVIcon.24 Name: "cv.bmp" Data: 4e442049 6d616765 00010010 00100000 Data: 00807777 77777777 77777777 77700000 Data: 00007700 0000ffff fff07087 8780ffcc Data: cff07088 8880fcaa ccf07087 8780fcaa Data: ccf07088 8880ffcc cff07088 8780ffff Data: fff07088 88800000 00007087 87878787 Data: 87077088 00000000 88077088 0ffffff0 Data: 87077088 80f00f08 88077700 000ff000 Data: 00777777 77000077 77777777 77777777 Data: 77770000 00400000 00000000 80000080 Data: 00000080 80008000 00008000 80008080 Data: 0000c0c0 c0008080 80000000 ff0000ff Data: 000000ff ff00ff00 0000ff00 ff00ffff Data: 0000ffff ff000002 00040007 00200001 Data: 00020000 00000000 0000 ) (Butn.25 Help: "Mask View//Mask View to Selected Feature" Icon: 26 Click: "View.Mask" ) (AVIcon.26 Name: "mask.bmp" Data: 4e442049 6d616765 00010010 00100000 Data: 01000f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f Data: 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f Data: 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f Data: 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f Data: 0f0f0f0f 0f000000 0f0f0f0f 0000000f Data: 0f0f0f0f 00000000 000f0f00 00000000 Data: 0f0f0f00 00000000 00000000 00000000 Data: 000f0000 000e0e0e 00000000 0e0e0e00 Data: 00000000 000e0e0e 00000000 0e0e0e00 Data: 00000f00 00000000 00000000 00000000 Data: 000f0f0f 00000000 000f0f00 00000000 Data: 0f0f0f0f 0f000000 0f0f0f0f 0000000f Data: 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f Data: 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f Data: 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f Data: 0f0f0f0f 0f0f0f0f 0f0f0f0f 0f0f0f0f Data: 0f0f0000 04000000 00008080 80000000 Data: 80000080 80000080 00008080 00008000 Data: 00008000 80004080 80004040 0000ff80 Data: 00008040 0000ff00 40000040 8000ffff Data: ff00c0c0 c0000000 ff0000ff ff0000ff Data: 0000ffff 0000ff00 0000ff00 ff0080ff Data: ff0080ff 0000ffff 8000ff80 80008000 Data: ff004080 ff000200 c4000200 dc000000 Data: 00000000 0000f5fa 4e008e01 0b000000 Data: 54000200 30000000 11000000 04000000 Data: 00000000 00000000 00000000 00000000 Data: a000ba7f 00000000 1c005b00 d8005b00 Data: b800b87f ff00ffff bc005b00 2600b77f Data: 98005d00 30000000 0a000000 01000000 Data: 00000000 a4005b00 12000000 6300f7bf Data: 30000000 0a000000 01000000 00000000 Data: 5f00ec84 3f000000 d0005b00 2300f7bf Data: 00000000 ef000100 e500f9bf 7900f7bf Data: 0c000000 f4005b00 2e00f7bf 5f00ec84 Data: 00000000 ec00ef0c 00000000 46000000 Data: 4a000200 2e000000 e700f7bf 3f002701 Data: 0000ef0c 3f002701 5000fa3b 07000400 Data: 00000000 0000f91a b7000000 00000100 Data: 00000a00 0000fa3b 10000000 00000000 Data: 3c00d379 ff00ef0c 5000413c 0700ffff Data: ef000000 0000ef0c 3f00545e 8c000000 Data: 0300f91a b700e782 a7000000 00000000 Data: 01000a00 30003f01 00000800 0000e717 Data: 5900b77f 14005b00 94005b00 0700b87f Data: ff00ffff a0005b00 e200b77f 14005b00 Data: ac005b00 c200b87f ff00ffff b8005b00 Data: b000b77f 14005b00 c4005b00 3500b87f Data: ff00ffff d0005b00 61004100 14005b00 Data: dc005b00 6e004100 ff00ffff e8005b00 Data: c1004100 14005b00 f4005b00 dc004100 Data: ff00ffff 00005b00 18004100 14005b00 Data: f4005b00 25004100 ff00ffff 00005b00 Data: 9c004100 11000000 01000000 00000000 Data: 9800ba7f 01000000 00000000 00000000 Data: 00000000 24001201 01000000 00000000 Data: 00000000 3a001580 00000000 00000000 Data: 05000000 00000000 00000000 00000000 Data: 00000000 4c000000 30000000 00000000 Data: 54005d00 00000000 05000000 03000000 Data: c0005d00 04000000 b4005b00 40000000 Data: 00000000 78005d00 26000800 10001500 Data: d8005d00 00000000 f200b87f 00000000 Data: 00000000 c800bb7f 00000000 00000000 Data: 6d00736b 2e006d70 00005d00 6c005b00 Data: 4700b77f 20000000 7c000000 01000002 Data: 01000002 a800b77f 8a00b77f 1800a670 Data: 0a000000 00000000 e0005b00 fe002f3c Data: 0a007406 c600a670 3e004e87 dc000000 Data: 00000000 0000a670 0000803d 00004849 Data: 00002487 50001701 8c001405 00000000 Data: 02009204 00000000 a6000000 00004849 Data: 00006687 00004e87 00000000 00000100 Data: 00000000 c8000000 5a00507f 1700537f Data: 8000174a 2f009487 6e001701 64002f01 Data: 00000000 c8000000 94000000 84000000 Data: 10000000 17000000 01000000 80000000 Data: 00002f01 c7000202 bf00a0c7 170000f3 Data: 80005d00 10000000 aa00507f 1700537f Data: 10002979 6600a670 a600af05 ec00ac11 Data: 5f00321a f6000002 00080007 00200001 Data: 00020000 00000000 0000 ) (Tool.27 Help: "Georeference Image//Georeference Image" Update: "View.ImageThemesUpdate" Icon: 28 Cursor: "Cursors.CrossHair" Apply: "View.GeoRefImage" ) (AVIcon.28 Name: "gr_ico.bmp" Data: 4e442049 6d616765 00010020 00200000 Data: 0200aaaa aaaaaaaa aaaaaaaa aaaaaaaa Data: aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa Data: aaaacccc caaaaaaa aaaaaaaa aaaaaaaa Data: aaaaaaaa cccaaaaa aaaaaaaa aaaaaaaa Data: aaaaaaaa aaccaaaa aaaaaaaa aaaaaaaa Data: aaaaaaaa aaacaaaa aaaaaaaa aaaaaaaa Data: aaaaaaaa aaaccaaa aaaaaaaa aaaaaaaa Data: aaaaaaaa aaaacaaa aaaaaaaa aaaaaaaa Data: aaaaaaaa aaaaacaa aaaaaaaa aaaaaaaa Data: aaaaaaaa aaaaaaca aaa0aaaa aaaaaaaa Data: aaaaaaaa aaaaaacc aaa0aaaa aaaaaaaa Data: aaaaaaaa aaaaaaac aaa0aaaa aaaaaaaa Data: aaaaaaaa aaaaaaaa caa0aaaa aaaaaaaa Data: aaaaaaaa aaaaaaaa caa0aaaa aaaaaaaa Data: aaaaaaaa aaaaaaaa caa0aaaa aaaaaaaa Data: aaaaaaaa aaaaaaaa caa0aaaa aaaaaaaa Data: aaaaaaaa aaaa0000 00000000 000aaaaa Data: aaaaaaaa aaaaaaaa aca0aaaa aaaaaaaa Data: aaaaaaaa aaaaaaaa acc0aaaa accccccc Data: caaaaaaa aaaaaaaa aaa0cccc cccccccc Data: cccaaaaa aaaaaaaa aaa0aaaa accccccc Data: ccccaaaa aaaaaaaa aaa0aaaa aacccccc Data: ccccaaaa aaaaaaaa aaa0aaaa aacccccc Data: ccccaaaa aaaaaaaa aaa0aaaa aaaccccc Data: ccccaaaa aaaaaaaa aaaaaaaa aaaccccc Data: ccccaaaa aaaaaaaa aaaaaaaa aaaacccc Data: ccccaaaa aaaaaaaa aaaaaaaa aaaacccc Data: ccccaaaa aaaaaaaa aaaaaaaa aaaaaccc Data: ccccaaaa aaaaaaaa aaaaaaaa aaaaaacc Data: ccccaaaa aaaaaaaa aaaaaaaa aaaaaacc Data: ccccaaaa aaaaaaaa aaaaaaaa aaaaaaac Data: ccccaaaa aaaaaaaa aaaaaaaa aaaaaaaa Data: cccc0000 00400000 00000000 80000080 Data: 00000080 80008000 00008000 80008080 Data: 0000c0c0 c0008080 80000000 ff0000ff Data: 000000ff ff00ff00 0000ff00 ff00ffff Data: 0000ffff ff000002 00040007 00200001 Data: 00020000 00000000 0000 ) (Butn.29 Disabled: 1 Help: "Arrowhead//Add Arrowhead" Update: "Graphic.IsOneLine" Icon: 30 Click: "Graphic.AddArrowhead" ) (AVIcon.30 Name: "arrow.bmp" Data: 4e442049 6d616765 00010010 00100000 Data: 00807777 77777777 77777777 77777777 Data: 77777777 77777777 70777777 77777770 Data: 00777777 77777000 07777777 77700000 Data: 07777777 70000000 77777770 00000000 Data: 77777000 00000007 77777770 00000000 Data: 77777777 70000000 77777777 77700000 Data: 07777777 77777000 07777777 77777770 Data: 00777777 77777777 70777777 77777777 Data: 77770000 00400000 00000000 80000080 Data: 00000080 80008000 00008000 80008080 Data: 0000c0c0 c0008080 80000000 ff0000ff Data: 000000ff ff00ff00 0000ff00 ff00ffff Data: 0000ffff ff000002 00040007 00200001 Data: 00020000 00000000 0000 ) (Tool.31 Help: "Import Text//Import Text" Icon: 32 Cursor: "Cursors.Finger" Apply: "Layout.PutTextFile" ) (AVIcon.32 Name: "FrameText" Res: "Icons.FrameText" ) (Tool.33 Help: "Scalebar//Create Scalebar" Update: "Layout.ScalebarUpdate" Icon: 34 Cursor: "Cursors.CrossHair" Apply: "Layout.Scalebar" ) (AVIcon.34 Name: "FrameScalebar" Res: "Icons.FrameScalebar" ) (Butn.35 Help: "Clear Selection//Unselect all graphics" Update: "Graphic.HasSelectionUpdate" Icon: 36 Click: "Layout.UnselectAllGraphics" ) (AVIcon.36 Name: "SelectNone" Res: "Icons.SelectNone" ) (Butn.37 Help: "Legend text size//Set text size of legend frame" Update: "Layout.LegendTSUpdate" Icon: 38 Click: "Layout.LegendTextSize" ) (AVIcon.38 Name: "FrameLegend" Res: "Icons.FrameLegend" ) (Choice.39 Help: "Create copies of selected document(s)" Label: "Copy" Click: "Doc.Clone" Shortcut: "Keys.None" ) (Choice.40 Help: "Duplicates selected graphics" Update: "Graphic.HasSelectionUpdate" Label: "Duplicate" Click: "Graphic.Duplicate" Shortcut: "Keys.Ctrl+D" ) (Script.41 Name: "Ext.Install" SourceCode: "'Ext.Install\n\n'**** check if a project is open\n\nif (av.GetProject = nil) then\n return nil\nend\n\n'**** add scripts\n\ntheScripts = Self.Get(0)\nfor each s in theScripts\n if (av.FindScript(s.GetName) = nil) then\n av.GetProject.AddScript(s)\n end\nend\n\n'**** add controls\n\ntheControls = Self.Get(1)\n\n'**** open project button\n\nProjGui = av.FindGUI(\"Project\")\ntheButtonBar = ProjGUI.GetButtonBar\nif (theButtonBar.FindByScript(\"Project.Open\") = nil) then\n pos = 999\n i = -1\n for each c in theButtonBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"Project.Save\") then\n pos = i\n break\n end\n end\n theButtonBar.Add(theControls.Get(0), pos)\nend\n\n'**** \"Legend Text Item\" menu item\n\nViewGUI = av.GetProject.FindGUI(\"View\")\ntheMenu = ViewGUI.GetMenuBar.FindByLabel(\"Theme\")\nif (theMenu.FindByScript(\"View.LegendTextItem\") = nil) then\n pos = 999\n i = -1\n for each c in theMenu\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"View.EditLegendClick\") then\n pos = i\n break\n end\n end\n theMenu.Add(theControls.Get(1), pos)\nend\n\n'**** View position copy/paste button\n\ntheButtonBar = ViewGUI.GetButtonBar\nif (theButtonBar.FindByScript(\"View.CopyView\") = nil) then\n pos = 999\n i = -1\n for each c in theButtonBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"View.UndoZoom\") then\n pos = i\n break\n end\n end\n theBu ttonBar.Add(theControls.Get(2), pos)\nend\n\n'**** View mask button\n\nif (theButtonBar.FindByScript(\"View.Mask\") = nil) then\n pos = 999\n i = -1\n for each c in theButtonBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"View.CopyView\") then\n pos = i\n break\n end\n end\n theButtonBar.Add(theControls.Get(3), pos)\nend\n\n'**** Image registration tool\n\ntheToolBar = ViewGUI.GetToolBar\nif (theToolBar.FindByScript(\"View.GeoRefImage\") = nil) then \n pos = 999\n i = -1\n for each c in theToolBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.Is(ToolMenu)) then\n found = false\n for each cc in c.GetControls\n if (cc.GetApply = \"View.Pan\") then\n found = true\n break\n end\n end\n if (found) then\n pos = i\n break\n end\n continue\n end\n if (c.GetApply = \"View.Pan\") then\n pos = i\n break\n end\n end\n theToolBar.Add(theControls.Get(4), pos)\nend\n\n'**** Arrowhead button\n\nLayoutGUI = av.FindGui(\"Layout\")\ntheButtonBar = LayoutGUI.GetButtonBar\nif (theButtonBar.FindByScript(\"Graphic.AddArrowhead\") = nil) then\n pos = 999\n i = -1\n for each c in theButtonBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"Graphic.ToBack\") then\n pos = i\n break\n end\n end\n theButtonBar.Add(theControls.Get(5), pos)\nend\n\n'**** Textfile tool \n\ntheToolBar = LayoutGUI.GetToolBar\nif (theToolBar.FindByScript(\"Layout.PutTextFile\") = nil) then\n pos = 999\n i = -1\n for each c in theToolBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.Is(ToolMenu)) then\n found = false\n for each cc in c.GetControls\n if (cc.GetApply = \"Layout.Text\") then\n found = true\n break\n end\n end\n if (found) then\n pos = i\n break\n end\n continue\n end\n if (c.GetApply = \"Layout.Text\") then\n pos = i\n break\n end\n end\n theToolBar.Add(theControls.Get(6), pos)\nend\n\n'**** Point-and-click scalebar tool\n\nif (theToolBar.FindByScript(\"Layout.Scalebar\") = nil) then\n pos = 999\n i = -1\n for each c in theToolBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.Is(ToolMenu)) then\n found = false\n for each cc in c.GetControls\n if (cc.GetApply = \"Layout.FrameView\") then\n found = true\n break\n end\n end\n if (found) then\n pos = i\n break\n end\n continue\n end\n if (c.GetApply = \"Layout.FrameView\") then\n pos = i\n break\n end\n end\n theToolBar.Add(theControls.Get(7), pos)\nend\n\n'**** Clear selection button\n\nif (theButtonBar.FindByScript(\"Layout.UnselectAllGraphics\") = nil) then\n pos = 999\n i = -1\n for each c in theButtonBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"Graphic.ToBack\") then\n pos = i\n break\n end\n end\n theButtonBar.Add(theControls.Get(8), pos)\nend\n\n'**** Legend text size button\n\nif (theButtonBar.FindByScript(\"Layout.LegendTextSize\") = nil) then\n pos = 999\n i = -1\n for each c in theButtonBar\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"Layout.UnselectAllGraphics\") then\n pos = i\n break\n end\n end\n theButtonBar.Add(theControls.Get(9), pos)\nend\n\n'**** \"Copy documents\" menu item\n\nProjGUI = av.GetProject.FindGUI(\"Project\")\ntheMenu = ProjGUI.GetMenuBar.FindByLabel(\"Project\")\nif (theMenu.FindByScript(\"Doc.Clone\") = nil) then\n pos = 999\n i = -1\n for each c in theMenu\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"Project.Delete\") then\n pos = i\n break\n end\n end\n theMenu.Add(theControls.Get(10), pos)\nend\n\n'**** \"Duplicate\" menu item\n\nLayoutGUI = av.GetProject.FindGUI(\"Layout\")\ntheMenu = LayoutGUI.GetMenuBar.FindByLabel(\"Edit\")\nif (theMenu.FindByScript(\"Graphic.Duplicate\") = nil) then\n pos = 999\n i = -1\n for each c in theMenu\n i = i + 1\n if (c.Is(Space)) then\n continue\n end\n if (c.GetClick = \"Layout.Clear\") then\n pos = i\n break\n end\n end\n theMenu.Add(theControls.Get(11), pos)\nend\n\n'**** Done!\n\nProjGUI.SetModified(TRUE)\nViewGUI.SetModified(TR UE)\nLayoutGUI.SetModified(TRUE)\nav.GetProject.SetModified(TRUE)\nSELF.Unload\n\n\n" ) (Script.42 Name: "Ext.Uninstall" SourceCode: "return nil\n" )