1 
2 #include <WINGs/WINGs.h>
3 #include <stdio.h>
4 #include <stdint.h>
5 #include "wtableview.h"
6 #include "wtabledelegates.h"
7 
8 static char *col1[20] = { 0 };
9 
10 static int col2[20];
11 
12 static char *options[] = {
13 	"Option1",
14 	"Option2",
15 	"Option3",
16 	"Option4",
17 	"Option5"
18 };
19 
numberOfRows(WMTableViewDelegate * self,WMTableView * table)20 int numberOfRows(WMTableViewDelegate * self, WMTableView * table)
21 {
22 	return 20;
23 }
24 
valueForCell(WMTableViewDelegate * self,WMTableColumn * column,int row)25 void *valueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row)
26 {
27 	/*WMTableView *table = (WMTableView*)WMGetTableColumnTableView(column); */
28 	int i;
29 	if (col1[0] == 0) {
30 		for (i = 0; i < 20; i++) {
31 			char buf[128];
32 
33 			sprintf(buf, "Test row %i", i);
34 
35 			col1[i] = wstrdup(buf);
36 			col2[i] = 0;
37 		}
38 	}
39 	if ((uintptr_t)WMGetTableColumnId(column) == 1)
40 		return col1[row];
41 	else
42 		return (void *)(uintptr_t) col2[row];
43 }
44 
setValueForCell(WMTableViewDelegate * self,WMTableColumn * column,int row,void * data)45 void setValueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row, void *data)
46 {
47 	if ((uintptr_t)WMGetTableColumnId(column) == 1)
48 		col1[row] = data;
49 	else
50 		col2[row] = (uintptr_t) data;
51 }
52 
53 static WMTableViewDelegate delegate = {
54 	NULL,
55 	numberOfRows,
56 	valueForCell,
57 	setValueForCell
58 };
59 
clickedTable(WMWidget * w,void * self)60 void clickedTable(WMWidget * w, void *self)
61 {
62 	int row = WMGetTableViewClickedRow((WMTableView *) self);
63 
64 	WMEditTableViewRow(self, row);
65 }
66 
main(int argc,char ** argv)67 int main(int argc, char **argv)
68 {
69 	WMScreen *scr;
70 	WMWindow *win;
71 	WMTableView *table;
72 	WMTableColumn *col;
73 	WMTableColumnDelegate *colDeleg;
74 
75 	WMInitializeApplication("test", &argc, argv);
76 
77 	scr = WMOpenScreen(NULL);
78 
79 	XSynchronize(WMScreenDisplay(scr), 1);
80 
81 	win = WMCreateWindow(scr, "eweq");
82 	WMResizeWidget(win, 400, 200);
83 	WMMapWidget(win);
84 
85 	table = WMCreateTableView(win);
86 	WMSetTableViewHasHorizontalScroller(table, 0);
87 	WMSetViewExpandsToParent(WMWidgetView(table), 10, 10, 10, 10);
88 	WMSetTableViewBackgroundColor(table, WMWhiteColor(scr));
89 	/*WMSetTableViewGridColor(table, WMGrayColor(scr)); */
90 	WMSetTableViewHeaderHeight(table, 20);
91 	WMSetTableViewDelegate(table, &delegate);
92 	WMSetTableViewAction(table, clickedTable, table);
93 
94 	colDeleg = WTCreateStringEditorDelegate(table);
95 
96 	col = WMCreateTableColumn("Group");
97 	WMSetTableColumnWidth(col, 180);
98 	WMAddTableViewColumn(table, col);
99 	WMSetTableColumnDelegate(col, colDeleg);
100 	WMSetTableColumnId(col, (void *)1);
101 
102 	colDeleg = WTCreateEnumSelectorDelegate(table);
103 	WTSetEnumSelectorOptions(colDeleg, options, 5);
104 
105 	col = WMCreateTableColumn("Package");
106 	WMSetTableColumnWidth(col, 140);
107 	WMAddTableViewColumn(table, col);
108 	WMSetTableColumnDelegate(col, colDeleg);
109 	WMSetTableColumnId(col, (void *)2);
110 
111 	colDeleg = WTCreateBooleanSwitchDelegate(table);
112 
113 	col = WMCreateTableColumn("Bool");
114 	WMSetTableColumnWidth(col, 50);
115 	WMAddTableViewColumn(table, col);
116 	WMSetTableColumnDelegate(col, colDeleg);
117 	WMSetTableColumnId(col, (void *)2);
118 
119 	WMMapWidget(table);
120 	WMRealizeWidget(win);
121 	WMScreenMainLoop(scr);
122 
123 	return 0;
124 }
125