git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
695 lines
15 KiB
C++
695 lines
15 KiB
C++
// wxr2xml.cpp: implementation of the wxWxr2Xml class.
|
|
// 8/30/00 Brian Gavin
|
|
// only tested on wxMSW so far
|
|
//////////////////////////////////////////////////////////////////////
|
|
/* TODO
|
|
port to wxGTK should be very easy
|
|
support fonts
|
|
add unsupported controls when XML format adds them
|
|
*/
|
|
#ifdef __GNUG__
|
|
#pragma implementation "wxr2xml.h"
|
|
#endif
|
|
|
|
// For compilers that support precompilation, includes "wx/wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/wx.h"
|
|
#endif
|
|
|
|
#include "wxr2xml.h"
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
wxWxr2Xml::wxWxr2Xml()
|
|
{
|
|
|
|
}
|
|
|
|
wxWxr2Xml::~wxWxr2Xml()
|
|
{
|
|
|
|
}
|
|
|
|
bool wxWxr2Xml::Convert(wxString wxrfile, wxString xmlfile)
|
|
{
|
|
bool result;
|
|
result=m_xmlfile.Open(xmlfile.c_str(),"w+t");
|
|
wxASSERT_MSG(result,"Couldn't create XML file");
|
|
if (!result)
|
|
return FALSE;
|
|
|
|
result=m_table.ParseResourceFile(wxrfile);
|
|
wxASSERT_MSG(result,"Couldn't Load WXR file");
|
|
if (!result)
|
|
return FALSE;
|
|
//Write basic xml header
|
|
m_xmlfile.Write("<?xml version=\"1.0\" ?>\n");
|
|
m_xmlfile.Write("<resource>\n");
|
|
result=ParseResources();
|
|
m_xmlfile.Write("</resource>\n");
|
|
|
|
m_xmlfile.Close();
|
|
|
|
return result;
|
|
}
|
|
|
|
bool wxWxr2Xml::ParseResources()
|
|
{
|
|
m_table.BeginFind();
|
|
wxNode *node;
|
|
|
|
while ((node = m_table.Next()))
|
|
{
|
|
wxItemResource *res = (wxItemResource *)node->Data();
|
|
wxString resType(res->GetType());
|
|
if (resType=="wxDialog")
|
|
ParseDialog(res);
|
|
else if (resType=="wxPanel")
|
|
ParsePanel(res);
|
|
else if (resType=="wxPanel")
|
|
ParsePanel(res);
|
|
else if (resType=="wxMenu")
|
|
ParseMenuBar(res);
|
|
else if (resType=="wxBitmap")
|
|
ParseBitmap(res);
|
|
else
|
|
wxLogError("Found unsupported resource "+resType);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void wxWxr2Xml::ParsePanel(wxItemResource *res)
|
|
{
|
|
|
|
m_xmlfile.Write(" <panel");
|
|
PanelStuff(res);
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write("\n");
|
|
m_xmlfile.Write(" <children>\n");
|
|
ParseControls(res);
|
|
m_xmlfile.Write(" </children>\n");
|
|
|
|
m_xmlfile.Write(" </panel>\n");
|
|
}
|
|
|
|
|
|
void wxWxr2Xml::ParseDialog(wxItemResource *res)
|
|
{
|
|
PanelStuff(res);
|
|
m_xmlfile.Write(" <dialog");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetTitle(res));
|
|
|
|
|
|
m_xmlfile.Write("\n");
|
|
m_xmlfile.Write(" <children>\n");
|
|
ParseControls(res);
|
|
m_xmlfile.Write(" </children>\n");
|
|
m_xmlfile.Write(" </dialog>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseControls(wxItemResource *res)
|
|
{
|
|
wxNode *node = res->GetChildren().First();
|
|
while (node)
|
|
{
|
|
wxItemResource *res = (wxItemResource *)node->Data();
|
|
wxString resType(res->GetType());
|
|
if (resType=="wxButton")
|
|
ParseButton(res);
|
|
else if ((resType=="wxTextCtrl")|(resType=="wxText")
|
|
|(resType=="wxMultiText"))
|
|
ParseTextCtrl(res);
|
|
else if (resType=="wxCheckBox")
|
|
ParseCheckBox(res);
|
|
else if (resType=="wxRadioBox")
|
|
ParseRadioBox(res);
|
|
else if (resType=="wxListBox")
|
|
ParseListBox(res);
|
|
else if ((resType=="wxStaticText")|(resType=="wxMessage"))
|
|
ParseStaticText(res);
|
|
else if (resType=="wxChoice")
|
|
ParseChoice(res);
|
|
else if (resType=="wxGauge")
|
|
ParseGauge(res);
|
|
else if (resType=="wxSlider")
|
|
ParseSlider(res);
|
|
else if (resType=="wxComboBox")
|
|
ParseComboBox(res);
|
|
else if (resType=="wxRadioButton")
|
|
ParseRadioButton(res);
|
|
else if (resType=="wxStaticBitmap")
|
|
ParseStaticBitmap(res);
|
|
else if (resType=="wxScrollBar")
|
|
wxLogError("wxScrollBar unsupported");
|
|
else if ((resType=="wxStaticBox")|(resType=="wxGroupBox"))
|
|
wxLogError("wxStaticBox unsupported");
|
|
else if (resType=="wxBitmapButton")
|
|
wxLogError("wxBitmapButton unsupported");
|
|
else
|
|
wxLogError("Found unsupported resource "+resType);
|
|
node = node->Next();
|
|
}
|
|
}
|
|
|
|
//Write out basic stuff every control has
|
|
// name,position,size,bg,fg
|
|
void wxWxr2Xml::WriteControlInfo(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(GenerateName(res));
|
|
m_xmlfile.Write(">\n");
|
|
m_xmlfile.Write(GetPosition(res));
|
|
m_xmlfile.Write(GetSize(res));
|
|
m_xmlfile.Write(GetStyles(res));
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetSize(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
if (m_dlgunits)
|
|
msg<<" <size>"<<res->GetWidth()<<","<<res->GetHeight()<<"d</size>";
|
|
else
|
|
msg<<" <size>"<<res->GetWidth()<<","<<res->GetHeight()<<"</size>";
|
|
return msg;
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetPosition(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
if (m_dlgunits)
|
|
msg<<" <pos>"<<res->GetX()<<","<<res->GetY()<<"d</pos>";
|
|
else
|
|
msg<<" <pos>"<<res->GetX()<<","<<res->GetY()<<"</pos>";
|
|
return msg;
|
|
}
|
|
|
|
void wxWxr2Xml::ParseButton(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <button");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetLabel(res));
|
|
m_xmlfile.Write("</button>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseTextCtrl(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <textctrl");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetValue4(res));
|
|
m_xmlfile.Write("</textctrl>\n");
|
|
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetTitle(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
msg=_T(" <title>"+res->GetTitle()+"</title>");
|
|
return msg;
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetValue4(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
msg=_T(" <value>"+res->GetValue4()+"</value>");
|
|
return msg;
|
|
}
|
|
|
|
void wxWxr2Xml::ParseCheckBox(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <checkbox");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetLabel(res));
|
|
m_xmlfile.Write(GetCheckStatus(res));
|
|
m_xmlfile.Write("</checkbox>\n");
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetLabel(wxItemResource *res)
|
|
{
|
|
return _T(" <label>"+res->GetTitle()+"</label>");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseRadioBox(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <radiobox");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetLabel(res));
|
|
//Add radio box items
|
|
WriteStringList(res);
|
|
//Value1
|
|
m_xmlfile.Write(GetDimension(res));
|
|
m_xmlfile.Write("\n </radiobox>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseListBox(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <listbox");
|
|
WriteControlInfo(res);
|
|
WriteStringList(res);
|
|
m_xmlfile.Write("</listbox>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseStaticText(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <statictext");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetLabel(res));
|
|
m_xmlfile.Write("</statictext>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseStaticBox(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <staticbox");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetLabel(res));
|
|
m_xmlfile.Write("</staticbox>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::WriteStringList(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write("\n <content>");
|
|
for ( wxStringListNode *node = res->GetStringValues().GetFirst(); node;
|
|
node = node->GetNext() )
|
|
{
|
|
const wxString s1 = node->GetData();
|
|
m_xmlfile.Write("\n <item>"+s1+"</item>");
|
|
}
|
|
m_xmlfile.Write("\n </content>");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseChoice(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <choice");
|
|
WriteControlInfo(res);
|
|
//Add choice items
|
|
WriteStringList(res);
|
|
m_xmlfile.Write("\n </choice>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseGauge(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <gauge");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetValue1(res));
|
|
m_xmlfile.Write(GetRange(res));
|
|
m_xmlfile.Write("\n </gauge>\n");
|
|
}
|
|
|
|
|
|
wxString wxWxr2Xml::GetValue1(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
msg<<" <value>"<<res->GetValue1()<<"</value>";
|
|
return msg;
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetRange(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
msg<<" <range>"<<res->GetValue2()<<"</range>";
|
|
return msg;
|
|
}
|
|
|
|
void wxWxr2Xml::ParseSlider(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <slider");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetValue1(res));
|
|
m_xmlfile.Write(GetMax(res));
|
|
m_xmlfile.Write(GetMin(res));
|
|
m_xmlfile.Write("\n </slider>\n");
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetMax(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
msg<<" <max>"<<res->GetValue3()<<"</max>";
|
|
return msg;
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetMin(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
msg<<" <min>"<<res->GetValue2()<<"</min>";
|
|
return msg;
|
|
}
|
|
|
|
void wxWxr2Xml::ParseComboBox(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <combobox");
|
|
WriteControlInfo(res);
|
|
//Add combo items
|
|
WriteStringList(res);
|
|
m_xmlfile.Write("\n </combobox>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseRadioButton(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <radiobutton");
|
|
WriteControlInfo(res);
|
|
m_xmlfile.Write(GetLabel(res));
|
|
|
|
wxString msg;
|
|
m_xmlfile.Write(GetValue1(res));
|
|
m_xmlfile.Write(GetCheckStatus(res));
|
|
m_xmlfile.Write("\n </radiobutton>\n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseScrollBar(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <scrollbar");
|
|
WriteControlInfo(res);
|
|
//TODO learn more about XML scrollbar format
|
|
m_xmlfile.Write("\n </scrollbar>\n");
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetCheckStatus(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
msg<<" <checked>"<<res->GetValue1()<<"</checked>";
|
|
return msg;
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetStyles(wxItemResource *res)
|
|
{
|
|
//Very crude way to get styles
|
|
long style;
|
|
wxString s,restype;
|
|
restype=res->GetType();
|
|
style=res->GetStyle();
|
|
|
|
s="<style>";
|
|
|
|
//Common styles for all controls
|
|
if (style&wxSIMPLE_BORDER)
|
|
s+="wxSIMPLE_BORDER|";
|
|
if (style&wxSUNKEN_BORDER)
|
|
s+="wxSUNKEN_BORDER|";
|
|
if (style&wxSIMPLE_BORDER)
|
|
s+="wxSIMPLE_BORDER|";
|
|
if (style&wxDOUBLE_BORDER)
|
|
s+="wxDOUBLE_BORDER|";
|
|
if (style&wxRAISED_BORDER)
|
|
s+="wxRAISED_BORDER|";
|
|
if (style&wxTRANSPARENT_WINDOW)
|
|
s+="wxTRANSPARENT_WINDOW|";
|
|
if (style&wxWANTS_CHARS)
|
|
s+="wxWANTS_CHARS|";
|
|
if (style&wxNO_FULL_REPAINT_ON_RESIZE)
|
|
s+="wxNO_FULL_REPAINT_ON_RESIZE|";
|
|
|
|
if (restype=="wxDialog")
|
|
{
|
|
if (style&wxDIALOG_MODAL)
|
|
s+="wxDIALOG_MODAL|";
|
|
if (style&wxDEFAULT_DIALOG_STYLE)
|
|
s+="wxDEFAULT_DIALOG_STYLE|";
|
|
if (style&wxDIALOG_MODELESS)
|
|
s+="wxDIALOG_MODELESS|";
|
|
if (style&wxNO_3D)
|
|
s+="wxNO_3D|";
|
|
if (style&wxTAB_TRAVERSAL)
|
|
s+="wxTAB_TRAVERSAL|";
|
|
if (style&wxWS_EX_VALIDATE_RECURSIVELY)
|
|
s+="wxWS_EX_VALIDATE_RECURSIVELY|";
|
|
if (style&wxSTAY_ON_TOP)
|
|
s+="wxSTAY_ON_TOP|";
|
|
if (style&wxCAPTION)
|
|
s+="wxCAPTION|";
|
|
if (style&wxTHICK_FRAME)
|
|
s+="wxTHICK_FRAME|";
|
|
if (style&wxRESIZE_BOX)
|
|
s+="wxRESIZE_BOX|";
|
|
if (style&wxRESIZE_BORDER)
|
|
s+="wxRESIZE_BORDER|";
|
|
if (style&wxSYSTEM_MENU)
|
|
s+="wxSYSTEM_MENU|";
|
|
if (style&wxCLIP_CHILDREN)
|
|
s+="wxCLIP_CHILDREN|";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (restype=="wxPanel")
|
|
{
|
|
if (style&wxCLIP_CHILDREN)
|
|
s+="wxCLIP_CHILDREN|";
|
|
if (style&wxNO_3D)
|
|
s+="wxNO_3D|";
|
|
if (style&wxTAB_TRAVERSAL)
|
|
s+="wxTAB_TRAVERSAL|";
|
|
if (style&wxWS_EX_VALIDATE_RECURSIVELY)
|
|
s+="wxWS_EX_VALIDATE_RECURSIVELY|";
|
|
}
|
|
|
|
if (restype=="wxComboBox")
|
|
{
|
|
if (style&wxCB_SORT)
|
|
s+="wxCB_SORT|";
|
|
if (style&wxCB_SIMPLE)
|
|
s+="wxCB_SIMPLE|";
|
|
if (style&wxCB_READONLY)
|
|
s+="wxCB_READONLY|";
|
|
if (style&wxCB_DROPDOWN)
|
|
s+="wxCB_DROPDOWN|";
|
|
}
|
|
|
|
if (restype=="wxGauge")
|
|
{
|
|
if (style&wxGA_HORIZONTAL)
|
|
s+="wxGA_HORIZONTAL|";
|
|
if (style&wxGA_VERTICAL)
|
|
s+="wxGA_VERTICAL|";
|
|
if (style&wxGA_PROGRESSBAR)
|
|
s+="wxGA_PROGRESSBAR|";
|
|
// windows only
|
|
if (style&wxGA_SMOOTH)
|
|
s+="wxGA_SMOOTH|";
|
|
}
|
|
|
|
if (restype=="wxRadioButton")
|
|
{
|
|
if (style&wxRB_GROUP)
|
|
s+="wxRB_GROUP|";
|
|
}
|
|
|
|
if (restype=="wxStaticText")
|
|
{
|
|
if (style&wxST_NO_AUTORESIZE)
|
|
s+="wxST_NO_AUTORESIZEL|";
|
|
}
|
|
|
|
if (restype=="wxRadioBox")
|
|
{
|
|
if (style&wxRA_HORIZONTAL)
|
|
s+="wxRA_HORIZONTAL|";
|
|
if (style&wxRA_SPECIFY_COLS)
|
|
s+="wxRA_SPECIFY_COLS|";
|
|
if (style&wxRA_SPECIFY_ROWS)
|
|
s+="wxRA_SPECIFY_ROWS|";
|
|
if (style&wxRA_VERTICAL)
|
|
s+="wxRA_VERTICAL|";
|
|
}
|
|
|
|
if (restype=="wxListBox")
|
|
{
|
|
if (style&wxLB_SINGLE)
|
|
s+="wxLB_SINGLE|";
|
|
if (style&wxLB_MULTIPLE)
|
|
s+="wxLB_MULTIPLE|";
|
|
if (style&wxLB_EXTENDED)
|
|
s+="wxLB_EXTENDED|";
|
|
if (style&wxLB_HSCROLL)
|
|
s+="wxLB_HSCROLL|";
|
|
if (style&wxLB_ALWAYS_SB)
|
|
s+="wxLB_ALWAYS_SB|";
|
|
if (style&wxLB_NEEDED_SB)
|
|
s+="wxLB_NEEDED_SB|";
|
|
if (style&wxLB_SORT)
|
|
s+="wxLB_SORT|";
|
|
}
|
|
|
|
if (restype=="wxTextCtrl")
|
|
{
|
|
if (style&wxTE_PROCESS_ENTER)
|
|
s+="wxTE_PROCESS_ENTER|";
|
|
if (style&wxTE_PROCESS_TAB)
|
|
s+="wxTE_PROCESS_TAB|";
|
|
if (style&wxTE_MULTILINE)
|
|
s+="wxTE_MULTILINE|";
|
|
if (style&wxTE_PASSWORD)
|
|
s+="wxTE_PASSWORD|";
|
|
if (style&wxTE_READONLY)
|
|
s+="wxTE_READONLY|";
|
|
if (style&wxHSCROLL)
|
|
s+="wxHSCROLL|";
|
|
}
|
|
|
|
int l;
|
|
l=s.Length();
|
|
//No styles defined
|
|
if (l==7)
|
|
return _T("");
|
|
//Trim off last |
|
|
s=s.Truncate(l-1);
|
|
|
|
s+="</style>";
|
|
return s;
|
|
}
|
|
|
|
wxString wxWxr2Xml::GetDimension(wxItemResource *res)
|
|
{
|
|
wxString msg;
|
|
msg<<" <dimension>"<<res->GetValue1()<<"</dimension>";
|
|
return msg;
|
|
}
|
|
|
|
wxString wxWxr2Xml::GenerateName(wxItemResource *res)
|
|
{
|
|
wxString name;
|
|
name=_T(" name=\"");
|
|
switch (res->GetId())
|
|
{
|
|
case wxID_OK:
|
|
name+=_T("wxID_OK");
|
|
break;
|
|
case wxID_CANCEL:
|
|
name+=_T("wxID_CANCEL");
|
|
break;
|
|
default:
|
|
name+=res->GetName();
|
|
}
|
|
|
|
name+="\"";
|
|
return name;
|
|
}
|
|
|
|
void wxWxr2Xml::ParseMenuBar(wxItemResource *res)
|
|
{
|
|
wxItemResource *child;
|
|
wxNode *node = res->GetChildren().First();
|
|
//Get Menu Bar Name
|
|
m_xmlfile.Write("<menubar ");
|
|
m_xmlfile.Write(GenerateName(res));
|
|
m_xmlfile.Write(">\n");
|
|
m_xmlfile.Write(" <children>\n");
|
|
while (node)
|
|
{
|
|
child= (wxItemResource *)node->Data();
|
|
ParseMenu(child);
|
|
node = node->Next();
|
|
}
|
|
|
|
m_xmlfile.Write(" </children>\n");
|
|
m_xmlfile.Write("</menubar> \n");
|
|
}
|
|
|
|
|
|
void wxWxr2Xml::ParseMenu(wxItemResource *res)
|
|
{
|
|
wxItemResource *child;
|
|
wxNode *node = res->GetChildren().First();
|
|
//Get Menu
|
|
m_xmlfile.Write(" <menu ");
|
|
wxString menuname;
|
|
menuname<<"name = \"menu_"<<res->GetValue1()<<"\"";
|
|
m_xmlfile.Write(menuname);
|
|
m_xmlfile.Write(">\n");
|
|
m_xmlfile.Write(" <label>"
|
|
+FixMenuString(res->GetTitle())+"</label>\n");
|
|
if (res->GetValue4()!="")
|
|
m_xmlfile.Write(" <help>"+res->GetValue4()+"</help>\n");
|
|
m_xmlfile.Write(" <children>\n");
|
|
//Read in menu items and additional menus
|
|
while (node)
|
|
{
|
|
child= (wxItemResource *)node->Data();
|
|
if (!child->GetChildren().First())
|
|
ParseMenuItem(child);
|
|
else
|
|
ParseMenu(child);
|
|
|
|
node = node->Next();
|
|
}
|
|
m_xmlfile.Write(" </children>\n");
|
|
m_xmlfile.Write(" </menu> \n");
|
|
}
|
|
|
|
void wxWxr2Xml::ParseMenuItem(wxItemResource *res)
|
|
{
|
|
//Get Menu Item or Separator
|
|
if (res->GetTitle()=="")
|
|
{
|
|
m_xmlfile.Write(" <separator/>\n");
|
|
}
|
|
else
|
|
{
|
|
m_xmlfile.Write(" <menuitem ");
|
|
wxString menuname;
|
|
menuname<<"name = \"menuitem_"<<res->GetValue1()<<"\"";
|
|
m_xmlfile.Write(menuname);
|
|
m_xmlfile.Write(">\n");
|
|
m_xmlfile.Write(" <label>"
|
|
+FixMenuString(res->GetTitle())+"</label>\n");
|
|
if (res->GetValue4()!="")
|
|
m_xmlfile.Write(" <help>"+res->GetValue4()+"</help>\n");
|
|
if (res->GetValue2())
|
|
m_xmlfile.Write(" <checkable>1</checkable>\n");
|
|
m_xmlfile.Write(" </menuitem> \n");
|
|
}
|
|
}
|
|
|
|
wxString wxWxr2Xml::FixMenuString(wxString phrase)
|
|
{
|
|
phrase.Replace("&","$");
|
|
return phrase;
|
|
}
|
|
|
|
void wxWxr2Xml::ParseStaticBitmap(wxItemResource *res)
|
|
{
|
|
m_xmlfile.Write(" <staticbitmap");
|
|
WriteControlInfo(res);
|
|
//value4 holds bitmap name
|
|
wxString bitmapname;
|
|
bitmapname=res->GetValue4();
|
|
wxBitmap bitmap;
|
|
bitmap= wxResourceCreateBitmap(bitmapname,&m_table);
|
|
bitmapname+=_T(".bmp");
|
|
bitmap.SaveFile(bitmapname,wxBITMAP_TYPE_BMP);
|
|
m_xmlfile.Write("\n <bitmap>"+bitmapname+"</bitmap>");
|
|
m_xmlfile.Write("</staticbitmap>\n");
|
|
//bitmap5
|
|
}
|
|
|
|
void wxWxr2Xml::ParseBitmap(wxItemResource *res)
|
|
{
|
|
|
|
}
|
|
|
|
void wxWxr2Xml::PanelStuff(wxItemResource *res)
|
|
{
|
|
if ((res->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) != 0)
|
|
m_dlgunits=TRUE;
|
|
else
|
|
m_dlgunits=FALSE;
|
|
|
|
//If this is true ignore fonts, background color and use system
|
|
//defaults instead
|
|
if ((res->GetResourceStyle() & wxRESOURCE_USE_DEFAULTS) != 0)
|
|
m_systemdefaults=TRUE;
|
|
else
|
|
m_systemdefaults=FALSE;
|
|
|
|
}
|