]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/applet/prepifelse.cpp
formatting changes
[wxWidgets.git] / contrib / src / applet / prepifelse.cpp
index cc209ce795f622de51d303b2bf2e71bc12bd395d..2880af3bef16dde97587bf651001d50ca7e05b49 100644 (file)
@@ -86,14 +86,19 @@ wxString wxIfElsePrep::Process(
 {
        int b;
        char ft[] = "<!--#if ";
-       
+       char ftnot[] = "<!--#if NOT ";
+    char ftnot2[] = "<!--#if !";
+
+       
        // make a copy so we can replace text as we go without affecting the original
        wxString output = text;
     while ((b = ReverseFind(output.Lower(), ft)) != -1) {
-               // Loop until every #echo directive is found
+               // Loop until every #if directive is found
                // We search from the end of the string so that #if statements will properly recurse
                // and we avoid the hassle of matching statements with the correct <!--#endif-->
-               int end, c, n;
+        bool notval = false;
+        int off = 0;
+        int end, c, n;
         wxString usecode, code;
         wxString cname;
         wxString tag;
@@ -101,6 +106,15 @@ wxString wxIfElsePrep::Process(
 
         code = wxString("");
 
+        if (output.Mid(b, strlen(ftnot) ).CmpNoCase(ftnot) == 0 ) {
+            notval = true;
+            off = 4;
+            }
+        else if (output.Mid(b, strlen(ftnot2) ).CmpNoCase(ftnot2) == 0 ) {
+            notval = true;
+            off = 1;
+            }
+
         // grab the tag and get the name of the variable
         end = (output.Mid(b)).Find("-->");
         if (end == -1) {
@@ -118,10 +132,10 @@ wxString wxIfElsePrep::Process(
         n = c;
 
         // find the classname
-        c = (tag.Mid(8, n-8)).Find(" ");
-           if (c == -1) n -= 8;
+        c = (tag.Mid(8+off, n-(8+off))).Find(" ");
+           if (c == -1) n -= (8+off);
         else n = c;
-        cname = tag.Mid(8, n);
+        cname = tag.Mid(8+off, n);
 
         cname.Trim(false);
         c = cname.Find("\"");
@@ -131,6 +145,7 @@ wxString wxIfElsePrep::Process(
 
         // Grab the value from the variable class identified by cname
         value = wxIfElseVariable::FindValue(cname);
+        if (notval) value = !value;
 
         // Find the end of the tag (<!--#endif-->) and copy it all into the variable code
         end = ((output.Mid(b)).Lower()).Find("<!--#endif-->");