X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d44f866a666b0705603a72dd489a60dd58d42164..65fd5cb0124e62ab1fc41f93382a205d95b00e75:/src/common/resource.cpp diff --git a/src/common/resource.cpp b/src/common/resource.cpp index 2a8430f6b5..5e4842f6b3 100644 --- a/src/common/resource.cpp +++ b/src/common/resource.cpp @@ -39,23 +39,21 @@ #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); @@ -826,7 +829,7 @@ wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr) wxString str(expr->Nth(count)->StringValue()); count ++; - if (str != "") + if (str != _T("")) { controlItem->SetValue4(str); controlItem->SetType(_T("wxBitmapButton")); @@ -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,9 +1620,9 @@ 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)); + wxChar *value = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer)); if (wxIsalpha(value[0])) { int val = (int)wxAtol(value); @@ -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; @@ -1880,6 +1896,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 }, @@ -2024,7 +2043,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 +2060,7 @@ long wxParseWindowStyle(const wxString& bitListString) wxLogWarning(_("Unrecognized style %s whilst parsing resource."), word); return 0; } + word = wxResourceParseWord(WXSTRINGCAST bitListString, &i); } return bitList; } @@ -2057,7 +2078,7 @@ wxBitmap wxResourceCreateBitmap(const wxString& resource, wxResourceTable *table wxItemResource *item = table->FindResource(resource); if (item) { - if ((item->GetType() == "") || (item->GetType() != "wxBitmap")) + if ((item->GetType() == _T("")) || (item->GetType() != _T("wxBitmap"))) { wxLogWarning(_("%s not a bitmap resource specification."), (const wxChar*) resource); return wxNullBitmap; @@ -2505,9 +2526,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 +2566,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,9 +2699,9 @@ 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)); + wxChar *value = copystring(wxConvCurrent->cMB2WX(wxResourceBuffer)); if (wxIsalpha(value[0])) { int val = (int)wxAtol(value); @@ -2719,7 +2744,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 +2854,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 +2893,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 +2940,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;