Beispiel #1
0
func (x *Imp) changeWithMouse(p Period, vertical bool, a, l, c, l0, c0 uint) {
	//
	if !scr.MouseEx() {
		return
	}
	switch p {
	case Daily, Decadic:
		return
	default:
	}
	lm, cm := scr.MousePos()
	//  if p == Yearly { SM += leftMargin }
	y := x.Clone().(*Imp)
	y.SetBeginning(p)
	A := y.Clone().(*Imp)
	y.SetFormat(Dd_mm_yy)
	n := length[x.fmt]
	var lpos, cpos uint
	for {
		n = length[x.fmt]
		if !y.Equiv(A, p) {
			break
		}
		switch p {
		case Weekly:
			lpos, cpos = y.PosInWeek(vertical, a)
			lpos += l0
			cpos += c0
		case Monthly:
			lpos, cpos = y.PosInMonth(vertical, a, l, c)
			lpos += l0
			cpos += c0
		case Quarterly:
			errh.Error("in "+pack+" not yet implemented", 3)
			return
		case HalfYearly:
			errh.Error("in "+pack+" not yet implemented", 6)
			return
		case Yearly:
			n = 2
			lpos, cpos = y.PosInYear()
		default:
		}
		if lm == lpos && cpos <= cm && cm < cpos+n {
			y.Copy(x)
			break
		} else {
			y.Inc(Daily)
		}
	}
}
Beispiel #2
0
func NodesSelected() bool {
	//
	scr.MouseCursor(true)
	g := false
	for {
		errh.Hint("Start auswählen")
		if ausgewaehlt(Ecke) { // Ecke aktuell
			Graph.Position(true) // Ecke postaktuell
			Write()
			errh.Hint("Ziel auswählen")
			if ausgewaehlt(Ecke1) { // Ecke1 aktuell
				errh.DelHint()
				if Graph.Positioned() {
					errh.Error("Fehler: Start und Ziel sind gleich !", 0)
				} else {
					g = true
					break
				}
			}
		} else {
			break
		}
	}
	Write()
	errh.DelHint()
	scr.MouseCursor(false)
	return g
}
Beispiel #3
0
func (f *Imp) On(a, b int, t uint) bool {
	//
	if !f.Empty() {
		switch f.sort {
		case Pointset, Segments:
			return scr.OnSegments(f.x, f.y, a, b, t)
		case Polygon:
			return scr.OnPolygon(f.x, f.y, a, b, t)
		case Curve:
			return scr.OnCurve(f.x, f.y, a, b, t)
		case InfLine:
			return scr.OnInfLine(f.x[0], f.y[0], f.x[1], f.y[1], a, b, t)
		case Rectangle:
			return scr.OnRectangle(f.x[0], f.y[0], f.x[1], f.y[1], a, b, t)
		case Circle:
			return scr.OnCircle(f.x[0], f.y[0], uint(f.x[1]), a, b, t)
		case Ellipse:
			return scr.OnEllipse(f.x[0], f.y[0], uint(f.x[1]), uint(f.y[1]), a, b, t)
		case Text:
			if len(f.x) != 2 {
				errh.Error("Incident case Text: len (f.x) ==", uint(len(f.x)))
			}
			return scr.OnRectangle(f.x[0], f.y[0], f.x[1], f.y[1], a, b, t) // crash: TODO
		case Image:
			return scr.InRectangle(f.x[0], f.y[0], f.x[1], f.y[1], a, b) // , t
		}
	}
	return false
}
Beispiel #4
0
func (x *Imp) ActualizePred(p Pred) {
	//
	n := x.nodeAnchor.nextN
	if n == x.nodeAnchor {
		errh.Error("#", 10)
		return
	}
	if !p(x.actual.content) {
		// errh.Error ("#", 11)
		return
	}
	x.clearSubgraph()
	if !x.ConnCond(p) {
		// errh.Error ("#", 12)
		return
	}
	x.preBreadth()
	if x.edgeAnchor.attrib == nil {
		x.breadthfirstSearch(p)
	} else {
		// errh.Error ("shortest Path", 0)
		x.searchShortestPath(p)
	}
	x.path = nil
	n = x.actual
	for n != nil {
		x.path = insert(x.path, n, 0)
		n = n.predecessor
	}
	x.defineSubgraph(x.actual)
}
Beispiel #5
0
func Select() {
	//
	name, filename := sel.Names("Graphik:", suffix, 64, 0, 0, col.ScreenF, col.ScreenB)
	if name == "" {
		errh.Error("nicht vorhanden", 0)
		Clr()
	} else {
		Name(filename)
	}
}
Beispiel #6
0
func (x *Imp) Edit(l, c uint) {
	//
	s := x.String()
	w := uint(len(s))
	N := scr.NColumns()
	if c >= N-w {
		x.Write(l, c)
		errh.Error("zu wenig Platz auf dem Bildschirm", 0) // TODO
		return
	}
	bx.Wd(N - 1 - c)
	bx.Edit(&s, l, c)
	for {
		if x.Defined(s) {
			break
		} else {
			errh.Error("keine Zahl", 0)
		}
	}
	x.Write(l, c)
}
Beispiel #7
0
func (x *Imp) Edit(l, c uint) {
	//
	x.Write(l, c)
	s := x.String()
	err := uint(0)
	for {
		bx.Edit(&s, l, c)
		if x.Defined(s) {
			s = x.String()
			bx.Write(s, l, c)
			return
		} else {
			err++
			switch err {
			case 1: // --> errh.WriteError
				errh.Error("Die Uhrzeitangabe ist unverständlich!", 0) // , l + 1, c)
			case 2:
				errh.Error("Bitte wiederholen Sie die Uhrzeitangabe, sie ist immer noch unverständlich !", 0) // , l + 1, c)
			case 3:
				errh.Error("Jetzt passen Sie doch gefälligst auf !", 0) // l + 1, c)
			case 4:
				errh.Error("Was soll der Quatsch? Ist das eine Uhrzeit ?", 0) // l + 1, c)
			case 5:
				errh.Error("Schaffen Sie es nicht, eine Uhrzeit richtig einzugeben ?", 0) // l + 1, c)
			default:
				errh.Error("Vergessen Sie's ...", 0) // , l + 1, c)
				x.Actualize()
				return
			}
		}
	}
}
Beispiel #8
0
func Want(y, m, d uint) {
	//
	wanted := day.New()
	wanted.SetFormat(day.Yymmdd)
	if wanted.Set(d, m, 2000+y) {
		if v.Less(wanted) {
			errh.Error("Your murus "+v.String()+" is outdated. You need "+wanted.String()+".", 0)
			ker.Halt(-1)
		}
	} else {
		ker.Panic("parameters for v.Want are nonsense")
	}
}
Beispiel #9
0
func (x *Imp) Edit(l, c uint) {
	//
	x.Write(l, c)
	s := x.String()
	for {
		bx.Edit(&s, l, c)
		if x.Defined(s) {
			break
		} else {
			errh.Error("falsche Eingabe", 0)
		}
	}
}
Beispiel #10
0
func init() {
	//
	//  var x World = New(); if x == nil {} // ok
	if !scr.Switchable(scr.WVGApp) {
		errh.Error("Bildschirmauflösung kleiner als 1024 x 576", 0)
		ker.Terminate()
		os.Exit(0)
	} else {
		scr.Switch(scr.WVGApp)
	}
	help[0] = "Hilfe ist noch nicht implementiert" // TODO
	files.Cd0()
}
Beispiel #11
0
func (F *files) read(B []byte) uint {
	//
	F.open()
	if !F.isOpen {
		errh.Error(F.file.Name(), uint(F.offset))
	}
	r := len(B)
	//  r, F.err = F.file.ReadAt (B, int64(F.offset)) // macht Zicken
	_ /* off */, _ = F.file.Seek(int64(F.offset), 0) // ; F.report ("read", "Seek at offset", uint(off))
	r, _ = F.file.Read(B)                            // ; F.report ("Read", "at offset", uint(off))
	F.offset += uint64(r)
	return uint(r)
}
Beispiel #12
0
func (x *Imp) Edit(l, c uint) {
	//
	x.Write(l, c)
	s := x.String()
	for {
		bx.Edit(&s, l, c)
		if x.Defined(s) {
			break
		} else {
			errh.Error("keine Zahl", 0)
		}
	}
	x.Write(l, c)
}
Beispiel #13
0
func (x *Imp) Edit(l, c uint) {
	//
	bx.Wd(width)
	s := x.String()
	for {
		bx.Edit(&s, l, c)
		if x.Defined(s) {
			break
		} else {
			errh.Error("keine Telefonnummer", 0)
		}
	}
	x.Write(l, c)
}
Beispiel #14
0
func (x *Imp) Edit(l, c uint) {
	//
	s := x.String()
	bx.Colours(x.cF, x.cB)
	for {
		bx.Edit(&s, l, c)
		if x.Defined(s) {
			break
		} else {
			errh.Error("kein Geldbetrag", 0) // l + 1, c)
		}
	}
	x.Write(l, c)
}
Beispiel #15
0
func (x *Imp) Edit(l, c uint) {
	//
	s := x.String()
	bx.Colours(x.cF, x.cB)
	for {
		bx.Edit(&s, l, c)
		if x.Defined(s) {
			break
		} else {
			errh.Error("Format: Z = \"0\"|\"1\"|...|\"9\", [\"+\"|\"-\"] Z{Z}[/Z{Z}]; jeweils maximal 9 Ziffern", 0)
		}
	}
	x.reduce()
	x.Write(l, c)
}
Beispiel #16
0
func (x *Imp) Edit(l, c uint) {
	// func (v *Imp) Edit (p ... uint) {
	//
	s := x.String()
	m := uint(len(s))
	bx.Wd(m)
	for {
		bx.Edit(&s, l, c)
		//    bx.Edit (&s, p[0], p[1])
		if x.Defined(s) {
			break
		} else {
			errh.Error("kein Vektor", 0)
		}
	}
}
Beispiel #17
0
func (x *Imp) Edit(Z, S uint) {
	//
	T := txt[x.a]
loop:
	for {
		bx.Edit(&T, Z, S)
		for a := undef; a < NAttrs; a++ {
			if T[0] == txt[a][0] {
				x.a = a
				x.Write(Z, S)
				break loop
			}
		}
		errh.Error(Hilfetext, 0)
	}
}
Beispiel #18
0
func main() {
	const a = 100
	var p []string = []string{"Anaxagoras", "Aristoteles", "Cicero", "Jemand", "Demokrit", "Diogenes", "Epikur", "Heraklit", "Platon", "Protagoras", "Pythagoras", "Sokrates", "Thales", "Niemand"}
	var x, y uint
	for _, s := range p {
		img.Get(s, x, y)
		errh.Error(s, 0)
		if x+2*a < scr.NX() {
			x += a
		} else {
			x = 0
			y = a
		}
	}
	errh.Error2("", uint(len(p)), "Philosophen", 0)
	ker.Terminate()
}
Beispiel #19
0
func (x *Imp) Edit(l, c uint) {
	//
	bx.Wd(x.length)
	bx.Colours(x.cF, x.cB)
	var input string
	for {
		input = x.rep[x.val]
		bx.Write(input, l, c)
		bx.Edit(&input, l, c)
		if x.Defined(input) {
			break
		} else {
			errh.Error("Eingabe unverständlich", 0) // , l + 1, c)
		}
	}
	x.Write(l, c)
}
Beispiel #20
0
func edit(z *int, l, c uint) {
	//
	w := Wd(*z)
	if width > w {
		w = width
	}
	bx.Wd(w)
	s := StringFmt(*z, w)
	for {
		bx.Edit(&s, l, c+1-w)
		if defined(z, s) {
			break
		} else {
			errh.Error("keine Zahl", 0) // , l + 1, c)
		}
	}
	bx.Write(StringFmt(*z, w), l, c+1-w)
}
Beispiel #21
0
func (x *Imp) Edit(Z, S uint) {
	//
	bx.Colours(x.cF, x.cB)
	var l uint
	for {
		switch x.fmt {
		case Tld:
			l = 2
			bx.Edit(&x.att.tld, Z, S)
		case Long:
			l = length
			bx.Edit(&x.att.name, Z, S)
		default:
			return
		}
		var T uint
		if kbd.LastCommand(&T) == kbd.LookFor {
			n := uint(x.cnt)
			sel.Select(func(P, Z, S uint, V, H col.Colour) { x.att = Folge[country(P)]; x.SetColours(V, H); x.Write(Z, S) },
				noNations, scr.NLines(), l, &n, Z, S, x.cB, x.cF)
			if country(n) == noNations {
				n = uint(x.cnt) // Nation unverändert
			} else {
				x.cnt = country(n)
			}
			x.att = Folge[x.cnt]
			break
		} else {
			var ok bool
			switch x.fmt {
			case Tld:
				ok = x.Defined(x.att.tld)
			case Long:
				ok = x.Defined(x.att.name)
			}
			if ok {
				break
			} else {
				errh.Error("kein Land", 0)
			}
		}
	}
	x.Write(Z, S)
}
Beispiel #22
0
func (x *Imp) SetFormat(p day.Period) {
	//
	aktuellesFormat = p
	dz = 1
	//  if x.anzahl == 0 { return }
	switch aktuellesFormat {
	case day.Daily:
		x.termin[0].SetFormat(termin.Lang)
	case day.Weekly:
		x.termin[0].SetFormat(termin.Kurz)
	case day.Monthly:
		x.termin[0].SetFormat(termin.Kurz) // GanzKurz
		dz = 0
		// aus den Terminen werden nur die Terminattribute gebraucht
	default:
		errh.Error("seq.SetFormat default: Quatsch", 0)
		x.termin[0].SetFormat(termin.GanzKurz)
		dz = 0
	}
}
Beispiel #23
0
func clearAll(D *day.Imp) {
	//
	switch period {
	case day.Monthly, day.Weekly:
		if D.Empty() {
			return
		}
	default:
		return
	}
	D1 := day.New()
	D1.Copy(D)
	D1.SetBeginning(period)
	cal.SetFormat(period)
	for D.Equiv(D1, period) {
		l, c := pos(D1)
		errh.Error("Tag Nr.", D1.OrdDay())
		cal.ClearDay(D1, l0+l, c0+c)
		D1.Inc(day.Daily)
	}
}
Beispiel #24
0
func (x *Imp) Edit(l, c uint) {
	//
	x.Write(l, c)
	s := x.String()
	for {
		bx.Edit(&s, l, c)
		var d uint
		cmd := kbd.LastCommand(&d)
		if cmd == kbd.LookFor {
			if x.selected(l, c) {
				break
			}
		}
		if x.Defined(s) {
			break
		} else {
			errh.Error("geht nicht", 0)
		}
	}
	x.Write(l, c)
}
Beispiel #25
0
func New0(a Any, h string, p uint16, o bool) *Imp {
	//
	if str.Empty(h) || p >= 1<<16-Port0 {
		return nil
	}
	if a == nil {
		a = false
	}
	x := new(Imp)
	if tst {
		println("nchan.New0 started for host", h, "/ port", p)
	}
	x.object, x.width = Clone(a), Codelen(a)
	str.RemSpaces(&h)
	x.farHost = host.New()
	if !x.farHost.Defined(h) {
		errh.Error("Hostname "+h+" is not resolvable", 0)
		Stop(pack, 1)
	}
	x.isServer = host.Local(h)
	x.server = h
	x.port = Port0 + p
	x.oneOne = o
	if x.oneOne {
		if x.isServer {
			x.isServer = first(x.port)
		} else {
			x.isServer = x.farHost.Sonstewas()
		}
	}
	x.buf = make([]byte, x.width)
	//  x.info = true
	if tst {
		println("nchan.New0 for host", h, "is done")
	}
	return x
}
Beispiel #26
0
func NeuerRoboter() *Imp {
	//
	var archiviert bool
	r := Roboterwelt.schatten.freieNummer(&archiviert)
	if r == niemand { // nix geht mehr
		//    errh.Error ("Die Roboterwelt ist voll !", 0)
		return nil // besser: Error erzeugen, der abgefragt werden kann
	}
	R := new(Imp)
	if archiviert {
		// println ("NeuerRoboter schon im Archiv enthalten")
		Roboterwelt.schatten.restaurieren(R, r)
	} else {
		R.nr = r
		// println ("NeuerRoboter hat die Nummer ", r)
		R.Y = 0
		R.X = uint(R.nr)
		if !platzDa(&(R.Y), &(R.X)) { // Vorsicht, X jetzt erhöht, weil schon im Schattenarchiv !
			// println ("Neuer Roboter: nach ! platzDa, Pos = ", R.Y, "/", R.X)
			errh.Error("kein Platz mehr frei für Roboter", 0)
			return nil
		}
		R.richtung = Sued
		R.tasche = MaxK
		for y := null; y < nY; y++ {
			for x := null; x < nX; x++ {
				if y == R.Y && x == R.X {
					R.tasche -= Roboterwelt.kloetze(y, x)
				}
			}
		}
		Roboterwelt.schatten.archivieren(R)
	}
	R.aktionen = make([]Aktion, 0)
	return R
}
Beispiel #27
0
func tst(n uint) {
	//
	println("Testpunkt ", n)
	return
	errh.Error("Testpunkt", n)
}
Beispiel #28
0
func (R *Imp) FehlerMelden(Text string, n uint) {
	//
	errh.Error(Text, n)
}
Beispiel #29
0
func (f *Imp) Edit() {
	//
	if f.Empty() {
		scr.Colour(f.colour)
		f.x, f.y = make([]int, 1), make([]int, 1)
		f.x[0], f.y[0] = scr.MousePosGr()
		switch f.sort {
		case Pointset, Segments, Polygon, Curve:
			f.editN()
		case InfLine, Rectangle, Circle, Ellipse:
			f.edit1()
		case Text:
			f.editText()
		case Image:
			//      ALLOCATE (Imageptr, Groesse())
			//      img.Get (tx [...], Imageptr)
			f.editImage()
		}
		if f.x == nil {
			f.Clr()
		}
	} else {
		n := uint(len(f.x))
		errh.Error("Figur hat Länge", n)
		switch f.sort {
		case Text:
			f.editText()
		case Image:
			f.editImage()
		default:
			f.Erase()
			f.Invert()
			if true { // f.sort == Curve {
				for i := uint(0); i < n; i++ {
					f.mark(i)
				}
			}
			i := f.uM()
			f.x[i], f.y[i] = scr.MousePosGr()
		loop:
			for {
				scr.MouseCursor(true)
				c, _ := kbd.Command()
				switch c {
				case kbd.Esc:
					break loop
				case kbd.Enter, kbd.Tab, kbd.LookFor:
					f.colour = sel.Colour()
				case kbd.Here:
					break loop
				case kbd.There:
					i = f.uM()
				case kbd.Push, kbd.Thither:
					if i < n {
						f.Invert()
						f.mark(i)
						f.x[i], f.y[i] = scr.MousePosGr()
						f.mark(i)
						f.Invert()
						if c == kbd.Thither {
							i = n
						} // ? ? ?
					}
				case kbd.This:
					switch f.sort {
					case Pointset, Segments, Polygon, Curve:
						if f.x == nil {
							f.Clr()
						} else {
							for i := uint(0); i < n; i++ {
								f.mark(i)
							}
							f.Erase()
							n-- // ? ? ?
							f.Invert()
							for i := uint(0); i < n; i++ {
								f.mark(i)
							}
						}
					}
				}
				errh.Hint(c.String())
			}
			f.Invert()
			if true { // sort != Text {
				for i := uint(0); i < n; i++ {
					f.mark(i)
				}
			}
			f.Write()
		}
	}
}
Beispiel #30
0
func (x *Imp) Edit(l, c uint) {
	//
	x.Write(l, c)
	n := uint(0)
loop_n:
	for {
		i := uint(0)
	loop_i:
		for {
			weg := false
			switch i {
			case 0: // lang
				for {
					for {
						x.lang[n].Edit(l+lLa[x.f][n], c+cLa[x.f][n])
						if x.lang[n].Ord() >= 2 && // Englisch
							x.lang[n].Ord() <= 12 { // Griechisch
							break
						} else {
							errh.Error("keine Fremdsprache", 0)
						}
					}
					if x.lang[n].Empty() {
						if n > 1 {
							weg = true
							break
						} else {
							errh.Error2("", n+1, ". Fremdsprache fehlt", 0)
						}
					} else {
						break
					}
				}
			case 1: // from
				if weg {
					x.from[n].Clr()
					x.from[n].Write(l+lFr[x.f][n], c+cFr[x.f][n])
				} else {
					x.from[n].Edit(l+lFr[x.f][n], c+cFr[x.f][n])
				}
			case 2: // to
				if weg {
					x.to[n].Clr()
					x.to[n].Write(l+lTo[x.f][n], c+cTo[x.f][n])
				} else {
					for {
						x.to[n].Edit(l+lTo[x.f][n], c+cTo[x.f][n])
						if x.to[n].Empty() || x.to[n].Val() == 0 && x.to[n].Val() >= 12 {
							errh.Error("geht nich", x.to[n].Val())
						} else {
							break
						}
					}
				}
			}
			if i < 2 {
				i++
			} else {
				if x.from[n].Eq(x.to[n]) || x.from[n].Less(x.to[n]) {
					break loop_i
				} else {
					i = 1
				}
			}
		} // loop_i
		if n+1 < max {
			n++
		} else {
			k := uint(0)
			if x.multiple(&k) {
				errh.Error2("Die", k+1, ". Fremdsprache kommt mehrfach vor", 0)
			} else {
				break loop_n
			}
		}
	}
}