]> git.saurik.com Git - wxWidgets.git/blob - contrib/utils/convertrc/convert.cpp
minor change: buf[(size_t)pos] instead of buf.c_str()[pos]
[wxWidgets.git] / contrib / utils / convertrc / convert.cpp
1 //wxConvertApp Programming Utility
2 /*This program currently offers 3 useful conversions
3 1. Converts most of an .RC file into a wxXml file
4 2. Converts most of an .wxr file into a wxXml file
5 3. Converts portions of an .RC file into a wxr file
6 */
7
8 #ifdef __GNUG__
9 #pragma implementation "convert.cpp"
10 #pragma interface "convert.cpp"
11 #endif
12
13 // For compilers that support precompilation, includes "wx/wx.h".
14 #include <wx/wxprec.h>
15
16 #ifdef __BORLANDC__
17 #pragma hdrstop
18 #endif
19
20 // for all others, include the necessary headers (this file is usually all you
21 // need because it includes almost all "standard" wxWindows headers
22 #ifndef WX_PRECOMP
23 #include <wx/wx.h>
24 #endif
25
26 #include <wx/image.h>
27 #include "wx/resource.h"
28
29 #include "convert.h"
30 #include "rc2wxr.h"
31 #include "wxr2xml.h"
32 #include "rc2xml.h"
33
34 IMPLEMENT_APP(wxConvertApp)
35 //////////////////////////////////////////////////////////////////////
36 // Construction/Destruction
37 //////////////////////////////////////////////////////////////////////
38
39 wxConvertApp::wxConvertApp()
40 {
41 m_pFrame=NULL;
42 m_pMenuBar=NULL;
43
44 }
45
46 wxConvertApp::~wxConvertApp()
47 {
48
49 }
50
51
52 bool wxConvertApp::OnInit()
53 {
54 //Initialize all image loaders(JPEG,BMP,PNG,and etc)
55 wxInitAllImageHandlers();
56 SetAppName("wxConvertApp");
57
58 if (HandleCommandLine())
59 return TRUE;
60
61
62 // Create the main frame window
63 m_pFrame = new wxMainFrame(NULL, -1, "wxConvertApp", wxPoint(0, 0), wxSize(500, 400),
64 wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL);
65
66 InitMenu();
67 m_pFrame->Show(TRUE);
68 SetTopWindow(m_pFrame);
69 return TRUE;
70 }
71
72 void wxConvertApp::InitMenu()
73 {
74 m_pMenuBar=new wxMenuBar;
75 wxASSERT(m_pMenuBar);
76
77 wxMenu *filemenu=new wxMenu;
78 filemenu->Append(ID_RC2WXR,"Convert RC file to WXR file");
79 filemenu->Append(ID_WXR2XML,"Convert WXR file to XML file");
80 filemenu->Append(ID_RC2XML,"Convert RC file to XML file");
81
82 filemenu->Append(ID_QUIT, "E&xit");
83 m_pMenuBar->Append(filemenu,"&File");
84
85 m_pFrame->SetMenuBar(m_pMenuBar);
86 }
87
88
89
90 // MainFrame.cpp: implementation of the wxMainFrame class.
91 //
92 //////////////////////////////////////////////////////////////////////
93
94 BEGIN_EVENT_TABLE(wxMainFrame, wxFrame)
95 EVT_MENU(ID_QUIT,wxMainFrame::OnQuit)
96 EVT_MENU(ID_RC2WXR,wxMainFrame::OnRc2Wxr)
97 EVT_MENU(ID_WXR2XML,wxMainFrame::OnWXR2XML)
98 EVT_MENU(ID_RC2XML,wxMainFrame::OnRC2XML)
99 END_EVENT_TABLE()
100
101
102
103 //////////////////////////////////////////////////////////////////////
104 // Construction/Destruction
105 //////////////////////////////////////////////////////////////////////
106
107 wxMainFrame::wxMainFrame(wxWindow* parent,wxWindowID id,
108 const wxString& title, const wxPoint& pos, const wxSize& size,
109 long style, const wxString& name)
110 :wxFrame(parent,id,title,pos,size,style,name)
111 {
112
113 }
114
115 wxMainFrame::~wxMainFrame()
116 {
117 }
118
119
120
121 void wxMainFrame::OnQuit()
122 {
123 Close(TRUE);
124 }
125
126
127 void wxMainFrame::OnRc2Wxr()
128 {
129 wxFileDialog filed(this);
130 filed.SetWildcard("*.rc");
131 filed.SetStyle(wxOPEN);
132
133 if (filed.ShowModal()!=wxID_OK)
134 return;
135
136 wxFileDialog wxrfile(this,"Enter Desired WXR file name");
137 wxrfile.SetWildcard("*.wxr");
138 wxrfile.SetStyle(wxOPEN);
139 wxrfile.SetFilename("resource.wxr");
140
141 if (wxrfile.ShowModal()!=wxID_OK)
142 return;
143
144 rc2wxr convert;
145 convert.Convert(wxrfile.GetPath(),filed.GetPath());
146 }
147
148 void wxMainFrame::OnWXR2XML()
149 {
150 wxFileDialog f(this);
151 f.SetWildcard("*.wxr");
152 if (f.ShowModal()!=wxID_OK)
153 return;
154
155
156 wxFileDialog xmlfile(this,"Enter Desired XML file name");
157 xmlfile.SetWildcard("*.xml");
158 xmlfile.SetStyle(wxOPEN);
159 xmlfile.SetFilename("resource.xml");
160
161 if (xmlfile.ShowModal()!=wxID_OK)
162 return;
163
164 wxr2xml XMLCon;
165 XMLCon.Convert(f.GetPath(),xmlfile.GetPath());
166
167 }
168
169 void wxMainFrame::OnRC2XML()
170 {
171 wxFileDialog f(this);
172 f.SetWildcard("*.rc");
173 if (f.ShowModal()!=wxID_OK)
174 return;
175
176 wxFileDialog xmlfile(this,"Enter Desired XML file name");
177 xmlfile.SetWildcard("*.xml");
178 xmlfile.SetStyle(wxOPEN);
179 xmlfile.SetFilename("resource.xml");
180
181 if (xmlfile.ShowModal()!=wxID_OK)
182 return;
183
184 rc2xml XMLCon;
185 XMLCon.Convert(f.GetPath(),xmlfile.GetPath());
186
187 }
188
189 bool wxConvertApp::HandleCommandLine()
190 {
191
192 if (argc != 2)
193 return FALSE;
194
195 //Figure out kind of conversion
196 wxString source,target;
197 wxr2xml trans_wxr2xml;
198 rc2xml trans_rc2xml;
199 rc2wxr trans_rc2wxr;
200
201 source=argv[1];
202 target=argv[2];
203
204
205 if ((source.Find(".wxr")>0)&&(target.Find(".xml")>0))
206 {
207 trans_wxr2xml.Convert(source,target);
208 return TRUE;
209 }
210 else if ((source.Find(".rc")!=-1)&(target.Find(".wxr")!=-1))
211 {
212 trans_rc2wxr.Convert(source,target);
213 return TRUE;
214 }
215 else if ((source.Find(".rc")!=-1)&(target.Find(".xml")!=-1))
216 {
217 trans_rc2xml.Convert(source,target);
218 return TRUE;
219 }
220
221 return FALSE;
222 }