X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/19311d4e7c43a3f6243bf805c164fd76cada0386..65baafba0e8cd74f2264b7e2f7625ff5bea84864:/contrib/utils/convertrc/rc2xml.cpp diff --git a/contrib/utils/convertrc/rc2xml.cpp b/contrib/utils/convertrc/rc2xml.cpp index 386d02a27b..84550e0205 100644 --- a/contrib/utils/convertrc/rc2xml.cpp +++ b/contrib/utils/convertrc/rc2xml.cpp @@ -15,11 +15,6 @@ cross platform (wxGTK,etc) 3. Be able to abort incorrectly formated files without crashing */ -#ifdef __GNUG__ -#pragma implementation "rc2xml.cpp" -#pragma interface "rc2xml.cpp" -#endif - // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" @@ -30,7 +25,7 @@ cross platform (wxGTK,etc) // for all others, include the necessary headers (this file is usually all you // need because it includes almost all "standard" wxWidgets headers #ifndef WX_PRECOMP -#include +#include "wx/wx.h" #endif @@ -38,8 +33,8 @@ cross platform (wxGTK,etc) #include "wx/image.h" #include "wx/deprecated/setup.h" #include "wx/deprecated/resource.h" -#include -#include +#include "wx/textfile.h" +#include "wx/tokenzr.h" @@ -146,22 +141,22 @@ microsoft reuses the keyword DIALOG for other things while ((token!=_T("BEGIN"))&(token!=_T("{"))) { - if (token==_T("CAPTION")) + if (token==_T("CAPTION")) { - title=GetQuoteField(); + title=GetQuoteField(); } //TODO fix face name so that it is cross platform name // FONT 8, "MS Sans Serif" if (token==_T("FONT")) - { + { ptsize=GetToken(); face=GetQuoteField(); m_xmlfile.Write(_T("\t\t\n")); m_xmlfile.Write(_T("\t\t\t")+ptsize+_T("\n")); m_xmlfile.Write(_T("\t\t\t")+face+_T("\n")); m_xmlfile.Write(_T("\t\t\n")); - } + } token=GetToken(); } @@ -343,17 +338,17 @@ void rc2xml::ParsePushButton(wxString phrase, wxString varname) } -bool rc2xml::Seperator(int ch) +bool rc2xml::Separator(int ch) { //if ((ch==' ')|(ch==',')|(ch==13)|(ch==10)|(ch=='|')|(ch=='\t')) if ((ch==' ')|(ch==',')|(ch==13)|(ch==10)|(ch=='\t')) return true; if (ch==EOF) - { + { m_done=true; return true; - } + } return false; } @@ -388,7 +383,7 @@ bool rc2xml::ReadRect(int & x, int & y, int & width, int & height) return ret; // check for more parameters } -wxString rc2xml::GetToken(bool *listseperator) +wxString rc2xml::GetToken(bool *listseparator) { wxString token=wxEmptyString; @@ -406,7 +401,7 @@ wxString rc2xml::GetToken(bool *listseperator) return token; } - while (Seperator(ch)) + while (Separator(ch)) { ReadChar(ch); if (m_done) @@ -419,7 +414,7 @@ wxString rc2xml::GetToken(bool *listseperator) } - while (!Seperator(ch)) + while (!Separator(ch)) { token += (char)ch; ReadChar(ch); @@ -428,8 +423,8 @@ wxString rc2xml::GetToken(bool *listseperator) if (ch == EOF) m_done = true; - if (listseperator) - *listseperator = (ch == ','); + if (listseparator) + *listseparator = (ch == ','); return token; } @@ -477,23 +472,24 @@ wxString rc2xml::GetStringQuote() wxString phrase; //ASCII code 34 " bool done=false; - int p,ch=0,lastch=0; + int ch=0,lastch=0; ReadChar(ch); while (ch!=34) ReadChar(ch); + ReadChar(ch); while (done==false) - { + { if ((ch==34)&&(lastch!='\\')) - { - p=m_rc.Tell(); + { + wxFileOffset p = m_rc.Tell(); ReadChar(ch); -// RC supports "", for embedded quote, as well as \" + // RC supports "", for embedded quote, as well as \" if (ch==34) phrase+='\\'; else - { + { m_rc.Seek(p); done = true; } @@ -505,9 +501,10 @@ wxString rc2xml::GetStringQuote() if ((ch=='\n')&&(lastch=='\\')) // lastch be this phrase+='n'; // escape else - phrase+=(char)ch; + phrase+=(char)ch; + lastch=ch; - ReadChar(ch); + ReadChar(ch); } return phrase; @@ -515,15 +512,14 @@ wxString rc2xml::GetStringQuote() void rc2xml::ReadChar(int &ch) { - int result; - result=m_rc.Tell(); + wxFileOffset result = m_rc.Tell(); if((result>=m_filesize)) m_done=true; - result=m_rc.Read(&ch,1); + result = m_rc.Read(&ch,1); - if((result==-1)) + if( result == wxInvalidOffset ) m_done=true; if(ch==EOF) @@ -620,25 +616,22 @@ void rc2xml::ParsePopupMenu() wxString rc2xml::PeekToken() { - wxString token; - int p; - p=m_rc.Tell(); - token=GetToken(); + wxFileOffset p = m_rc.Tell(); + wxString token=GetToken(); m_rc.Seek(p); return token; } + //MS Windows pain in the butt CONTROL void rc2xml::ParseControlMS() { - wxString label,varname,kindctrl,token; - token=PeekToken(); + wxString token = PeekToken(); if (token.Contains(_T("\""))) ParseNormalMSControl(); else ParseWeirdMSControl(); - } /* CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | @@ -705,15 +698,14 @@ bool rc2xml::ReadOrs(wxString & orstring) void rc2xml::ParseCtrlButton(wxString label, wxString varname) { wxString token; - int p; - p=m_rc.Tell(); + wxFileOffset p = m_rc.Tell(); ReadOrs(token); m_rc.Seek(p); if (token.Find(_T("BS_AUTOCHECKBOX"))!=wxNOT_FOUND) ParseCheckBox(label, varname); else if ((token.Find(_T("BS_AUTORADIOBUTTON"))!=wxNOT_FOUND)|| - (token.Find(_T("BS_RADIOBUTTON"))!=wxNOT_FOUND)) + (token.Find(_T("BS_RADIOBUTTON"))!=wxNOT_FOUND)) ParseRadioButton(label, varname); else if (token.Find(_T("BS_GROUPBOX"))!=wxNOT_FOUND) ParseGroupBox(label, varname); @@ -1184,70 +1176,63 @@ void rc2xml::ParseStaticBitmap(wxString bitmapname, wxString varname) void rc2xml::ParseNormalMSControl() { -wxString label,varname,kindctrl; - -label=GetQuoteField(); -varname=GetToken(); -kindctrl=GetQuoteField(); -kindctrl.MakeUpper(); + wxString label=GetQuoteField(); + wxString varname=GetToken(); + wxString kindctrl=GetQuoteField(); + kindctrl.MakeUpper(); if (kindctrl==_T("MSCTLS_UPDOWN32")) ParseSpinCtrl(label,varname); - if (kindctrl==_T("MSCTLS_TRACKBAR32")) + else if (kindctrl==_T("MSCTLS_TRACKBAR32")) ParseSlider(label,varname); - if (kindctrl==_T("MSCTLS_PROGRESS32")) + else if (kindctrl==_T("MSCTLS_PROGRESS32")) ParseProgressBar(label,varname); - if (kindctrl==_T("SYSTREEVIEW32")) + else if (kindctrl==_T("SYSTREEVIEW32")) ParseTreeCtrl(label,varname); - if (kindctrl==_T("SYSMONTHCAL32")) + else if (kindctrl==_T("SYSMONTHCAL32")) ParseCalendar(label,varname); - if (kindctrl==_T("SYSLISTVIEW32")) + else if (kindctrl==_T("SYSLISTVIEW32")) ParseListCtrl(label,varname); - if (kindctrl==_T("BUTTON")) + else if (kindctrl==_T("BUTTON")) ParseCtrlButton(label,varname); - if (kindctrl==_T("RICHEDIT")) + else if (kindctrl==_T("RICHEDIT")) ParseRichEdit(label,varname); - if (kindctrl==_T("STATIC")) - { + else if (kindctrl==_T("STATIC")) + { wxString token; - int p=m_rc.Tell(); + wxFileOffset p = m_rc.Tell(); ReadOrs(token); m_rc.Seek(p); if (token.Find(_T("SS_BITMAP"))!=wxNOT_FOUND) ParseStaticBitmap(label,varname); else ParseStaticText(label,varname); - } - if (kindctrl==_T("EDIT")) + } + else if (kindctrl==_T("EDIT")) ParseTextCtrl(varname); - if (kindctrl==_T("LISTBOX")) + else if (kindctrl==_T("LISTBOX")) ParseListBox(varname); - if (kindctrl==_T("COMBOBOX")) + else if (kindctrl==_T("COMBOBOX")) ParseComboBox(varname); - } void rc2xml::ParseWeirdMSControl() { - wxString kindctrl; - wxString varname; - wxString id; - id=GetToken(); - varname=GetToken(); - kindctrl=GetQuoteField(); + wxString id = GetToken(); + wxString varname = GetToken(); + wxString kindctrl = GetQuoteField(); kindctrl.MakeUpper(); // CONTROL IDB_FACE,IDC_STATIC,"Static",SS_BITMAP,26,62,32,30 if (kindctrl==_T("STATIC")) - { + { if (PeekToken()==_T("SS_BITMAP")) ParseStaticBitmap(id,varname); else wxLogError(_T("Unknown MS Control Static token")); - } - + } } -//SCROLLBAR IDC_SCROLLBAR1,219,56,10,40,SBS_VERT +//SCROLLBAR IDC_SCROLLBAR1,219,56,10,40,SBS_VERT void rc2xml::ParseScrollBar() { wxString token;