Unicode compilation fixes (patch from Dimitri)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14822 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4ccf704abd
commit
f565a6c2f4
@ -256,10 +256,10 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
|
||||
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf(_T("This is the network functions test sample.\n"
|
||||
"© 1999 Vadim Zeitlin"));
|
||||
msg.Printf( wxT("This is the network functions test sample.\n")
|
||||
wxT("© 1999 Vadim Zeitlin") );
|
||||
|
||||
wxMessageBox(msg, _T("About NetTest"), wxOK | wxICON_INFORMATION, this);
|
||||
wxMessageBox(msg, wxT("About NetTest"), wxOK | wxICON_INFORMATION, this);
|
||||
}
|
||||
|
||||
void MyFrame::OnHangUp(wxCommandEvent& WXUNUSED(event))
|
||||
|
@ -293,9 +293,9 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxMessageBox(_T("Event sample shows different ways of using events\n"
|
||||
"© 2001 Vadim Zeitlin"),
|
||||
_T("About Event Sample"), wxOK | wxICON_INFORMATION, this);
|
||||
wxMessageBox( wxT("Event sample shows different ways of using events\n")
|
||||
wxT("© 2001 Vadim Zeitlin"),
|
||||
wxT("About Event Sample"), wxOK | wxICON_INFORMATION, this );
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -304,9 +304,12 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
void MyFrame::OnDynamic(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxMessageBox(_T("This is a dynamic event handler which can be connected "
|
||||
"and disconnected during run-time."),
|
||||
_T("Dynamic Event Handler"), wxOK | wxICON_INFORMATION, this);
|
||||
wxMessageBox
|
||||
(
|
||||
wxT("This is a dynamic event handler which can be connected ")
|
||||
wxT("and disconnected at run-time."),
|
||||
wxT("Dynamic Event Handler"), wxOK | wxICON_INFORMATION, this
|
||||
);
|
||||
}
|
||||
|
||||
void MyFrame::OnConnect(wxCommandEvent& event)
|
||||
|
@ -24,6 +24,10 @@
|
||||
#include "wx/wx.h"
|
||||
#endif
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
#error "This sample can't be compiled in Unicode mode."
|
||||
#endif // wxUSE_UNICODE
|
||||
|
||||
#include "wx/resource.h"
|
||||
|
||||
#include <ctype.h>
|
||||
@ -52,8 +56,8 @@
|
||||
// Under Windows, some compilers can't include
|
||||
// a whole .wxr file. So we use a .rc user-defined resource
|
||||
// instead. dialog1 will point to the whole .wxr 'file'.
|
||||
static char *dialog1 = NULL;
|
||||
static char *menu1 = NULL;
|
||||
static wxChar *dialog1 = NULL;
|
||||
static wxChar *menu1 = NULL;
|
||||
#else
|
||||
// Other platforms should have sensible compilers that
|
||||
// cope with long strings.
|
||||
@ -76,39 +80,42 @@ MyApp::MyApp()
|
||||
bool MyApp::OnInit(void)
|
||||
{
|
||||
#if defined(__WXMSW__)
|
||||
// Load the .wxr 'file' from a .rc resource, under Windows.
|
||||
dialog1 = wxLoadUserResource("dialog1", "WXRDATA");
|
||||
menu1 = wxLoadUserResource("menu1", "WXRDATA");
|
||||
// All resources in the file (only one in this case) get parsed
|
||||
// by this call.
|
||||
wxResourceParseString(dialog1);
|
||||
wxResourceParseString(menu1);
|
||||
// Load the .wxr 'file' from a .rc resource, under Windows.
|
||||
dialog1 = wxLoadUserResource(wxT("dialog1"), wxT("WXRDATA"));
|
||||
menu1 = wxLoadUserResource(wxT("menu1"), wxT("WXRDATA"));
|
||||
// All resources in the file (only one in this case) get parsed
|
||||
// by this call.
|
||||
wxResourceParseString(dialog1);
|
||||
wxResourceParseString(menu1);
|
||||
#else
|
||||
// Simply parse the data pointed to by the variable dialog1.
|
||||
// If there were several resources, there would be several
|
||||
// variables, and this would need to be called several times.
|
||||
wxResourceParseData(dialog1);
|
||||
wxResourceParseData(menu1);
|
||||
// Simply parse the data pointed to by the variable dialog1.
|
||||
// If there were several resources, there would be several
|
||||
// variables, and this would need to be called several times.
|
||||
wxResourceParseData(dialog1);
|
||||
wxResourceParseData(menu1);
|
||||
#endif
|
||||
|
||||
// Create the main frame window
|
||||
frame = new MyFrame((wxFrame *) NULL, -1, (char *) "wxWindows Resource Sample", wxPoint(-1, -1), wxSize(300, 250));
|
||||
// Create the main frame window
|
||||
frame = new MyFrame( (wxFrame *) NULL, -1,
|
||||
(char *) "wxWindows Resource Sample",
|
||||
wxPoint(-1, -1), wxSize(300, 250) );
|
||||
|
||||
// Give it a status line
|
||||
frame->CreateStatusBar(2);
|
||||
// Give it a status line
|
||||
frame->CreateStatusBar(2);
|
||||
|
||||
wxMenuBar *menu_bar = wxResourceCreateMenuBar("menu1");
|
||||
|
||||
// Associate the menu bar with the frame
|
||||
frame->SetMenuBar(menu_bar);
|
||||
wxMenuBar *menu_bar = wxResourceCreateMenuBar("menu1");
|
||||
|
||||
// Make a panel
|
||||
frame->panel = new MyPanel(frame, -1, wxPoint(0, 0), wxSize(400, 400), 0, "MyMainFrame");
|
||||
frame->Show(TRUE);
|
||||
// Associate the menu bar with the frame
|
||||
frame->SetMenuBar(menu_bar);
|
||||
|
||||
SetTopWindow(frame);
|
||||
// Make a panel
|
||||
frame->panel = new MyPanel( frame, -1, wxPoint(0, 0), wxSize(400, 400),
|
||||
0, "MyMainFrame" );
|
||||
frame->Show(TRUE);
|
||||
|
||||
return TRUE;
|
||||
SetTopWindow(frame);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
MyApp::~MyApp()
|
||||
@ -123,17 +130,20 @@ BEGIN_EVENT_TABLE(MyPanel, wxPanel)
|
||||
EVT_LEFT_DOWN( MyPanel::OnClick)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
MyPanel::MyPanel( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
|
||||
int style, const wxString &name ) :
|
||||
wxPanel( parent, id, pos, size, style, name )
|
||||
MyPanel::MyPanel
|
||||
(
|
||||
wxWindow *parent, wxWindowID id, const wxPoint& pos,
|
||||
const wxSize& size,
|
||||
int style, const wxString &name
|
||||
) : wxPanel( parent, id, pos, size, style, name )
|
||||
{
|
||||
}
|
||||
|
||||
void MyPanel::OnClick( wxMouseEvent &WXUNUSED(event2) )
|
||||
{
|
||||
MyFrame *frame = (MyFrame*)(wxTheApp->GetTopWindow());
|
||||
wxCommandEvent event;
|
||||
frame->OnTestDialog( event );
|
||||
MyFrame *frame = (MyFrame*)(wxTheApp->GetTopWindow());
|
||||
wxCommandEvent event;
|
||||
frame->OnTestDialog( event );
|
||||
}
|
||||
|
||||
|
||||
@ -144,10 +154,13 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
// Define my frame constructor
|
||||
MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size):
|
||||
wxFrame(parent, id, title, pos, size)
|
||||
MyFrame::MyFrame
|
||||
(
|
||||
wxWindow *parent, const wxWindowID id,
|
||||
const wxString& title, const wxPoint& pos, const wxSize& size
|
||||
) : wxFrame(parent, id, title, pos, size)
|
||||
{
|
||||
panel = (wxWindow *) NULL;
|
||||
panel = (wxWindow *) NULL;
|
||||
}
|
||||
|
||||
void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) )
|
||||
@ -164,15 +177,20 @@ void MyFrame::OnQuit( wxCommandEvent& WXUNUSED(event) )
|
||||
|
||||
void MyFrame::OnTestDialog(wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
MyDialog *dialog = new MyDialog;
|
||||
if (dialog->LoadFromResource(this, "dialog1"))
|
||||
{
|
||||
MyDialog *dialog = new MyDialog;
|
||||
|
||||
if (dialog->LoadFromResource(this, "dialog1"))
|
||||
{
|
||||
wxTextCtrl *text = (wxTextCtrl *)wxFindWindowByName("multitext3", dialog);
|
||||
if (text)
|
||||
text->SetValue("wxWindows resource demo");
|
||||
{
|
||||
text->SetValue("wxWindows resource demo");
|
||||
}
|
||||
|
||||
dialog->ShowModal();
|
||||
}
|
||||
dialog->Close(TRUE);
|
||||
}
|
||||
|
||||
dialog->Close(TRUE);
|
||||
}
|
||||
|
||||
BEGIN_EVENT_TABLE(MyDialog, wxDialog)
|
||||
@ -183,12 +201,12 @@ END_EVENT_TABLE()
|
||||
|
||||
void MyDialog::OnOk(wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
// EndModal(RESOURCE_OK);
|
||||
// EndModal(RESOURCE_OK);
|
||||
}
|
||||
|
||||
void MyDialog::OnCancel(wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
EndModal(ID_BUTTON109);
|
||||
EndModal(ID_BUTTON109);
|
||||
}
|
||||
|
||||
|
||||
|
@ -263,128 +263,145 @@ MyFrame::Clear(void)
|
||||
|
||||
void MyFrame::OnCommand( wxCommandEvent &event )
|
||||
{
|
||||
switch (event.GetId())
|
||||
{
|
||||
case ID_QUIT:
|
||||
Close( TRUE );
|
||||
break;
|
||||
case ID_PRINT:
|
||||
{
|
||||
wxPrinter printer;
|
||||
wxLayoutPrintout printout(m_lwin->GetLayoutList(),_("M: Printout"));
|
||||
if (! printer.Print(this, &printout, TRUE))
|
||||
wxMessageBox(
|
||||
_("There was a problem with printing the message:\n"
|
||||
"perhaps your current printer is not set up correctly?"),
|
||||
_("Printing"), wxOK);
|
||||
}
|
||||
break;
|
||||
case ID_NOWRAP:
|
||||
case ID_WRAP:
|
||||
m_lwin->SetWrapMargin(event.GetId() == ID_NOWRAP ? 0 : 40);
|
||||
break;
|
||||
case ID_ADD_SAMPLE:
|
||||
AddSampleText(m_lwin->GetLayoutList());
|
||||
break;
|
||||
case ID_CLEAR:
|
||||
Clear();
|
||||
break;
|
||||
switch (event.GetId())
|
||||
{
|
||||
case ID_QUIT:
|
||||
Close( TRUE );
|
||||
break;
|
||||
case ID_PRINT:
|
||||
{
|
||||
wxPrinter printer;
|
||||
wxLayoutPrintout printout(m_lwin->GetLayoutList(),_("M: Printout"));
|
||||
if (! printer.Print(this, &printout, TRUE))
|
||||
{
|
||||
// Had to remove the split up strings that used to be below, and
|
||||
// put them into one long strong. Otherwise MSVC would give an
|
||||
// error "C2308: concatenating mismatched wide strings" when
|
||||
// building a Unicode version.
|
||||
wxMessageBox
|
||||
(
|
||||
_("There was a problem with printing the message:\nperhaps your current printer is not set up correctly?"),
|
||||
_("Printing"), wxOK
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case ID_NOWRAP:
|
||||
case ID_WRAP:
|
||||
m_lwin->SetWrapMargin(event.GetId() == ID_NOWRAP ? 0 : 40);
|
||||
break;
|
||||
case ID_ADD_SAMPLE:
|
||||
AddSampleText(m_lwin->GetLayoutList());
|
||||
break;
|
||||
case ID_CLEAR:
|
||||
Clear();
|
||||
break;
|
||||
case ID_CLICK:
|
||||
cerr << "Received click event." << endl;
|
||||
break;
|
||||
cerr << "Received click event." << endl;
|
||||
break;
|
||||
case ID_PASTE:
|
||||
m_lwin->Paste(TRUE);
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
m_lwin->Paste(TRUE);
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
#ifdef __WXGTK__
|
||||
case ID_PASTE_PRIMARY:
|
||||
// text only from primary:
|
||||
m_lwin->Paste(FALSE, TRUE);
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
case ID_COPY_PRIMARY:
|
||||
// copy text-only to primary selection:
|
||||
m_lwin->Copy(FALSE,FALSE,TRUE);
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
case ID_PASTE_PRIMARY:
|
||||
// text only from primary:
|
||||
m_lwin->Paste(FALSE, TRUE);
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
case ID_COPY_PRIMARY:
|
||||
// copy text-only to primary selection:
|
||||
m_lwin->Copy(FALSE,FALSE,TRUE);
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
#endif
|
||||
case ID_COPY:
|
||||
m_lwin->Copy(TRUE,TRUE,FALSE);
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
case ID_CUT:
|
||||
m_lwin->Cut();
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
case ID_COPY:
|
||||
m_lwin->Copy(TRUE,TRUE,FALSE);
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
case ID_CUT:
|
||||
m_lwin->Cut();
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
#ifdef M_BASEDIR
|
||||
case ID_FIND:
|
||||
m_lwin->Find("void");
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
case ID_FIND:
|
||||
m_lwin->Find("void");
|
||||
m_lwin->Refresh(FALSE);
|
||||
break;
|
||||
#endif
|
||||
case ID_HTML:
|
||||
{
|
||||
wxLayoutExportObject *export0;
|
||||
wxLayoutExportStatus status(m_lwin->GetLayoutList());
|
||||
case ID_HTML:
|
||||
{
|
||||
wxLayoutExportObject *export0;
|
||||
wxLayoutExportStatus status(m_lwin->GetLayoutList());
|
||||
|
||||
cout << "<HTML>" << endl;
|
||||
while((export0 = wxLayoutExport( &status,
|
||||
WXLO_EXPORT_AS_HTML)) != NULL)
|
||||
{
|
||||
if(export0->type == WXLO_EXPORT_HTML)
|
||||
cout << *(export0->content.text);
|
||||
else
|
||||
; // ignore itcout << "<!--UNKNOWN OBJECT>";
|
||||
delete export0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ID_TEXT:
|
||||
{
|
||||
wxLayoutExportObject *export0;
|
||||
wxLayoutExportStatus status(m_lwin->GetLayoutList());
|
||||
cout << "<HTML>" << endl;
|
||||
while((export0 = wxLayoutExport( &status,
|
||||
WXLO_EXPORT_AS_HTML)) != NULL)
|
||||
{
|
||||
if(export0->type == WXLO_EXPORT_HTML)
|
||||
cout << *(export0->content.text);
|
||||
else
|
||||
; // ignore itcout << "<!--UNKNOWN OBJECT>";
|
||||
|
||||
while((export0 = wxLayoutExport( &status, WXLO_EXPORT_AS_TEXT)) != NULL)
|
||||
{
|
||||
if(export0->type == WXLO_EXPORT_TEXT)
|
||||
cout << *(export0->content.text);
|
||||
else
|
||||
cout << "<!--UNKNOWN OBJECT>";
|
||||
delete export0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ID_LONG_TEST:
|
||||
{
|
||||
wxString line;
|
||||
wxLayoutList *llist = m_lwin->GetLayoutList();
|
||||
for(int i = 1; i < 300; i++)
|
||||
{
|
||||
line.Printf("This is line number %d.", i);
|
||||
llist->Insert(line);
|
||||
llist->LineBreak();
|
||||
}
|
||||
llist->MoveCursorTo(wxPoint(0,0));
|
||||
m_lwin->SetDirty();
|
||||
m_lwin->Refresh();
|
||||
break;
|
||||
}
|
||||
delete export0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case ID_LINEBREAKS_TEST:
|
||||
wxLayoutImportText(m_lwin->GetLayoutList(),
|
||||
"This is a text\n"
|
||||
"with embedded line\n"
|
||||
"breaks.\n");
|
||||
m_lwin->SetDirty();
|
||||
m_lwin->Refresh();
|
||||
break;
|
||||
case ID_TEXT:
|
||||
{
|
||||
wxLayoutExportObject *export0;
|
||||
wxLayoutExportStatus status(m_lwin->GetLayoutList());
|
||||
|
||||
case ID_URL_TEST:
|
||||
// VZ: this doesn't work, of course, but I think it should -
|
||||
// wxLayoutWindow should have a flag m_highlightUrls and do it itself
|
||||
// (instead of doing it manually like M does now)
|
||||
m_lwin->GetLayoutList()->Insert("http://www.wxwindows.org/");
|
||||
}
|
||||
while((export0 = wxLayoutExport( &status, WXLO_EXPORT_AS_TEXT)) != NULL)
|
||||
{
|
||||
if(export0->type == WXLO_EXPORT_TEXT)
|
||||
cout << *(export0->content.text);
|
||||
else
|
||||
cout << "<!--UNKNOWN OBJECT>";
|
||||
|
||||
delete export0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case ID_LONG_TEST:
|
||||
{
|
||||
wxString line;
|
||||
wxLayoutList *llist = m_lwin->GetLayoutList();
|
||||
for(int i = 1; i < 300; i++)
|
||||
{
|
||||
line.Printf(wxT("This is line number %d."), i);
|
||||
llist->Insert(line);
|
||||
llist->LineBreak();
|
||||
}
|
||||
|
||||
llist->MoveCursorTo(wxPoint(0,0));
|
||||
m_lwin->SetDirty();
|
||||
m_lwin->Refresh();
|
||||
break;
|
||||
}
|
||||
|
||||
case ID_LINEBREAKS_TEST:
|
||||
wxLayoutImportText
|
||||
(
|
||||
m_lwin->GetLayoutList(),
|
||||
wxT("This is a text\nwith embedded line\nbreaks.\n")
|
||||
);
|
||||
|
||||
m_lwin->SetDirty();
|
||||
m_lwin->Refresh();
|
||||
break;
|
||||
|
||||
case ID_URL_TEST:
|
||||
// VZ: this doesn't work, of course, but I think it should -
|
||||
// wxLayoutWindow should have a flag m_highlightUrls and do it itself
|
||||
// (instead of doing it manually like M does now)
|
||||
m_lwin->GetLayoutList()->Insert("http://www.wxwindows.org/");
|
||||
}
|
||||
};
|
||||
|
||||
void MyFrame::OnPrint(wxCommandEvent& WXUNUSED(event))
|
||||
|
@ -81,7 +81,7 @@
|
||||
wxLayoutObject::DebugDump(void) const
|
||||
{
|
||||
wxString str;
|
||||
str.Printf("%s",g_aTypeStrings[GetType()]);
|
||||
str.Printf(wxT("%s"), g_aTypeStrings[GetType()]);
|
||||
return str;
|
||||
}
|
||||
#else
|
||||
@ -176,12 +176,17 @@ bool Contains(const wxRect &r, const wxPoint &p)
|
||||
static
|
||||
void ReadString(wxString &to, wxString &from)
|
||||
{
|
||||
to = "";
|
||||
const char *cptr = from.c_str();
|
||||
while(*cptr && *cptr != '\n')
|
||||
to += *cptr++;
|
||||
if(*cptr) cptr++;
|
||||
from = cptr;
|
||||
to = wxT("");
|
||||
const wxChar *cptr = from.c_str();
|
||||
while(*cptr && *cptr != wxT('\n'))
|
||||
{
|
||||
to += cptr;
|
||||
cptr++;
|
||||
}
|
||||
|
||||
if(*cptr) cptr++;
|
||||
|
||||
from = cptr;
|
||||
}
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -194,22 +199,23 @@ void ReadString(wxString &to, wxString &from)
|
||||
wxLayoutObject *
|
||||
wxLayoutObject::Read(wxString &istr)
|
||||
{
|
||||
wxString tmp;
|
||||
ReadString(tmp, istr);
|
||||
int type = WXLO_TYPE_INVALID;
|
||||
sscanf(tmp.c_str(),"%d", &type);
|
||||
wxString tmp;
|
||||
ReadString(tmp, istr);
|
||||
long l = WXLO_TYPE_INVALID;
|
||||
tmp.ToLong(&l);
|
||||
int type = (int) l;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case WXLO_TYPE_TEXT:
|
||||
return wxLayoutObjectText::Read(istr);
|
||||
case WXLO_TYPE_CMD:
|
||||
return wxLayoutObjectCmd::Read(istr);
|
||||
case WXLO_TYPE_ICON:
|
||||
return wxLayoutObjectIcon::Read(istr);
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
switch(type)
|
||||
{
|
||||
case WXLO_TYPE_TEXT:
|
||||
return wxLayoutObjectText::Read(istr);
|
||||
case WXLO_TYPE_CMD:
|
||||
return wxLayoutObjectCmd::Read(istr);
|
||||
case WXLO_TYPE_ICON:
|
||||
return wxLayoutObjectIcon::Read(istr);
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -385,7 +391,7 @@ wxLayoutObjectText::DebugDump(void) const
|
||||
wxString str;
|
||||
str = wxLayoutObject::DebugDump();
|
||||
wxString str2;
|
||||
str2.Printf(" `%s`", m_Text.c_str());
|
||||
str2.Printf(wxT(" `%s`"), m_Text.c_str());
|
||||
return str+str2;
|
||||
}
|
||||
#endif
|
||||
@ -400,7 +406,7 @@ wxLayoutObjectIcon::wxLayoutObjectIcon(wxBitmap const &icon)
|
||||
{
|
||||
if ( !icon.Ok() )
|
||||
{
|
||||
wxFAIL_MSG("invalid icon");
|
||||
wxFAIL_MSG(wxT("invalid icon"));
|
||||
|
||||
m_Icon = NULL;
|
||||
|
||||
@ -590,46 +596,76 @@ wxLayoutObjectCmd::Write(wxString &ostr)
|
||||
wxLayoutObjectCmd *
|
||||
wxLayoutObjectCmd::Read(wxString &istr)
|
||||
{
|
||||
wxLayoutObjectCmd *obj = new wxLayoutObjectCmd;
|
||||
wxLayoutObjectCmd *obj = new wxLayoutObjectCmd;
|
||||
|
||||
wxString tmp;
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &obj->m_StyleInfo->family);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &obj->m_StyleInfo->size);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &obj->m_StyleInfo->style);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &obj->m_StyleInfo->weight);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &obj->m_StyleInfo->underline);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &obj->m_StyleInfo->m_fg_valid);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &obj->m_StyleInfo->m_bg_valid);
|
||||
if(obj->m_StyleInfo->m_fg_valid)
|
||||
{
|
||||
int red, green, blue;
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &red);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &green);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &blue);
|
||||
obj->m_StyleInfo->m_fg = wxColour(red, green, blue);
|
||||
}
|
||||
if(obj->m_StyleInfo->m_bg_valid)
|
||||
{
|
||||
int red, green, blue;
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &red);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &green);
|
||||
ReadString(tmp, istr);
|
||||
sscanf(tmp.c_str(),"%d", &blue);
|
||||
obj->m_StyleInfo->m_bg = wxColour(red, green, blue);
|
||||
}
|
||||
return obj;
|
||||
long l = 0;
|
||||
wxString tmp;
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
obj->m_StyleInfo->family = (int) l;
|
||||
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
obj->m_StyleInfo->size = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
obj->m_StyleInfo->style = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
obj->m_StyleInfo->weight = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
obj->m_StyleInfo->underline = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
obj->m_StyleInfo->m_fg_valid = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
obj->m_StyleInfo->m_bg_valid = (int) l;
|
||||
|
||||
if(obj->m_StyleInfo->m_fg_valid)
|
||||
{
|
||||
int red, green, blue;
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
red = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
green = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
blue = (int) l;
|
||||
|
||||
obj->m_StyleInfo->m_fg = wxColour(red, green, blue);
|
||||
}
|
||||
|
||||
if(obj->m_StyleInfo->m_bg_valid)
|
||||
{
|
||||
int red, green, blue;
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
red = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
green = (int) l;
|
||||
|
||||
ReadString(tmp, istr);
|
||||
tmp.ToLong(&l);
|
||||
blue = (int) l;
|
||||
|
||||
obj->m_StyleInfo->m_bg = wxColour(red, green, blue);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
@ -981,49 +1017,51 @@ wxLayoutLine::Delete(CoordType xpos, CoordType npos)
|
||||
bool
|
||||
wxLayoutLine::DeleteWord(CoordType xpos)
|
||||
{
|
||||
wxASSERT(xpos >= 0);
|
||||
CoordType offset;
|
||||
MarkDirty(xpos);
|
||||
wxASSERT(xpos >= 0);
|
||||
CoordType offset;
|
||||
MarkDirty(xpos);
|
||||
|
||||
wxLOiterator i = FindObject(xpos, &offset);
|
||||
wxLOiterator i = FindObject(xpos, &offset);
|
||||
|
||||
for(;;)
|
||||
{
|
||||
if(i == NULLIT) return false;
|
||||
if((**i).GetType() != WXLO_TYPE_TEXT)
|
||||
{
|
||||
// This should only happen when at end of line, behind a non-text
|
||||
// object:
|
||||
if(offset == (**i).GetLength()) return false;
|
||||
m_Length -= (**i).GetLength(); // -1
|
||||
m_ObjectList.erase(i);
|
||||
return true; // we are done
|
||||
}
|
||||
else
|
||||
{ // text object:
|
||||
if(offset == (**i).GetLength()) // at end of object
|
||||
{
|
||||
i++; offset = 0;
|
||||
continue;
|
||||
}
|
||||
wxLayoutObjectText *tobj = (wxLayoutObjectText *)*i;
|
||||
size_t count = 0;
|
||||
wxString str = tobj->GetText();
|
||||
str = str.substr(offset,str.Length()-offset);
|
||||
// Find out how many positions we need to delete:
|
||||
// 1. eat leading space
|
||||
while(isspace(str.c_str()[count])) count++;
|
||||
// 2. eat the word itself:
|
||||
while(isalnum(str.c_str()[count])) count++;
|
||||
// now delete it:
|
||||
wxASSERT(count+offset <= (size_t) (**i).GetLength());
|
||||
((wxLayoutObjectText *)*i)->GetText().erase(offset,count);
|
||||
m_Length -= count;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
for(;;)
|
||||
{
|
||||
if(i == NULLIT) return false;
|
||||
if((**i).GetType() != WXLO_TYPE_TEXT)
|
||||
{
|
||||
// This should only happen when at end of line, behind a non-text
|
||||
// object:
|
||||
if(offset == (**i).GetLength()) return false;
|
||||
m_Length -= (**i).GetLength(); // -1
|
||||
m_ObjectList.erase(i);
|
||||
return true; // we are done
|
||||
}
|
||||
else
|
||||
{ // text object:
|
||||
if(offset == (**i).GetLength()) // at end of object
|
||||
{
|
||||
i++; offset = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
wxFAIL_MSG("unreachable");
|
||||
wxLayoutObjectText *tobj = (wxLayoutObjectText *)*i;
|
||||
size_t count = 0;
|
||||
wxString str = tobj->GetText();
|
||||
str = str.substr(offset,str.Length()-offset);
|
||||
// Find out how many positions we need to delete:
|
||||
// 1. eat leading space
|
||||
while(isspace(str.c_str()[count])) count++;
|
||||
// 2. eat the word itself:
|
||||
while(isalnum(str.c_str()[count])) count++;
|
||||
// now delete it:
|
||||
wxASSERT(count+offset <= (size_t) (**i).GetLength());
|
||||
((wxLayoutObjectText *)*i)->GetText().erase(offset,count);
|
||||
m_Length -= count;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
wxFAIL_MSG(wxT("unreachable"));
|
||||
}
|
||||
|
||||
wxLayoutLine *
|
||||
@ -1322,7 +1360,8 @@ wxLayoutLine::Wrap(CoordType wrapmargin, wxLayoutList *llist)
|
||||
// find the object which covers the wrapmargin:
|
||||
CoordType offset;
|
||||
wxLOiterator i = FindObject(wrapmargin, &offset);
|
||||
wxCHECK_MSG( i != NULLIT, FALSE, "Cannot find object covering wrapmargin.");
|
||||
wxCHECK_MSG( i != NULLIT, FALSE,
|
||||
wxT("Cannot find object covering wrapmargin."));
|
||||
|
||||
// from this object on, the rest of the line must be copied to the
|
||||
// next one:
|
||||
@ -1451,7 +1490,8 @@ wxLayoutLine::ReNumber(void)
|
||||
void
|
||||
wxLayoutLine::MergeNextLine(wxLayoutList *llist)
|
||||
{
|
||||
wxCHECK_RET(GetNextLine(),"wxLayout internal error: no next line to merge");
|
||||
wxCHECK_RET( GetNextLine(),
|
||||
wxT("wxLayout internal error: no next line to merge"));
|
||||
wxLayoutObjectList &list = GetNextLine()->m_ObjectList;
|
||||
wxLOiterator i;
|
||||
|
||||
@ -1569,7 +1609,7 @@ void
|
||||
wxLayoutLine::Debug(void) const
|
||||
{
|
||||
wxPoint pos = GetPosition();
|
||||
WXLO_DEBUG(("Line %ld, Pos (%ld,%ld), Height %ld, BL %ld, Font: %d",
|
||||
WXLO_DEBUG((wxT("Line %ld, Pos (%ld,%ld), Height %ld, BL %ld, Font: %d"),
|
||||
(long int) GetLineNumber(),
|
||||
(long int) pos.x, (long int) pos.y,
|
||||
(long int) GetHeight(),
|
||||
@ -1675,7 +1715,7 @@ wxLayoutList::~wxLayoutList()
|
||||
Empty();
|
||||
m_FirstLine->DeleteLine(false, this);
|
||||
|
||||
wxASSERT_MSG( m_numLines == 0, "line count calculation broken" );
|
||||
wxASSERT_MSG( m_numLines == 0, wxT("line count calculation broken"));
|
||||
}
|
||||
|
||||
void
|
||||
@ -1728,8 +1768,10 @@ wxLayoutList::Read(wxString &istr)
|
||||
// check for a linebreak:
|
||||
wxString tmp;
|
||||
tmp = istr.BeforeFirst('\n');
|
||||
int type = WXLO_TYPE_INVALID;
|
||||
sscanf(tmp.c_str(),"%d", &type);
|
||||
long l = WXLO_TYPE_INVALID;
|
||||
tmp.ToLong(&l);
|
||||
int type = (int) l;
|
||||
|
||||
if(type == WXLO_TYPE_LINEBREAK)
|
||||
{
|
||||
LineBreak();
|
||||
@ -1962,8 +2004,8 @@ wxLayoutList::MoveCursorHorizontally(int n)
|
||||
bool
|
||||
wxLayoutList::MoveCursorWord(int n, bool untilNext)
|
||||
{
|
||||
wxCHECK_MSG( m_CursorLine, false, "no current line" );
|
||||
wxCHECK_MSG( n == -1 || n == +1, false, "not implemented yet" );
|
||||
wxCHECK_MSG( m_CursorLine, false, wxT("no current line") );
|
||||
wxCHECK_MSG( n == -1 || n == +1, false, wxT("not implemented yet") );
|
||||
|
||||
CoordType moveDistance = 0;
|
||||
CoordType offset;
|
||||
@ -2052,9 +2094,9 @@ wxLayoutList::MoveCursorWord(int n, bool untilNext)
|
||||
if ( canAdvance )
|
||||
{
|
||||
const wxString& text = tobj->GetText();
|
||||
const char *start = text.c_str();
|
||||
const char *end = start + text.length();
|
||||
const char *p = start + offset;
|
||||
const wxChar *start = text.c_str();
|
||||
const wxChar *end = start + text.length();
|
||||
const wxChar *p = start + offset;
|
||||
|
||||
if ( n < 0 )
|
||||
{
|
||||
@ -2123,7 +2165,8 @@ bool
|
||||
wxLayoutList::Insert(wxString const &text)
|
||||
{
|
||||
wxASSERT(m_CursorLine);
|
||||
wxASSERT_MSG( text.Find('\n') == wxNOT_FOUND, "use wxLayoutImportText!" );
|
||||
wxASSERT_MSG( text.Find(wxT('\n')) == wxNOT_FOUND,
|
||||
wxT("use wxLayoutImportText!") );
|
||||
|
||||
if ( !text )
|
||||
return true;
|
||||
@ -2245,7 +2288,7 @@ wxLayoutList::WrapAll(CoordType column)
|
||||
bool
|
||||
wxLayoutList::Delete(CoordType npos)
|
||||
{
|
||||
wxCHECK_MSG(m_CursorLine, false, "can't delete in non existing line");
|
||||
wxCHECK_MSG(m_CursorLine, false, wxT("can't delete in non existing line"));
|
||||
|
||||
if ( npos == 0 )
|
||||
return true;
|
||||
@ -2300,7 +2343,7 @@ wxLayoutList::Delete(CoordType npos)
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFAIL_MSG("can't delete all this");
|
||||
wxFAIL_MSG(wxT("can't delete all this"));
|
||||
|
||||
return false;
|
||||
}
|
||||
@ -2537,8 +2580,8 @@ wxLayoutList::Draw(wxDC &dc,
|
||||
}
|
||||
InvalidateUpdateRect();
|
||||
|
||||
WXLO_DEBUG(("Selection is %s : %ld,%ld/%ld,%ld",
|
||||
m_Selection.m_valid ? "valid" : "invalid",
|
||||
WXLO_DEBUG((wxT("Selection is %s : %ld,%ld/%ld,%ld"),
|
||||
m_Selection.m_valid ? wxT("valid") : wxT("invalid"),
|
||||
m_Selection.m_CursorA.x, m_Selection.m_CursorA.y,
|
||||
m_Selection.m_CursorB.x, m_Selection.m_CursorB.y));
|
||||
}
|
||||
@ -2650,14 +2693,14 @@ wxLayoutList::DrawCursor(wxDC &dc, bool active, wxPoint const &translate)
|
||||
coords += translate;
|
||||
|
||||
#ifdef WXLAYOUT_DEBUG
|
||||
WXLO_DEBUG(("Drawing cursor (%ld,%ld) at %ld,%ld, size %ld,%ld, line: %ld, len %ld",
|
||||
WXLO_DEBUG((wxT("Drawing cursor (%ld,%ld) at %ld,%ld, size %ld,%ld, line: %ld, len %ld"),
|
||||
(long)m_CursorPos.x, (long)m_CursorPos.y,
|
||||
(long)coords.x, (long)coords.y,
|
||||
(long)m_CursorSize.x, (long)m_CursorSize.y,
|
||||
(long)m_CursorLine->GetLineNumber(),
|
||||
(long)m_CursorLine->GetLength()));
|
||||
|
||||
wxLogStatus("Cursor is at (%d, %d)", m_CursorPos.x, m_CursorPos.y);
|
||||
wxLogStatus(wxT("Cursor is at (%d, %d)"), m_CursorPos.x, m_CursorPos.y);
|
||||
#endif
|
||||
|
||||
#ifdef WXLAYOUT_USE_CARET
|
||||
@ -2711,7 +2754,7 @@ wxLayoutList::StartSelection(const wxPoint& cposOrig, const wxPoint& spos)
|
||||
wxPoint cpos(cposOrig);
|
||||
if ( cpos.x == -1 )
|
||||
cpos = m_CursorPos;
|
||||
WXLO_DEBUG(("Starting selection at %ld/%ld", cpos.x, cpos.y));
|
||||
WXLO_DEBUG((wxT("Starting selection at %ld/%ld"), cpos.x, cpos.y));
|
||||
m_Selection.m_CursorA = cpos;
|
||||
m_Selection.m_CursorB = cpos;
|
||||
m_Selection.m_ScreenA = spos;
|
||||
@ -2729,7 +2772,7 @@ wxLayoutList::ContinueSelection(const wxPoint& cposOrig, const wxPoint& spos)
|
||||
|
||||
wxASSERT(m_Selection.m_selecting == true);
|
||||
wxASSERT(m_Selection.m_valid == false);
|
||||
WXLO_DEBUG(("Continuing selection at %ld/%ld", cpos.x, cpos.y));
|
||||
WXLO_DEBUG((wxT("Continuing selection at %ld/%ld"), cpos.x, cpos.y));
|
||||
|
||||
m_Selection.m_ScreenB = spos;
|
||||
m_Selection.m_CursorB = cpos;
|
||||
@ -2741,7 +2784,7 @@ wxLayoutList::EndSelection(const wxPoint& cposOrig, const wxPoint& spos)
|
||||
wxPoint cpos(cposOrig);
|
||||
if(cpos.x == -1) cpos = m_CursorPos;
|
||||
ContinueSelection(cpos, spos);
|
||||
WXLO_DEBUG(("Ending selection at %ld/%ld", cpos.x, cpos.y));
|
||||
WXLO_DEBUG((wxT("Ending selection at %ld/%ld"), cpos.x, cpos.y));
|
||||
// we always want m_CursorA <= m_CursorB!
|
||||
if( m_Selection.m_CursorA > m_Selection.m_CursorB )
|
||||
{
|
||||
@ -2930,7 +2973,7 @@ wxLayoutLine *
|
||||
wxLayoutList::GetLine(CoordType index) const
|
||||
{
|
||||
wxASSERT_MSG( (0 <= index) && (index < (CoordType)m_numLines),
|
||||
"invalid index" );
|
||||
wxT("invalid index") );
|
||||
|
||||
wxLayoutLine *line;
|
||||
CoordType n = index;
|
||||
@ -3082,7 +3125,7 @@ wxLayoutList::ApplyStyle(wxLayoutStyleInfo const &si, wxDC &dc)
|
||||
void
|
||||
wxLayoutList::Debug(void)
|
||||
{
|
||||
WXLO_DEBUG(("Cursor is in line %d, screen pos = (%d, %d)",
|
||||
WXLO_DEBUG((wxT("Cursor is in line %d, screen pos = (%d, %d)"),
|
||||
m_CursorLine->GetLineNumber(),
|
||||
m_CursorScreenPos.x, m_CursorScreenPos.y));
|
||||
|
||||
@ -3182,7 +3225,7 @@ bool wxLayoutPrintout::OnPrintPage(int page)
|
||||
top = (page - 1)*m_PrintoutHeight;
|
||||
bottom = top + m_PrintoutHeight;
|
||||
|
||||
WXLO_DEBUG(("OnPrintPage(%d) printing from %d to %d", page, top,
|
||||
WXLO_DEBUG((wxT("OnPrintPage(%d) printing from %d to %d"), page, top,
|
||||
bottom));
|
||||
// SetDeviceOrigin() doesn't work here, so we need to manually
|
||||
// translate all coordinates.
|
||||
|
@ -292,7 +292,7 @@ public:
|
||||
virtual wxString DebugDump(void) const;
|
||||
#endif
|
||||
|
||||
virtual CoordType GetLength(void) const { return strlen(m_Text.c_str()); }
|
||||
virtual CoordType GetLength(void) const { return wxStrlen(m_Text.c_str()); }
|
||||
|
||||
// for editing:
|
||||
wxString & GetText(void) { return m_Text; }
|
||||
@ -1273,7 +1273,7 @@ class wxLayoutDataObject : public wxCustomDataObject
|
||||
public:
|
||||
wxLayoutDataObject()
|
||||
{
|
||||
SetFormat("application/wxlayoutlist");
|
||||
SetFormat(wxT("application/wxlayoutlist"));
|
||||
}
|
||||
|
||||
// type safe wrappers
|
||||
|
@ -741,8 +741,11 @@ wxLayoutWindow::OnChar(wxKeyEvent& event)
|
||||
&& m_WrapMargin > 0
|
||||
&& m_llist->GetCursorPos().x > m_WrapMargin
|
||||
&& isspace(keyCode))
|
||||
{
|
||||
m_llist->WrapLine(m_WrapMargin);
|
||||
m_llist->Insert((char)keyCode);
|
||||
}
|
||||
|
||||
m_llist->Insert((wxChar)keyCode);
|
||||
SetDirty();
|
||||
}
|
||||
else
|
||||
|
@ -254,14 +254,14 @@ void MyFrame::ToggleLive(wxCommandEvent& event )
|
||||
void MyFrame::SetMinSize(wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
wxString str;
|
||||
str.Printf( _T(_T("%d")), m_splitter->GetMinimumPaneSize());
|
||||
str.Printf( wxT("%d"), m_splitter->GetMinimumPaneSize());
|
||||
str = wxGetTextFromUser(_T("Enter minimal size for panes:"), _T(""), str, this);
|
||||
if ( str.IsEmpty() )
|
||||
return;
|
||||
|
||||
int minsize = wxStrtol( str, (wxChar**)NULL, 10 );
|
||||
m_splitter->SetMinimumPaneSize(minsize);
|
||||
str.Printf( _T(_T("Min pane size = %d")), minsize);
|
||||
str.Printf( wxT("Min pane size = %d"), minsize);
|
||||
SetStatusText(str, 1);
|
||||
}
|
||||
|
||||
|
@ -471,7 +471,7 @@ void wxTCPEventHandler::Client_OnRequest(wxSocketEvent &event)
|
||||
data = new char[size];
|
||||
sockstrm->Read(data, size);
|
||||
|
||||
connection->OnExecute (topic_name, data, size, format);
|
||||
connection->OnExecute (topic_name, (wxChar *) data, size, format);
|
||||
|
||||
delete [] data;
|
||||
break;
|
||||
@ -488,7 +488,7 @@ void wxTCPEventHandler::Client_OnRequest(wxSocketEvent &event)
|
||||
data = new char[size];
|
||||
sockstrm->Read(data, size);
|
||||
|
||||
connection->OnAdvise (topic_name, item, data, size, format);
|
||||
connection->OnAdvise (topic_name, item, (wxChar *) data, size, format);
|
||||
|
||||
delete [] data;
|
||||
break;
|
||||
|
@ -734,7 +734,7 @@ _DDECallback(WORD wType,
|
||||
0);
|
||||
DdeFreeDataHandle(hData);
|
||||
if ( connection->OnExecute(connection->m_topicName,
|
||||
connection->m_bufPtr,
|
||||
(wxChar *) connection->m_bufPtr,
|
||||
(int)len,
|
||||
(wxIPCFormat) wFmt) )
|
||||
{
|
||||
@ -874,7 +874,7 @@ _DDECallback(WORD wType,
|
||||
DdeFreeDataHandle(hData);
|
||||
if ( connection->OnAdvise(connection->m_topicName,
|
||||
item_name,
|
||||
connection->m_bufPtr,
|
||||
(wxChar *) connection->m_bufPtr,
|
||||
(int)len,
|
||||
(wxIPCFormat) wFmt) )
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user