]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/resource.cpp
Now uses wxSocketBase::Error() to see if last IO call failed
[wxWidgets.git] / src / common / resource.cpp
index 68cbc874d7e83addfa652a9fc7ba0f7a332e53d8..61ad5cf33dcc2b5a03884e1d34e70c18cf14bb9a 100644 (file)
 #include "wx/button.h"
 #include "wx/bmpbuttn.h"
 #include "wx/radiobox.h"
-#include "wx/radiobut.h"
 #include "wx/listbox.h"
 #include "wx/choice.h"
 #include "wx/checkbox.h"
 #include "wx/settings.h"
 #include "wx/slider.h"
+#include "wx/icon.h"
 #include "wx/statbox.h"
 #include "wx/statbmp.h"
-#if wxUSE_GAUGE
 #include "wx/gauge.h"
-#endif
 #include "wx/textctrl.h"
 #include "wx/msgdlg.h"
 #include "wx/intl.h"
 #endif
 
-#if wxUSE_RADIOBUTTON
+#if wxUSE_RADIOBTN
 #include "wx/radiobut.h"
 #endif
 
@@ -193,7 +191,8 @@ bool wxResourceTable::DeleteResource(const wxString& name)
     // parent's child list.
     BeginFind();
     wxNode *node = (wxNode *) NULL;
-    while ((node = Next()))
+    node = Next();
+    while (node != NULL)
     {
       wxItemResource *parent = (wxItemResource *)node->Data();
       if (parent->GetChildren().Member(item))
@@ -201,6 +200,7 @@ bool wxResourceTable::DeleteResource(const wxString& name)
         parent->GetChildren().DeleteObject(item);
         break;
       }
+      node = Next();
     }
 
     delete item;
@@ -372,7 +372,7 @@ wxControl *wxResourceTable::CreateItem(wxWindow *parent, const wxItemResource* c
         ((wxGauge *)control)->SetValue((int)childResource->GetValue1());
       }
 #endif
-#if wxUSE_RADIOBUTTON
+#if wxUSE_RADIOBTN
    else if (itemType == wxString(_T("wxRadioButton")))
       {
         control = new wxRadioButton(parent, id, childResource->GetTitle(), // (int)childResource->GetValue1(),
@@ -651,6 +651,9 @@ wxItemResource *wxResourceInterpretDialog(wxResourceTable& table, wxExpr *expr,
   }
   dialogItem->SetStyle(windowStyle);
   dialogItem->SetValue1(isModal);
+  if (windowStyle & wxDIALOG_MODAL) // Uses style in wxWin 2
+    dialogItem->SetValue1(TRUE);
+
   dialogItem->SetName(name);
   dialogItem->SetTitle(title);
   dialogItem->SetSize(x, y, width, height);
@@ -858,7 +861,7 @@ wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr)
         controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count)));
     }
   }
