Change to the linux kernel coding style
[wmaker-crm.git] / WINGs / Examples / fontl.c
1 /*
2  * WINGs demo: font lister
3  *
4  *  Copyright (c) 1998-2003 Alfredo K. Kojima
5  *
6  *  This program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation; either version 2 of the License, or
9  *  (at your option) any later version.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with this program; if not, write to the Free Software
18  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19  *  USA.
20  */
21
22 #include <stdlib.h>
23 #include <stdio.h>
24 #include <stdint.h>
25 #include <WINGs/WINGs.h>
26 #include <WINGs/WUtil.h>
27
28 void wAbort()
29 {
30         exit(0);
31 }
32
33 void show(WMWidget * self, void *data)
34 {
35         char buf[60];
36         void *d;
37         WMLabel *l = (WMLabel *) data;
38         d = WMGetHangedData(self);
39         sprintf(buf, "%i -  0x%x - 0%o", (int)(uintptr_t) d, (int)(uintptr_t) d, (int)(uintptr_t) d);
40         WMSetLabelText(l, buf);
41 }
42
43 void quit(WMWidget * self, void *data)
44 {
45         exit(0);
46 }
47
48 int main(int argc, char **argv)
49 {
50         Display *dpy;
51         WMWindow *win;
52         WMScreen *scr;
53         WMButton *lab, *l0 = NULL;
54         WMLabel *pos;
55         int x, y, c;
56         char buf[20];
57
58         WMInitializeApplication("FontView", &argc, argv);
59
60         dpy = XOpenDisplay("");
61         if (!dpy) {
62                 wfatal("cant open display");
63                 exit(0);
64         }
65
66         scr = WMCreateSimpleApplicationScreen(dpy);
67
68         win = WMCreateWindow(scr, "main");
69         WMResizeWidget(win, 20 * 33, 20 + 20 * 9);
70         WMSetWindowTitle(win, "Font Chars");
71         WMSetWindowCloseAction(win, quit, NULL);
72         pos = WMCreateLabel(win);
73         WMResizeWidget(pos, 20 * 33, 20);
74         WMMoveWidget(pos, 10, 5);
75
76         c = 0;
77         for (y = 0; y < 8; y++) {
78                 for (x = 0; x < 32; x++, c++) {
79                         lab = WMCreateCustomButton(win, WBBStateLightMask);
80                         WMResizeWidget(lab, 20, 20);
81                         WMMoveWidget(lab, 10 + x * 20, 30 + y * 20);
82                         sprintf(buf, "%c", c);
83                         WMSetButtonText(lab, buf);
84                         WMSetButtonAction(lab, show, pos);
85                         WMHangData(lab, (void *)(uintptr_t) c);
86                         if (c > 0) {
87                                 WMGroupButtons(l0, lab);
88                         } else {
89                                 l0 = lab;
90                         }
91                 }
92         }
93         WMRealizeWidget(win);
94         WMMapSubwidgets(win);
95         WMMapWidget(win);
96         WMScreenMainLoop(scr);
97         return 0;
98 }