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"
// 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 <wx/wx.h>
+#include "wx/wx.h"
#endif
#include "wx/image.h"
#include "wx/deprecated/setup.h"
#include "wx/deprecated/resource.h"
-#include <wx/textfile.h>
-#include <wx/tokenzr.h>
+#include "wx/textfile.h"
+#include "wx/tokenzr.h"
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<font>\n"));
m_xmlfile.Write(_T("\t\t\t<size>")+ptsize+_T("</size>\n"));
m_xmlfile.Write(_T("\t\t\t<face>")+face+_T("</face>\n"));
m_xmlfile.Write(_T("\t\t</font>\n"));
- }
+ }
token=GetToken();
}
}
-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;
}
return ret; // check for more parameters
}
-wxString rc2xml::GetToken(bool *listseperator)
+wxString rc2xml::GetToken(bool *listseparator)
{
wxString token=wxEmptyString;
return token;
}
- while (Seperator(ch))
+ while (Separator(ch))
{
ReadChar(ch);
if (m_done)
}
- while (!Seperator(ch))
+ while (!Separator(ch))
{
token += (char)ch;
ReadChar(ch);
if (ch == EOF)
m_done = true;
- if (listseperator)
- *listseperator = (ch == ',');
+ if (listseparator)
+ *listseparator = (ch == ',');
return token;
}
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;
}
if ((ch=='\n')&&(lastch=='\\')) // lastch <should> be this
phrase+='n'; // escape
else
- phrase+=(char)ch;
+ phrase+=(char)ch;
+
lastch=ch;
- ReadChar(ch);
+ ReadChar(ch);
}
return phrase;
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)
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 |
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);
void rc2xml::ParseBitmap(wxString varname)
{
- wxString token,*bitmapfile;
+ wxString token;
+ wxString *bitmapfile;
token=PeekToken();
//Microsoft notation?
//IDR_MAINFRAME ICON DISCARDABLE "res\\mfcexample.ico"
void rc2xml::ParseIcon(wxString varname)
{
- wxString token,*iconfile;
+ wxString token;
+ wxString *iconfile;
iconfile=new wxString;
token=PeekToken();
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;