Add to git.
[monolith.git] / examples / expenses_widget.c
1 /* Expenses widget.
2  * - by Richard W.M. Jones <rich@annexia.org>
3  */
4
5 #include "config.h"
6
7 #ifdef HAVE_STRING_H
8 #include <string.h>
9 #endif
10
11 #include <pool.h>
12 #include <vector.h>
13 #include <pthr_iolib.h>
14
15 #include <monolith.h>
16 #include <ml_widget.h>
17 #include <ml_smarttext.h>
18 #include <ml_button.h>
19
20 #include "expenses_widget.h"
21
22 static void repaint (void *, ml_session, const char *, io_handle);
23
24 struct ml_widget_operations expenses_widget_ops =
25   {
26     repaint: repaint
27   };
28
29 struct expenses_widget
30 {
31   struct ml_widget_operations *ops;
32   pool pool;                    /* Pool for allocations. */
33   ml_session session;           /* Session. */
34   vector expenses;              /* Underlying data model (vector of
35                                  * row structures).
36                                  */
37   expenses_add_row add;         /* Add row. */
38 };
39
40 /* List of expense types. */
41 const char *expense_types[] = {
42   "Travel and transport",
43   "Employee morale",
44   "Logding and meals",
45   "Parking and motor",
46   "Entertaining customers",
47   "Office supplies",
48   "Phone",
49   "Other (specify)"
50 };
51 int nr_expense_types = sizeof (expense_types) / sizeof (expense_types[0]);
52
53 expenses_widget
54 new_expenses_widget (pool pool, ml_session session, vector expenses)
55 {
56   expenses_widget w = pmalloc (pool, sizeof *w);
57
58   w->ops = &expenses_widget_ops;
59   w->pool = pool;
60   w->expenses = expenses;
61
62   /* Create the add row. */
63   w->add = new_expenses_add_row (pool, session, expenses);
64
65   return w;
66 }
67
68 static void
69 repaint (void *vw, ml_session session, const char *windowid, io_handle io)
70 {
71   //expenses_widget w = (expenses_widget) vw;
72
73   io_fputs ("expenses widget", io);
74 }