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
|
- wxXmlProperty class was renamed to wxXmlAttribute in order to use standard
|
||||||
terminology. Corresponding wxXmlNode methods were renamed to use
|
terminology. Corresponding wxXmlNode methods were renamed to use
|
||||||
"Attribute" instead of "Property" or "Prop" in their names.
|
"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
|
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
|
Called by the client application to execute a command on the
|
||||||
server. Can also be used to transfer arbitrary data to the server
|
server. Can also be used to transfer arbitrary data to the server
|
||||||
(similar to \helpref{wxConnection::Poke}{wxconnectionpoke} in
|
(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.
|
member to be called. Returns true if successful.
|
||||||
|
|
||||||
\membersection{wxConnection::Disconnect}\label{wxconnectiondisconnect}
|
\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
|
(finally calling the inherited method as well) so that they know
|
||||||
the connection object is no longer available.
|
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
|
Message sent to the server application when the client notifies
|
||||||
it to execute the given data, using \helpref{Execute}{wxconnectionexecute}.
|
it to execute the given data, using \helpref{Execute}{wxconnectionexecute}.
|
||||||
|
@@ -127,12 +127,19 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
// Callbacks to SERVER - override at will
|
// Callbacks to SERVER - override at will
|
||||||
virtual bool OnExecute(const wxString& WXUNUSED(topic),
|
virtual bool OnExec(const wxString& WXUNUSED(topic),
|
||||||
const void *WXUNUSED(data),
|
const wxString& WXUNUSED(data))
|
||||||
size_t WXUNUSED(size),
|
|
||||||
wxIPCFormat WXUNUSED(format))
|
|
||||||
{ return false; }
|
{ 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),
|
virtual const void *OnRequest(const wxString& WXUNUSED(topic),
|
||||||
const wxString& WXUNUSED(item),
|
const wxString& WXUNUSED(item),
|
||||||
size_t *size,
|
size_t *size,
|
||||||
@@ -166,6 +173,17 @@ public:
|
|||||||
virtual bool OnDisconnect() { delete this; return true; }
|
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
|
// return a buffer at least this size, reallocating buffer if needed
|
||||||
// returns NULL if using an inadequate user buffer which can't be resized
|
// returns NULL if using an inadequate user buffer which can't be resized
|
||||||
void *GetBufferAtLeast(size_t bytes);
|
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;
|
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 )
|
void *wxConnectionBase::GetBufferAtLeast( size_t bytes )
|
||||||
{
|
{
|
||||||
if ( m_buffersize >= bytes )
|
if ( m_buffersize >= bytes )
|
||||||
|
Reference in New Issue
Block a user