diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/themeeditor/main.cpp | 14 | ||||
-rw-r--r-- | utils/themeeditor/parsetreemodel.cpp | 1 | ||||
-rw-r--r-- | utils/themeeditor/parsetreenode.cpp | 30 | ||||
-rw-r--r-- | utils/themeeditor/parsetreenode.h | 4 | ||||
-rw-r--r-- | utils/themeeditor/skin_debug.c | 19 | ||||
-rw-r--r-- | utils/themeeditor/skin_parser.c | 14 | ||||
-rw-r--r-- | utils/themeeditor/skin_parser.h | 3 |
7 files changed, 58 insertions, 27 deletions
diff --git a/utils/themeeditor/main.cpp b/utils/themeeditor/main.cpp index b43b419143..49e870c369 100644 --- a/utils/themeeditor/main.cpp +++ b/utils/themeeditor/main.cpp | |||
@@ -19,13 +19,10 @@ | |||
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | ||
22 | namespace wps | 22 | extern "C" |
23 | { | 23 | { |
24 | extern "C" | ||
25 | { | ||
26 | #include "skin_parser.h" | 24 | #include "skin_parser.h" |
27 | #include "skin_debug.h" | 25 | #include "skin_debug.h" |
28 | } | ||
29 | } | 26 | } |
30 | 27 | ||
31 | #include <cstdlib> | 28 | #include <cstdlib> |
@@ -39,13 +36,14 @@ namespace wps | |||
39 | int main(int argc, char* argv[]) | 36 | int main(int argc, char* argv[]) |
40 | { | 37 | { |
41 | 38 | ||
42 | char* doc = "%Vd(U)\n\n%?bl(test,3,5,2,1)<param2|param3>"; | 39 | char doc[] = "%Vd(U);Hey\n%?bl(test,3,5,2,1)<param2|param3>"; |
43 | 40 | ||
44 | struct wps::skin_element* test = wps::skin_parse(doc); | 41 | struct skin_element* test = skin_parse(doc); |
45 | 42 | ||
46 | wps::skin_debug_tree(test); | 43 | skin_debug_tree(test); |
44 | |||
45 | skin_free_tree(test); | ||
47 | 46 | ||
48 | wps::skin_free_tree(test); | ||
49 | 47 | ||
50 | QApplication app(argc, argv); | 48 | QApplication app(argc, argv); |
51 | 49 | ||
diff --git a/utils/themeeditor/parsetreemodel.cpp b/utils/themeeditor/parsetreemodel.cpp index cf6af14a5e..aa5fb5cdb8 100644 --- a/utils/themeeditor/parsetreemodel.cpp +++ b/utils/themeeditor/parsetreemodel.cpp | |||
@@ -27,7 +27,6 @@ ParseTreeModel::ParseTreeModel(char* wps, QObject* parent): | |||
27 | QAbstractItemModel(parent) | 27 | QAbstractItemModel(parent) |
28 | { | 28 | { |
29 | this->wps = skin_parse(wps); | 29 | this->wps = skin_parse(wps); |
30 | skin_debug_tree(this->wps); | ||
31 | this->root = new ParseTreeNode(this->wps, 0, true); | 30 | this->root = new ParseTreeNode(this->wps, 0, true); |
32 | } | 31 | } |
33 | 32 | ||
diff --git a/utils/themeeditor/parsetreenode.cpp b/utils/themeeditor/parsetreenode.cpp index 97cb559906..77ec897dd7 100644 --- a/utils/themeeditor/parsetreenode.cpp +++ b/utils/themeeditor/parsetreenode.cpp | |||
@@ -1,16 +1,34 @@ | |||
1 | #include "parsetreenode.h" | 1 | #include "parsetreenode.h" |
2 | 2 | ||
3 | ParseTreeNode::ParseTreeNode(struct skin_element* data, ParseTreeNode* parent, | 3 | ParseTreeNode::ParseTreeNode(struct skin_element* data, ParseTreeNode* parent, |
4 | bool stop): | 4 | bool tree) |
5 | parentLink(parent), element(data) | ||
6 | { | 5 | { |
7 | 6 | ||
8 | if(stop) | 7 | if(tree) |
9 | return; | 8 | { |
10 | for(int i = 0; i < 5; i++) | 9 | while(data) |
11 | appendChild(new ParseTreeNode(data, this, true)); | 10 | { |
11 | appendChild(new ParseTreeNode(data, this, false)); | ||
12 | data = data->next; | ||
13 | } | ||
14 | parentLink = 0; | ||
15 | } | ||
16 | else | ||
17 | { | ||
18 | element = data; | ||
19 | parentLink = parent; | ||
20 | } | ||
21 | |||
12 | } | 22 | } |
13 | 23 | ||
24 | ParseTreeNode::ParseTreeNode(struct skin_tag_parameter* param, | ||
25 | ParseTreeNode* parent) | ||
26 | :parentLink(parent), element(0), param(param) | ||
27 | { | ||
28 | |||
29 | } | ||
30 | |||
31 | |||
14 | ParseTreeNode::~ParseTreeNode() | 32 | ParseTreeNode::~ParseTreeNode() |
15 | { | 33 | { |
16 | qDeleteAll(children); | 34 | qDeleteAll(children); |
diff --git a/utils/themeeditor/parsetreenode.h b/utils/themeeditor/parsetreenode.h index bc091b9aa4..c3372e0a20 100644 --- a/utils/themeeditor/parsetreenode.h +++ b/utils/themeeditor/parsetreenode.h | |||
@@ -13,7 +13,8 @@ extern "C" | |||
13 | class ParseTreeNode | 13 | class ParseTreeNode |
14 | { | 14 | { |
15 | public: | 15 | public: |
16 | ParseTreeNode(struct skin_element* data, ParseTreeNode* parent, bool stop = false); | 16 | ParseTreeNode(struct skin_element* data, ParseTreeNode* parent, bool tree); |
17 | ParseTreeNode(struct skin_tag_parameter* param, ParseTreeNode* parent); | ||
17 | virtual ~ParseTreeNode(); | 18 | virtual ~ParseTreeNode(); |
18 | 19 | ||
19 | void appendChild(ParseTreeNode* child); | 20 | void appendChild(ParseTreeNode* child); |
@@ -29,6 +30,7 @@ private: | |||
29 | ParseTreeNode* parentLink; | 30 | ParseTreeNode* parentLink; |
30 | QList<ParseTreeNode*> children; | 31 | QList<ParseTreeNode*> children; |
31 | struct skin_element* element; | 32 | struct skin_element* element; |
33 | struct skin_tag_parameter* param; | ||
32 | 34 | ||
33 | }; | 35 | }; |
34 | 36 | ||
diff --git a/utils/themeeditor/skin_debug.c b/utils/themeeditor/skin_debug.c index f275b0403d..5d37f64a11 100644 --- a/utils/themeeditor/skin_debug.c +++ b/utils/themeeditor/skin_debug.c | |||
@@ -129,17 +129,10 @@ void skin_debug_tree(struct skin_element* root) | |||
129 | debug_indent_level++; | 129 | debug_indent_level++; |
130 | for(i = 0; i < current->children_count; i++) | 130 | for(i = 0; i < current->children_count; i++) |
131 | { | 131 | { |
132 | skin_debug_indent(); | ||
133 | printf("[ Subline %d\n", i); | ||
134 | |||
135 | debug_indent_level++; | ||
136 | skin_debug_tree(current->children[i]); | 132 | skin_debug_tree(current->children[i]); |
137 | debug_indent_level--; | ||
138 | |||
139 | skin_debug_indent(); | ||
140 | printf("]\n"); | ||
141 | } | 133 | } |
142 | debug_indent_level--; | 134 | debug_indent_level--; |
135 | |||
143 | skin_debug_indent(); | 136 | skin_debug_indent(); |
144 | printf("]\n"); | 137 | printf("]\n"); |
145 | break; | 138 | break; |
@@ -175,6 +168,16 @@ void skin_debug_tree(struct skin_element* root) | |||
175 | 168 | ||
176 | break; | 169 | break; |
177 | 170 | ||
171 | case LINE: | ||
172 | printf("[ Logical line on line %d\n", current->line); | ||
173 | |||
174 | debug_indent_level++; | ||
175 | skin_debug_tree(current->children[0]); | ||
176 | debug_indent_level--; | ||
177 | |||
178 | skin_debug_indent(); | ||
179 | printf("]\n"); | ||
180 | break; | ||
178 | } | 181 | } |
179 | 182 | ||
180 | current = current->next; | 183 | current = current->next; |
diff --git a/utils/themeeditor/skin_parser.c b/utils/themeeditor/skin_parser.c index dd061a1ac9..a6c5ea41a2 100644 --- a/utils/themeeditor/skin_parser.c +++ b/utils/themeeditor/skin_parser.c | |||
@@ -151,6 +151,14 @@ struct skin_element* skin_parse_line_optional(char** document, int conditional) | |||
151 | 151 | ||
152 | struct skin_element* root = NULL; | 152 | struct skin_element* root = NULL; |
153 | struct skin_element* current = NULL; | 153 | struct skin_element* current = NULL; |
154 | struct skin_element* retval = NULL; | ||
155 | |||
156 | /* A wrapper for the line */ | ||
157 | retval = skin_alloc_element(); | ||
158 | retval->type = LINE; | ||
159 | retval->line = skin_line; | ||
160 | retval->children_count = 1; | ||
161 | retval->children = skin_alloc_children(1); | ||
154 | 162 | ||
155 | while(*cursor != '\n' && *cursor != '\0' && *cursor != MULTILINESYM | 163 | while(*cursor != '\n' && *cursor != '\0' && *cursor != MULTILINESYM |
156 | && !((*cursor == ARGLISTSEPERATESYM | 164 | && !((*cursor == ARGLISTSEPERATESYM |
@@ -214,7 +222,8 @@ struct skin_element* skin_parse_line_optional(char** document, int conditional) | |||
214 | /* Moving up the calling function's pointer */ | 222 | /* Moving up the calling function's pointer */ |
215 | *document = cursor; | 223 | *document = cursor; |
216 | 224 | ||
217 | return root; | 225 | retval->children[0] = root; |
226 | return retval; | ||
218 | } | 227 | } |
219 | 228 | ||
220 | struct skin_element* skin_parse_sublines(char** document) | 229 | struct skin_element* skin_parse_sublines(char** document) |
@@ -233,6 +242,7 @@ struct skin_element* skin_parse_sublines_optional(char** document, | |||
233 | retval = skin_alloc_element(); | 242 | retval = skin_alloc_element(); |
234 | retval->type = SUBLINES; | 243 | retval->type = SUBLINES; |
235 | retval->next = NULL; | 244 | retval->next = NULL; |
245 | retval->line = skin_line; | ||
236 | 246 | ||
237 | /* First we count the sublines */ | 247 | /* First we count the sublines */ |
238 | while(*cursor != '\0' && *cursor != '\n' | 248 | while(*cursor != '\0' && *cursor != '\n' |
@@ -276,7 +286,7 @@ struct skin_element* skin_parse_sublines_optional(char** document, | |||
276 | skin_error(MULTILINE_EXPECTED); | 286 | skin_error(MULTILINE_EXPECTED); |
277 | return NULL; | 287 | return NULL; |
278 | } | 288 | } |
279 | else | 289 | else if(i != sublines - 1) |
280 | { | 290 | { |
281 | cursor++; | 291 | cursor++; |
282 | } | 292 | } |
diff --git a/utils/themeeditor/skin_parser.h b/utils/themeeditor/skin_parser.h index 50980023b5..7de726bbfc 100644 --- a/utils/themeeditor/skin_parser.h +++ b/utils/themeeditor/skin_parser.h | |||
@@ -41,7 +41,8 @@ enum skin_element_type | |||
41 | COMMENT, | 41 | COMMENT, |
42 | TAG, | 42 | TAG, |
43 | CONDITIONAL, | 43 | CONDITIONAL, |
44 | SUBLINES | 44 | SUBLINES, |
45 | LINE | ||
45 | }; | 46 | }; |
46 | 47 | ||
47 | enum skin_errorcode | 48 | enum skin_errorcode |