using Gtk; using System; public class Fault:TerrPlugin{ mutable host:TerrHost; public Host:TerrHost { set { host=value; } } mutable nr:int; //settings mutable sLines=400; //nr of lines mutable sDispl=2; //displacement //-------------------------------------------------------------------------------------------------------------- public Register(n:int):void{ nr=n; def mItem=MenuItem("fault"); host.MGener.Append(mItem); mItem.Activated+=EventHandler(optionsWin); } //-------------------------------------------------------------------------------------------------------------- public Run():void{ host.Start(nr); def r=Random(); def progStep=1/sLines:>double; def map=host.HMap; def sizeX=map.SizeX; def sizeY=map.SizeY; for (mutable x=0; x0) map[x,y]+=sDispl else map[x,y]-=sDispl; host.ProgBar.FractionAddResp(progStep); } host.Update(); } //-------------------------------------------------------------------------------------------------------------- private optionsWin(_o:object,_e:EventArgs):void{ def win=Window("fault"); win.BorderWidth=5; def tips=Tooltips(); def whole=VBox(false,10); win.Add(whole); def sett=VBox(false,10); whole.PackStart(sett); def linesHBox=HBox(false,10); sett.PackStart(linesHBox); def linesLab=Label("lines:"); linesHBox.PackStart(linesLab); def linesSpin=SpinButton(0.0,1000,1.0); linesHBox.PackStart(linesSpin); tips.SetTip(linesSpin,"nr of lines",""); linesSpin.Value=sLines; linesSpin.ValueChanged+=fun(_) { sLines=linesSpin.ValueAsInt; } def displHBox=HBox(false,10); sett.PackStart(displHBox); def displLab=Label("displacement:"); displHBox.PackStart(displLab); def displSpin=SpinButton(0.0,100,0.1); displHBox.PackStart(displSpin); tips.SetTip(displSpin,"displacement behind lines",""); displSpin.Value=sDispl; displSpin.ValueChanged+=fun(_) { sDispl=displSpin.ValueAsInt; } def buttBox=HBox(false,10); whole.PackStart(buttBox); def aboutButt=Button("about"); buttBox.PackStart(aboutButt); aboutButt.Clicked+=EventHandler(aboutButtHandler); def cancelButt=Button("cancel"); buttBox.PackStart(cancelButt); cancelButt.Clicked+=fun(_) { win.Destroy(); } def okButt=Button("ok"); buttBox.PackStart(okButt); okButt.Clicked+=fun(_) { Run(); win.Destroy(); } win.ShowAll(); } //-------------------------------------------------------------------------------------------------------------- private aboutButtHandler(_o:object,_e:EventArgs):void{ def dial=MessageDialog(null,DialogFlags.Modal,MessageType.Info,ButtonsType.Ok,"fault algorithm plugin 0.3:0.3 by caminoix, 27.08.2006\n\nfor more information on the algorithm please see\nhttp://terraineer.sourceforge.net/plugins/fault.php"); _=dial.Run(); dial.Destroy(); } }