File: list.bs

package info (click to toggle)
storm-lang 0.7.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 51,836 kB
  • sloc: ansic: 261,420; cpp: 138,870; sh: 14,877; perl: 9,846; python: 2,525; lisp: 2,504; asm: 860; makefile: 678; pascal: 70; java: 52; xml: 37; awk: 12
file content (81 lines) | stat: -rw-r--r-- 1,714 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
use ui;
use core:geometry;
use core:io;
use progvis:net;
use graphics;

class List extends Window {
	private ListPainter painter;

	init() {
		init();

		painter(painter);
	}

	Bool onClick(Bool down, Point pt, MouseButton button) : override {
		if (down & button == MouseButton:left) {
			painter.onClick(pt);
		}
		true;
	}

	Bool onMouseVScroll(Point at, Int delta) : override {
		painter.onVScroll(at, delta);
		true;
	}
}

class ListPainter extends ui:Painter {
	private Size size;
	private Size viewport;

	init() {
		init();

		bgColor = Color(0.8, 0.8, 0.8);
	}

	Bool render(Size me, Graphics g) : override {
		Bool repaint = false;

		// size = me;

		// tabs.render(me, g);

		// viewport = Size(me.w, me.h - tabs.height);

		// if (table) {
		// 	g.transform = translate(Point(0, tabs.height - scroll));
		// 	Rect view(Point(0, scroll), viewport);
		// 	g.push(view);

		// 	// Scroll bar.
		// 	Float scrollWidth = 12;
		// 	{
		// 		Float viewHeight = view.size.h - 6;
		// 		Float tableHeight = table.height;
		// 		Float scaledSize = (viewHeight / tableHeight).min(1);
		// 		Float scaledOffset = scroll / tableHeight;
		// 		Size sz(scrollWidth - 6, scaledSize * viewHeight);
		// 		Point origin(view.p1.x - scrollWidth + 3, scaledOffset * viewHeight);
		// 		origin += Point(0, scroll + 3); // To compensate for the transform. 3 is half the border around it.
		// 		g.fill(Rect(origin, sz), Size(3), scrollBrush);
		// 	}

		// 	// Table.
		// 	view.p1.x -= scrollWidth;
		// 	repaint |= table.render(view, g);

		// 	g.pop();
		// } else {
		// 	g.draw(loading, tableText, me / 2 - loading.size / 2);
		// }

		repaint;
	}

	void onClick(Point pt) {}

	void onVScroll(Point pt, Int delta) {}
}