-#if wxUSE_RADIOBUTTON
+#if wxUSE_RADIOBTN
   else if (controlType == _T("wxRadioButton"))
   {
     // Check for default value
@@ -1478,46 +1481,59 @@ bool wxReallocateResourceBuffer()
 
 static bool wxEatWhiteSpace(FILE *fd)
 {
-  int ch = getc(fd);
-  if ((ch != ' ') && (ch != '/') && (ch != ' ') && (ch != 10) && (ch != 13) && (ch != 9))
-  {
-    ungetc(ch, fd);
-    return TRUE;
-  }
+  int ch = 0;
 
-  // Eat whitespace
-  while (ch == ' ' || ch == 10 || ch == 13 || ch == 9)
-    ch = getc(fd);
-  // Check for comment
-  if (ch == '/')
-  {
-    ch = getc(fd);
-    if (ch == '*')
-    {
-      bool finished = FALSE;
-      while (!finished)
+   while ((ch = getc(fd)) != EOF)
       {
-        ch = getc(fd);
-        if (ch == EOF)
-          return FALSE;
-        if (ch == '*')
-        {
-          int newCh = getc(fd);
-          if (newCh == '/')
-            finished = TRUE;
-          else
-          {
-            ungetc(newCh, fd);
-          }
-        }
+      switch (ch)
+         {
+         case ' ':
+         case 0x0a:
+         case 0x0d:
+         case 0x09:
+            break;
+         case '/':
+            {
+            int prev_ch = ch;
+            ch = getc(fd);
+            if (ch == EOF)
+               {
+               ungetc(prev_ch, fd);
+               return TRUE;
+               }
+
+            if (ch == '*')
+               {
+               // Eat C comment
+               prev_ch = 0;
+               while ((ch = getc(fd)) != EOF)
+                  {
+                  if (ch == '/' && prev_ch == '*')
+                     break;
+                  prev_ch = ch;
+                  }
+               }
+            else if (ch == '/')
+               {
+               // Eat C++ comment
+               static char buffer[255];
+               fgets(buffer, 255, fd);
+               }
+            else
+               {
+               ungetc(prev_ch, fd);
+               ungetc(ch, fd);
+               return TRUE;
+               }
+            }
+            break;
+         default:
+            ungetc(ch, fd);
+            return TRUE;
+
+         }
       }
-    }
-    else // False alarm
-      return FALSE;
-  }
-  else
-    ungetc(ch, fd);
-  return wxEatWhiteSpace(fd);
+   return FALSE;
 }
 
 bool wxGetResourceToken(FILE *fd)
@@ -1604,10 +1620,10 @@ bool wxResourceReadOneResource(FILE *fd, wxExprDatabase& db, bool *eof, wxResour
   if (strcmp(wxResourceBuffer, "#define") == 0)
   {
     wxGetResourceToken(fd);
-    wxChar *name = copystring(wxConv_libc.cMB2WX(wxResourceBuffer));
+    wxChar *name = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer));
     wxGetResourceToken(fd);
-    wxChar *value = copystring(wxConv_libc.cMB2WX(wxResourceBuffer));
-    if (wxIsalpha(value[0]))
+    wxChar *value = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer));
+    if (wxIsdigit(value[0]))
     {
       int val = (int)wxAtol(value);
       wxResourceAddIdentifier(name, val, table);
@@ -1627,7 +1643,7 @@ bool wxResourceReadOneResource(FILE *fd, wxExprDatabase& db, bool *eof, wxResour
   else if (strcmp(wxResourceBuffer, "#include") == 0)
   {
     wxGetResourceToken(fd);
-    wxChar *name = copystring(wxConv_libc.cMB2WX(wxResourceBuffer));
+    wxChar *name = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer));
     wxChar *actualName = name;
     if (name[0] == _T('"'))
       actualName = name + 1;
@@ -1645,7 +1661,7 @@ bool wxResourceReadOneResource(FILE *fd, wxExprDatabase& db, bool *eof, wxResour
   {
     wxChar buf[300];
     wxStrcpy(buf, _("Found "));
-    wxStrncat(buf, wxConv_libc.cMB2WX(wxResourceBuffer), 30);
+    wxStrncat(buf, wxConvCurrent->cMB2WX(wxResourceBuffer), 30);
     wxStrcat(buf, _(", expected static, #include or #define\nwhilst parsing resource."));
     wxLogWarning(buf);
     return FALSE;
@@ -1797,6 +1813,7 @@ static wxResourceBitListStruct wxResourceBitListTable[] =
   { _T("wxTE_READONLY"), wxTE_READONLY},
   { _T("wxTE_PROCESS_ENTER"), wxTE_PROCESS_ENTER},
   { _T("wxTE_MULTILINE"), wxTE_MULTILINE},
+  { _T("wxTE_NO_VSCROLL"), wxTE_NO_VSCROLL},
 
   /* wxRadioBox/wxRadioButton */
   { _T("wxRB_GROUP"), wxRB_GROUP },
@@ -1880,6 +1897,9 @@ static wxResourceBitListStruct wxResourceBitListTable[] =
   { _T("wxTB_VERTICAL"), wxTB_VERTICAL},
   { _T("wxTB_FLAT"), wxTB_FLAT},
 
+  /* wxDialog */
+  { _T("wxDIALOG_MODAL"), wxDIALOG_MODAL },
+
   /* Generic */
   { _T("wxVSCROLL"), wxVSCROLL },
   { _T("wxHSCROLL"), wxHSCROLL },
@@ -1916,6 +1936,7 @@ static wxResourceBitListStruct wxResourceBitListTable[] =
   { _T("wxTRANSPARENT_WINDOW"), wxTRANSPARENT_WINDOW},
   { _T("wxNO_BORDER"), wxNO_BORDER},
   { _T("wxCLIP_CHILDREN"), wxCLIP_CHILDREN},
+  { _T("wxTAB_TRAVERSAL"), 0}, // Compatibility only
 
   { _T("wxTINY_CAPTION_HORIZ"), wxTINY_CAPTION_HORIZ},
   { _T("wxTINY_CAPTION_VERT"), wxTINY_CAPTION_VERT},
@@ -2024,7 +2045,8 @@ long wxParseWindowStyle(const wxString& bitListString)
   int i = 0;
   wxChar *word;
   long bitList = 0;
-  while ((word = wxResourceParseWord(WXSTRINGCAST bitListString, &i)))
+  word = wxResourceParseWord(WXSTRINGCAST bitListString, &i);
+  while (word != NULL)
   {
     bool found = FALSE;
     int j;
@@ -2040,6 +2062,7 @@ long wxParseWindowStyle(const wxString& bitListString)
       wxLogWarning(_("Unrecognized style %s whilst parsing resource."), word);
       return 0;
     }
+    word = wxResourceParseWord(WXSTRINGCAST bitListString, &i);
   }
   return bitList;
 }
@@ -2474,7 +2497,7 @@ bool wxResourceAddIdentifier(const wxString& name, int value, wxResourceTable *t
   if (!table)
     table = wxDefaultResourceTable;
 
-  table->identifiers.Put(name, (wxObject *)value);
+  table->identifiers.Put(name, (wxObject *)(long)value);
   return TRUE;
 }
 
@@ -2483,7 +2506,7 @@ int wxResourceGetIdentifier(const wxString& name, wxResourceTable *table)
   if (!table)
     table = wxDefaultResourceTable;
 
-  return (int)table->identifiers.Get(name);
+  return (int)(long)table->identifiers.Get(name);
 }
 
 /*
@@ -2505,9 +2528,9 @@ bool wxResourceParseIncludeFile(const wxString& f, wxResourceTable *table)
     if (strcmp(wxResourceBuffer, "#define") == 0)
     {
       wxGetResourceToken(fd);
-      wxChar *name = copystring(wxConv_libc.cMB2WX(wxResourceBuffer));
+      wxChar *name = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer));
       wxGetResourceToken(fd);
-      wxChar *value = copystring(wxConv_libc.cMB2WX(wxResourceBuffer));
+      wxChar *value = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer));
       if (wxIsdigit(value[0]))
       {
         int val = (int)wxAtol(value);
@@ -2545,49 +2568,53 @@ static int ungetc_string()
 
 bool wxEatWhiteSpaceString(char *s)
 {
-  int ch = getc_string(s);
-  if (ch == EOF)
-    return TRUE;
-
-  if ((ch != ' ') && (ch != '/') && (ch != ' ') && (ch != 10) && (ch != 13) && (ch != 9))
-  {
-    ungetc_string();
-    return TRUE;
-  }
+  int ch = 0;
 
-  // Eat whitespace
-  while (ch == ' ' || ch == 10 || ch == 13 || ch == 9)
-    ch = getc_string(s);
-  // Check for comment
-  if (ch == '/')
-  {
-    ch = getc_string(s);
-    if (ch == '*')
-    {
-      bool finished = FALSE;
-      while (!finished)
+   while ((ch = getc_string(s)) != EOF)
       {
-        ch = getc_string(s);
-        if (ch == EOF)
-          return FALSE;
-        if (ch == '*')
-        {
-          int newCh = getc_string(s);
-          if (newCh == '/')
-            finished = TRUE;
-          else
-          {
+      switch (ch)
+         {
+         case ' ':
+         case 0x0a:
+         case 0x0d:
+         case 0x09:
+            break;
+         case '/':
+            {
+            int prev_ch = ch;
+            ch = getc_string(s);
+            if (ch == EOF)
+               {
+               ungetc_string();
+               return TRUE;
+               }
+
+            if (ch == '*')
+               {
+               // Eat C comment
+               prev_ch = 0;
+               while ((ch = getc_string(s)) != EOF)
+                  {
+                  if (ch == '/' && prev_ch == '*')
+                     break;
+                  prev_ch = ch;
+                  }
+               }
+            else
+               {
+               ungetc_string();
+               ungetc_string();
+               return TRUE;
+               }
+            }
+            break;
+         default:
             ungetc_string();
-          }
-        }
+            return TRUE;
+
+         }
       }
-    }
-    else // False alarm
-      return FALSE;
-  }
-  else if (ch != EOF)
-    ungetc_string();
-  return wxEatWhiteSpaceString(s);
+   return FALSE;
 }
 
 bool wxGetResourceTokenString(char *s)
@@ -2674,10 +2701,10 @@ bool wxResourceReadOneResourceString(char *s, wxExprDatabase& db, bool *eof, wxR
   if (strcmp(wxResourceBuffer, "#define") == 0)
   {
     wxGetResourceTokenString(s);
-    wxChar *name = copystring(wxConv_libc.cMB2WX(wxResourceBuffer));
+    wxChar *name = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer));
     wxGetResourceTokenString(s);
-    wxChar *value = copystring(wxConv_libc.cMB2WX(wxResourceBuffer));
-    if (wxIsalpha(value[0]))
+    wxChar *value = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer));
+    if (wxIsdigit(value[0]))
     {
       int val = (int)wxAtol(value);
       wxResourceAddIdentifier(name, val, table);
@@ -2719,7 +2746,7 @@ bool wxResourceReadOneResourceString(char *s, wxExprDatabase& db, bool *eof, wxR
   {
     wxChar buf[300];
     wxStrcpy(buf, _("Found "));
-    wxStrncat(buf, wxConv_libc.cMB2WX(wxResourceBuffer), 30);
+    wxStrncat(buf, wxConvCurrent->cMB2WX(wxResourceBuffer), 30);
     wxStrcat(buf, _(", expected static, #include or #define\nwhilst parsing resource."));
     wxLogWarning(buf);
     return FALSE;
@@ -2829,7 +2856,7 @@ bool wxResourceParseString(char *s, wxResourceTable *table)
  * resource loading facility
  */
 
-bool wxWindow::LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table)
+bool wxWindowBase::LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table)
 {
   if (!table)
     table = wxDefaultResourceTable;
@@ -2868,7 +2895,7 @@ bool wxWindow::LoadFromResource(wxWindow *parent, const wxString& resourceName,
   }
   else
   {
-    if (!this->Create(parent, -1, wxPoint(x, y), wxSize(width, height), theWindowStyle, name))
+    if (!((wxWindow *)this)->Create(parent, -1, wxPoint(x, y), wxSize(width, height), theWindowStyle, name))
       return FALSE;
   }
 
@@ -2915,7 +2942,7 @@ bool wxWindow::LoadFromResource(wxWindow *parent, const wxString& resourceName,
   return TRUE;
 }
 
-wxControl *wxWindow::CreateItem(const wxItemResource *resource, const wxItemResource* parentResource, const wxResourceTable *table)
+wxControl *wxWindowBase::CreateItem(const wxItemResource *resource, const wxItemResource* parentResource, const wxResourceTable *table)
 {
   if (!table)
     table = wxDefaultResourceTable;