Exemple #1
0
func (h *MyButtonHandler) HandleEvent(e gwu.Event) {
	if _, isButton := e.Src().(gwu.Button); isButton {
		ioutil.WriteFile(
			fmt.Sprintf("wikiPages/%s", fileName),
			[]byte(wikiText), os.FileMode(os.O_WRONLY|os.O_CREATE|os.O_TRUNC|0777))
	}
}
Exemple #2
0
func (h *MyButtonHandler) HandleEvent(e gwu.Event) {
	if b, isButton := e.Src().(gwu.Button); isButton {
		b.SetText(b.Text() + h.text)
		h.counter++
		b.SetToolTip("You've clicked " + strconv.Itoa(h.counter) + " times!")
		e.MarkDirty(b)
	}
}
Exemple #3
0
func (h *NewPageHandler) HandleEvent(e gwu.Event) {
	if _, isButton := e.Src().(gwu.Button); isButton {
		fmt.Printf("NewPage: %s\n", newPageBox.Text())
		ioutil.WriteFile(
			fmt.Sprintf("wikiPages/%s", newPageBox.Text()),
			[]byte{}, os.FileMode(os.O_WRONLY|os.O_CREATE|os.O_EXCL|0777))

	}
}
Exemple #4
0
func (h *MyButtonHandler) HandleEvent(e gwu.Event) {
	// Check if event source is a Button, just to be sure...
	// We add this handler to a button only, so this'll be always false.
	if b, isButton := e.Src().(gwu.Button); isButton {
		b.SetText(b.Text() + h.text)
		h.counter++
		b.SetToolTip("You've clicked " + strconv.Itoa(h.counter) + " times!")
		e.MarkDirty(b)
	}
}
Exemple #5
0
func (h *GreenHandler) HandleEvent(e gwu.Event) {
	var state bool
	src := e.Src()

	switch c := src.(type) {
	case gwu.CheckBox:
		state = c.State()
	case gwu.RadioButton:
		state = c.State()
	}

	if state {
		src.Style().SetBackground(gwu.CLR_GREEN)
	} else {
		src.Style().SetBackground("")
	}
	e.MarkDirty(src)
}
Exemple #6
0
func (h *MyButtonHandler2) HandleEvent(e gwu.Event) {
	if _, isButton := e.Src().(gwu.Button); isButton {
		fmt.Println("Loading... ", h.text)
		fileName = h.text
		LoadFile(h.text)
		tb.SetText(wikiText)
		html.SetHtml(fmt.Sprintf("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM%v", string(blackfriday.MarkdownCommon([]byte(tb.Text())))))
		e.MarkDirty(tb)
		e.MarkDirty(html)
	}
}
Exemple #7
0
func buildTimerDemo(event gwu.Event) gwu.Comp {
	p := gwu.NewPanel()
	p.SetCellPadding(3)

	// Add timers to a panel which is always attached instead of our panel
	// because the user can switch to another component demo causing this panel to be removed
	// and that way timer events would address components that are not part of the window (returning error).
	hiddenPan := event.Session().Attr("hiddenPan").(gwu.Panel)

	p.Add(gwu.NewLabel("A Timer is used to detonate a bomb after 3 seconds."))
	p.AddVSpace(10)
	defText := "You can defuse the bomb with the button below. Tick... Tack..."
	l := gwu.NewLabel(defText)
	p.Add(l)
	t := gwu.NewTimer(3 * time.Second)
	b := gwu.NewButton("Defuse!")
	t.AddEHandlerFunc(func(e gwu.Event) {
		l.SetText("BOOOOM! You were too slow!")
		l.Style().SetColor(gwu.CLR_RED)
		b.SetEnabled(false)
		e.MarkDirty(l, b)
	}, gwu.ETYPE_STATE_CHANGE)
	hiddenPan.Add(t)
	row := gwu.NewHorizontalPanel()
	b.AddEHandlerFunc(func(e gwu.Event) {
		t.SetActive(false)
		l.SetText("Bomb defused! Phew! Good Job!")
		l.Style().SetColor(gwu.CLR_GREEN)
		b.SetEnabled(false)
		e.MarkDirty(t, l, b)
	}, gwu.ETYPE_CLICK)
	row.Add(b)
	b2 := gwu.NewButton("Plant a new Bomb!")
	b2.AddEHandlerFunc(func(e gwu.Event) {
		t.SetActive(true)
		t.Reset()
		l.SetText(defText)
		l.Style().SetColor("")
		b.SetEnabled(true)
		e.MarkDirty(t, l, b)
	}, gwu.ETYPE_CLICK)
	row.Add(b2)
	p.Add(row)

	p.AddVSpace(20)
	p.Add(gwu.NewLabel("A Timer is used to refresh the time below repeatedly in every second for half a minute."))
	tl := gwu.NewLabel("")
	p.Add(tl)
	t2 := gwu.NewTimer(time.Second)
	t2.SetRepeat(true)
	counter := 30
	t2.AddEHandlerFunc(func(e gwu.Event) {
		counter--
		tl.SetText(fmt.Sprintf("%s (%d remaining)", time.Now().Format("2006-01-02 15:04:05"), counter))
		e.MarkDirty(tl)
		if counter <= 0 {
			t2.SetActive(false)
			e.MarkDirty(t2)
		}
	}, gwu.ETYPE_STATE_CHANGE)
	hiddenPan.Add(t2)
	b3 := gwu.NewButton("Restart")
	b3.AddEHandlerFunc(func(e gwu.Event) {
		counter = 30
		t2.SetActive(true)
		e.MarkDirty(t2)
	}, gwu.ETYPE_CLICK)
	p.Add(b3)

	event.MarkDirty(hiddenPan)

	return p
}
Exemple #8
0
func (zz ExpanderHandler) HandleEvent(e gwu.Event) {

	switch t := e.Src().(type) {
	case gwu.Expander:
		dir, _ := expanderDir[t]
		//fmt.Println("Dir=" + dir)
		files, _ := ioutil.ReadDir(dir)
		var p gwu.Panel
		var table gwu.Table
		p = nil

		dirList := make([]gwu.Comp, 0, 0)
		fileLabelList := make([]gwu.Comp, 0, 0)
		fileTimeList := make([]gwu.Comp, 0, 0)
		fileSizeList := make([]gwu.Comp, 0, 0)

		for _, f := range files {
			if p == nil {
				p = gwu.NewPanel()
				t.SetContent(p)
				table = gwu.NewTable()
				table.SetCellPadding(5)
				p.Add(table)
			}
			if f.IsDir() {
				// owned by root // only works on linux
				newExpander := makeExpander(f.Name())
				newExpander.SetToolTip("DIR - Click to view contents")
				newExpander.Style().SetColor("blue")
				if dir == "/" {
					expanderDir[newExpander] = dir + f.Name()
				} else {
					expanderDir[newExpander] = dir + "/" + f.Name()
				}
				newExpander.AddEHandler(handler, gwu.ETYPE_STATE_CHANGE)
				dirList = append(dirList, newExpander)
			} else {
				fileLabel := gwu.NewLabel(f.Name())
				fileLabel.Style().SetPaddingLeft("20")
				fileLabel.SetToolTip("FILE")
				fileLabel.AddEHandler(foobar, gwu.ETYPE_MOUSE_DOWN)
				fileLabelList = append(fileLabelList, fileLabel)

				fileTimeLabel := gwu.NewLabel(f.ModTime().Format(layout))
				fileTimeList = append(fileTimeList, fileTimeLabel)
				fileSizeLabel := gwu.NewLabel(strconv.FormatInt(f.Size(), 10) + "k")
				fileSizeList = append(fileSizeList, fileSizeLabel)
			}
		}
		row := 0
		for _, dir := range dirList {
			table.Add(dir, row, 0)
			row = row + 1
		}
		for i, _ := range fileLabelList {
			table.Add(fileLabelList[i], row, 0)
			rfmt := table.CellFmt(row, 0)
			rfmt.SetHAlign(gwu.HA_LEFT)
			rfmt.SetVAlign(gwu.VA_TOP)

			table.Add(fileTimeList[i], row, 1)
			rfmt = table.CellFmt(row, 1)
			rfmt.SetHAlign(gwu.HA_LEFT)
			rfmt.SetVAlign(gwu.VA_TOP)

			table.Add(fileSizeList[i], row, 2)
			rfmt = table.CellFmt(row, 2)
			rfmt.SetHAlign(gwu.HA_RIGHT)
			rfmt.SetVAlign(gwu.VA_TOP)

			row = row + 1
		}

	default:
		// t is some other type that we didn't name.
	}

}