gwenhywfar 5.12.0
g_unorderedlist.c
Go to the documentation of this file.
1/***************************************************************************
2 begin : Mon Feb 22 2010
3 copyright : (C) 2010 by Martin Preuss
4 email : martin@libchipcard.de
5
6 ***************************************************************************
7 * Please see toplevel file COPYING for license details *
8 ***************************************************************************/
9
10#ifdef HAVE_CONFIG_H
11# include <config.h>
12#endif
13
14#define DISABLE_DEBUGLOG
15
16
17#include "g_unorderedlist_p.h"
18#include "g_box_l.h"
19#include "g_generic_l.h"
20#include "htmlctx_l.h"
21#include "o_box_l.h"
22#include "o_grid_l.h"
23#include "o_gridentry_l.h"
24#include "o_word_l.h"
25
26#include <gwenhywfar/debug.h>
27
28
29GWEN_INHERIT(HTML_GROUP, GROUP_UNORDEREDLIST)
30
31
32
34 HTML_GROUP *parent,
36{
37 HTML_GROUP *g;
38 GROUP_UNORDEREDLIST *xg;
39
40 /* create base group */
41 g=HtmlGroup_Generic_new(groupName, parent, ctx);
42 assert(g);
43
44 /* inherit */
45 GWEN_NEW_OBJECT(GROUP_UNORDEREDLIST, xg);
46 GWEN_INHERIT_SETDATA(HTML_GROUP, GROUP_UNORDEREDLIST, g, xg,
48
49 /* set virtual functions */
51
52 return g;
53}
54
55
56
58{
59 GROUP_UNORDEREDLIST *xg;
60
61 xg=(GROUP_UNORDEREDLIST *) p;
63}
64
65
66
67int HtmlGroup_UnorderedList_StartTag(HTML_GROUP *g, const char *tagName)
68{
69 GROUP_UNORDEREDLIST *xg;
70 HTML_GROUP *gNew=NULL;
72
73 assert(g);
74 xg=GWEN_INHERIT_GETDATA(HTML_GROUP, GROUP_UNORDEREDLIST, g);
75 assert(xg);
76
78
79 if (strcasecmp(tagName, "li")==0) {
80 HTML_OBJECT *o;
81 HTML_OBJECT *oGrid;
82
83 /* first column in the grid is "-" */
84 oGrid=HtmlObject_GridEntry_new(ctx);
86 HtmlObject_GridEntry_SetRow(oGrid, xg->row);
88 HtmlObject_Tree_AddChild(HtmlGroup_GetObject(g), oGrid);
89
90 o=HtmlObject_Word_new(ctx, "-");
92 HtmlObject_Tree_AddChild(oGrid, o);
93
94 /* Create new parser group with new properties but use the same object */
95 gNew=HtmlGroup_Box_new(tagName, g, ctx);
98 assert(o);
100 int i;
101
104 }
105
106 /* second column is the content of li */
109 HtmlObject_GridEntry_SetRow(oGrid, xg->row);
111 HtmlObject_Tree_AddChild(oGrid, o);
112
113 HtmlGroup_SetObject(gNew, o);
114 xg->row++;
115 }
116 else {
118 "Unexpected group [%s]", tagName);
119 return GWEN_ERROR_BAD_DATA;
120 }
121
122 if (gNew) {
123 HtmlCtx_SetCurrentGroup(ctx, gNew);
125 }
126
127 return 0;
128}
129
130
131
#define NULL
Definition binreloc.c:300
#define DBG_ERROR(dbg_logger, format,...)
Definition debug.h:97
#define GWEN_ERROR_BAD_DATA
Definition error.h:121
HTML_GROUP * HtmlGroup_Box_new(const char *groupName, HTML_GROUP *parent, GWEN_XML_CONTEXT *ctx)
Definition g_box.c:36
HTML_GROUP * HtmlGroup_Generic_new(const char *groupName, HTML_GROUP *parent, GWEN_XML_CONTEXT *ctx)
Definition g_generic.c:26
int HtmlGroup_UnorderedList_StartTag(HTML_GROUP *g, const char *tagName)
void GWENHYWFAR_CB HtmlGroup_UnorderedList_FreeData(GWEN_UNUSED void *bp, void *p)
HTML_GROUP * HtmlGroup_UnorderedList_new(const char *groupName, HTML_GROUP *parent, GWEN_XML_CONTEXT *ctx)
#define GWEN_UNUSED
#define GWENHYWFAR_CB
void HtmlCtx_SetCurrentGroup(GWEN_XML_CONTEXT *ctx, HTML_GROUP *g)
Definition htmlctx.c:201
void HtmlGroup_SetObject(HTML_GROUP *g, HTML_OBJECT *o)
Definition htmlgroup.c:96
HTML_OBJECT * HtmlGroup_GetObject(const HTML_GROUP *g)
Definition htmlgroup.c:88
GWEN_XML_CONTEXT * HtmlGroup_GetXmlContext(const HTML_GROUP *g)
Definition htmlgroup.c:72
HTML_PROPS * HtmlGroup_GetProperties(const HTML_GROUP *g)
Definition htmlgroup.c:104
void HtmlGroup_SetProperties(HTML_GROUP *g, HTML_PROPS *pr)
Definition htmlgroup.c:112
HTML_GROUP_STARTTAG_FN HtmlGroup_SetStartTagFn(HTML_GROUP *g, HTML_GROUP_STARTTAG_FN f)
Definition htmlgroup.c:128
struct HTML_GROUP HTML_GROUP
Definition htmlgroup_l.h:19
HTML_OBJECT_TYPE HtmlObject_GetObjectType(const HTML_OBJECT *o)
Definition htmlobject.c:86
void HtmlObject_SetProperties(HTML_OBJECT *o, HTML_PROPS *pr)
Definition htmlobject.c:113
@ HtmlObjectType_Grid
struct HTML_OBJECT HTML_OBJECT
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
Definition inherit.h:300
#define GWEN_INHERIT(bt, t)
Definition inherit.h:264
#define GWEN_INHERIT_GETDATA(bt, t, element)
Definition inherit.h:279
#define GWEN_LOGDOMAIN
Definition logger.h:35
#define GWEN_FREE_OBJECT(varname)
Definition memory.h:61
#define GWEN_NEW_OBJECT(typ, varname)
Definition memory.h:55
void HtmlObject_Grid_SetRows(HTML_OBJECT *o, int i)
Definition o_grid.c:250
int HtmlObject_Grid_GetRows(const HTML_OBJECT *o)
Definition o_grid.c:237
void HtmlObject_GridEntry_SetColumn(HTML_OBJECT *o, int i)
Definition o_gridentry.c:94
void HtmlObject_GridEntry_SetRow(HTML_OBJECT *o, int i)
Definition o_gridentry.c:68
HTML_OBJECT * HtmlObject_GridEntry_new(GWEN_XML_CONTEXT *ctx)
Definition o_gridentry.c:27
HTML_OBJECT * HtmlObject_Word_new(GWEN_XML_CONTEXT *ctx, const char *s)
Definition o_word.c:49
void GWEN_XmlCtx_IncDepth(GWEN_XML_CONTEXT *ctx)
Definition xmlctx.c:166
struct GWEN_XML_CONTEXT GWEN_XML_CONTEXT
Definition xmlctx.h:39