call OnExec() taking wxString argument from OnExecute() by default
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51185 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -157,6 +157,8 @@ Deprecated methods and their replacements
|
||||
- wxXmlProperty class was renamed to wxXmlAttribute in order to use standard
|
||||
terminology. Corresponding wxXmlNode methods were renamed to use
|
||||
"Attribute" instead of "Property" or "Prop" in their names.
|
||||
- wxConnection::OnExecute() is not formally deprecated yet but new code should
|
||||
use simpler OnExec() version which is called with wxString argument
|
||||
|
||||
|
||||
Major new features in this release
|
||||
|
@@ -117,7 +117,7 @@ to be called. Returns true if successful.
|
||||
Called by the client application to execute a command on the
|
||||
server. Can also be used to transfer arbitrary data to the server
|
||||
(similar to \helpref{wxConnection::Poke}{wxconnectionpoke} in
|
||||
that respect). Causes the server connection's \helpref{wxConnection::OnExecute}{wxconnectiononexecute}
|
||||
that respect). Causes the server connection's \helpref{wxConnection::OnExec}{wxconnectiononexec}
|
||||
member to be called. Returns true if successful.
|
||||
|
||||
\membersection{wxConnection::Disconnect}\label{wxconnectiondisconnect}
|
||||
@@ -150,9 +150,9 @@ applications should generally override {\bf OnDisconnect}
|
||||
(finally calling the inherited method as well) so that they know
|
||||
the connection object is no longer available.
|
||||
|
||||
\membersection{wxConnection::OnExecute}\label{wxconnectiononexecute}
|
||||
\membersection{wxConnection::OnExec}\label{wxconnectiononexec}
|
||||
|
||||
\func{virtual bool}{OnExecute}{\param{const wxString\& }{topic}, \param{const void* }{data}, \param{size\_t }{size}, \param{wxIPCFormat}{ format}}
|
||||
\func{virtual bool}{OnExec}{\param{const wxString\& }{topic}, \param{const wxString\& }{data}}
|
||||
|
||||
Message sent to the server application when the client notifies
|
||||
it to execute the given data, using \helpref{Execute}{wxconnectionexecute}.
|
||||
|
@@ -127,12 +127,19 @@ public:
|
||||
|
||||
|
||||
// Callbacks to SERVER - override at will
|
||||
virtual bool OnExecute(const wxString& WXUNUSED(topic),
|
||||
const void *WXUNUSED(data),
|
||||
size_t WXUNUSED(size),
|
||||
wxIPCFormat WXUNUSED(format))
|
||||
virtual bool OnExec(const wxString& WXUNUSED(topic),
|
||||
const wxString& WXUNUSED(data))
|
||||
{ return false; }
|
||||
|
||||
// deprecated function kept for backwards compatibility: usually you will
|
||||
// want to override OnExec() above instead which receives its data in a more
|
||||
// convenient format
|
||||
virtual bool OnExecute(const wxString& topic,
|
||||
const void *data,
|
||||
size_t size,
|
||||
wxIPCFormat format)
|
||||
{ return OnExec(topic, GetTextFromData(data, size, format)); }
|
||||
|
||||
virtual const void *OnRequest(const wxString& WXUNUSED(topic),
|
||||
const wxString& WXUNUSED(item),
|
||||
size_t *size,
|
||||
@@ -166,6 +173,17 @@ public:
|
||||
virtual bool OnDisconnect() { delete this; return true; }
|
||||
|
||||
|
||||
// converts from the data and format into a wxString automatically
|
||||
//
|
||||
// this function accepts data in all of wxIPC_TEXT, wxIPC_UNICODETEXT, and
|
||||
// wxIPC_UTF8TEXT formats but asserts if the format is anything else
|
||||
//
|
||||
// notice that the size parameter here contains the total size of the data,
|
||||
// including the terminating '\0' or L'\0'
|
||||
static
|
||||
wxString GetTextFromData(const void *data, size_t size, wxIPCFormat format);
|
||||
|
||||
|
||||
// return a buffer at least this size, reallocating buffer if needed
|
||||
// returns NULL if using an inadequate user buffer which can't be resized
|
||||
void *GetBufferAtLeast(size_t bytes);
|
||||
|
@@ -59,12 +59,59 @@ wxConnectionBase::wxConnectionBase(const wxConnectionBase& copy)
|
||||
}
|
||||
|
||||
|
||||
wxConnectionBase::~wxConnectionBase(void)
|
||||
wxConnectionBase::~wxConnectionBase()
|
||||
{
|
||||
if ( m_deletebufferwhendone && m_buffer )
|
||||
if ( m_deletebufferwhendone )
|
||||
delete m_buffer;
|
||||
}
|
||||
|
||||
/* static */
|
||||
wxString wxConnectionBase::GetTextFromData(const void* data,
|
||||
size_t size,
|
||||
wxIPCFormat fmt)
|
||||
{
|
||||
wxString s;
|
||||
switch ( fmt )
|
||||
{
|
||||
case wxIPC_TEXT:
|
||||
// normally the string should be NUL-terminated and size should
|
||||
// include the total size of the buffer, including NUL -- but don't
|
||||
// crash (by trying to access (size_t)-1 bytes) if it doesn't
|
||||
if ( size )
|
||||
size--;
|
||||
|
||||
s = wxString(wx_static_cast(const char *, data), size);
|
||||
break;
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
// TODO: we should handle both wxIPC_UTF16TEXT and wxIPC_UTF32TEXT here
|
||||
// for inter-platform IPC
|
||||
case wxIPC_UNICODETEXT:
|
||||
wxASSERT_MSG( !(size % sizeof(wchar_t)), "invalid buffer size" );
|
||||
if ( size )
|
||||
{
|
||||
size /= sizeof(wchar_t);
|
||||
size--;
|
||||
}
|
||||
|
||||
s = wxString(wx_static_cast(const wchar_t *, data), size);
|
||||
break;
|
||||
|
||||
case wxIPC_UTF8TEXT:
|
||||
if ( size )
|
||||
size--;
|
||||
|
||||
s = wxString::FromUTF8(wx_static_cast(const char *, data), size);
|
||||
break;
|
||||
#endif // wxUSE_UNICODE
|
||||
|
||||
default:
|
||||
wxFAIL_MSG( "non-string IPC format in GetTextFromData()" );
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
void *wxConnectionBase::GetBufferAtLeast( size_t bytes )
|
||||
{
|
||||
if ( m_buffersize >= bytes )
|
||||
|
Reference in New Issue
Block a user