Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/bin


Modified Files:
        main.c 


Log Message:
- working on displaying the tutorial tab correctly

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/bin/main.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- main.c      11 Mar 2006 23:18:53 -0000      1.19
+++ main.c      12 Mar 2006 01:35:34 -0000      1.20
@@ -22,7 +22,8 @@
 static void run_unit_tests(Ewl_Test *test);
 static int create_main_test_window(Ewl_Container *win);
 static void fill_source_text(Ewl_Test *test);
-static void text_parse(Ewl_Test *test, char *str);
+static void text_parse(char *str);
+static void tutorial_parse(Ewl_Text *tutorial, char *str);
 static void setup_unit_tests(Ewl_Test *test);
 
 static int ewl_test_cb_unit_test_timer(void *data);
@@ -460,6 +461,7 @@
        o = ewl_text_new();
        ewl_container_child_append(EWL_CONTAINER(o2), o);
        ewl_widget_name_set(o, "source_text");
+       ewl_text_selectable_set(EWL_TEXT(o), TRUE);
        ewl_widget_show(o);
 
        o2 = ewl_scrollpane_new();
@@ -470,6 +472,7 @@
        o = ewl_text_new();
        ewl_container_child_append(EWL_CONTAINER(o2), o);
        ewl_widget_name_set(o, "tutorial_text");
+       ewl_text_selectable_set(EWL_TEXT(o), TRUE);
        ewl_widget_show(o);
 
        return 1;
@@ -496,7 +499,7 @@
                str[buf.st_size] = '\0';
                fclose(file);
 
-               text_parse(test, str);
+               text_parse(str);
                free(str);
        }
 }
@@ -566,7 +569,7 @@
 }
 
 static void
-text_parse(Ewl_Test *test __UNUSED__, char *str)
+text_parse(char *str)
 {
        Ewl_Widget *txt, *tutorial;
        char *start, *end, tmp;
@@ -597,9 +600,99 @@
        tmp = *(end + 1);
        *(end + 1) = '\0';
 
-       ewl_text_text_set(EWL_TEXT(tutorial), start);
+       tutorial_parse(EWL_TEXT(tutorial), start);
 
        *(end + 1) = tmp;
 }
 
+static void
+tutorial_parse(Ewl_Text *tutorial, char *str)
+{
+       char *ptr, *ptr2;
+
+       ptr = str;
+
+       /* move past the comment stuff to the start of the tutorial */
+       while ((*ptr == '/') || (*ptr == '*') || (*ptr == '\n')
+                       || (*ptr == ' '))
+               ptr ++;
+
+       /* while we've still got data */
+       while (ptr != NULL)
+       {
+               ptr2 = ptr;
+               while ((*ptr2 != '*') && (*ptr2 != '@') && (*ptr2 != NULL))
+                       ptr2 ++;
+
+               if (ptr2 == NULL)
+               {
+                       ewl_text_text_append(tutorial, ptr);
+                       break;
+               }
+               else if (*ptr2 == '*')
+               {
+                       char *prev;
+
+                       prev = ptr2;
+                       while ((*ptr2 == '*') || (*ptr2 == ' ')) ptr2 --;
+                       *(++ptr2) = '\0';
+
+                       if (ptr2 > ptr)
+                               ewl_text_text_append(tutorial, ptr);
+
+                       ptr2 = prev;
+
+                       /* we're done if we have a / */
+                       if (*(ptr2 + 1) == '/')
+                               break;
+
+                       while ((*ptr2 == '*') || (*ptr2 == ' ')) ptr2 ++;
+               }
+               else if (*ptr2 == '@')
+               {
+                       char *tmp;
+
+                       *ptr2 = '\0';
+                       ewl_text_text_append(tutorial, ptr);
+
+                       ptr2++;
+                       if ((!strncmp(ptr2, "addtogroup", 10))
+                                       || (!strncmp(ptr2, "section", 7)))
+                       {
+                               int size = 14;
+
+                               if (!strncmp(ptr2, "addtogroup", 10))
+                                       size = 18;
+
+                               ptr2 = strstr(ptr2, "\n");
+                               tmp = ptr2;
+
+                               while (*tmp != ' ') tmp --;
+                               *ptr2 = '\0';
+
+                               ewl_text_font_size_set(tutorial, size);
+                               ewl_text_text_append(tutorial, tmp);
+                               ewl_text_text_append(tutorial, "\n");
+                               ewl_text_font_size_set(tutorial, 10);
+                               
+                               ptr2 ++;
+                       }
+                       else if (!strncmp(ptr2, "code", 4))
+                       {
+                               ptr2 += strlen("code\n");
+                               ewl_text_bg_color_set(tutorial, 
+                                               128, 128, 128, 255);
+                       }
+                       else if (!strncmp(ptr2, "endcode", 7))
+                       {
+                               ptr2 += strlen("endcode\n");
+                               ewl_text_bg_color_set(tutorial,
+                                               255, 255, 255, 255);
+                       }
+                       else
+                               printf("Didn't match (%s)\n", ptr2);
+               }
+               ptr = ptr2;
+       }
+}
 




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to