Improve message handler to include client data.

This commit is contained in:
Andy Cedilnik 2002-09-18 14:18:43 -04:00
parent eab24670e3
commit 6769e84472
3 changed files with 12 additions and 8 deletions

View File

@ -52,9 +52,10 @@ void onsig(int)
} }
void CMakeErrorHandler(const char* message, const char* title, bool&) void CMakeErrorHandler(const char* message, const char* title, bool&, void* clientData)
{ {
cmCursesForm::CurrentForm->AddError(message, title); cmCursesForm* self = static_cast<cmCursesForm*>( clientData );
self->AddError(message, title);
} }
int main(int argc, char** argv) int main(int argc, char** argv)
@ -128,7 +129,7 @@ int main(int argc, char** argv)
myform = new cmCursesMainForm(args, x); myform = new cmCursesMainForm(args, x);
myform->LoadCache(cacheDir.c_str()); myform->LoadCache(cacheDir.c_str());
cmSystemTools::SetErrorCallback(CMakeErrorHandler); cmSystemTools::SetErrorCallback(CMakeErrorHandler, myform);
cmCursesForm::CurrentForm = myform; cmCursesForm::CurrentForm = myform;

View File

@ -74,7 +74,8 @@ bool cmSystemTools::s_DisableRunCommandOutput = false;
bool cmSystemTools::s_ErrorOccured = false; bool cmSystemTools::s_ErrorOccured = false;
bool cmSystemTools::s_DisableMessages = false; bool cmSystemTools::s_DisableMessages = false;
void (*cmSystemTools::s_ErrorCallback)(const char*, const char*, bool&); void (*cmSystemTools::s_ErrorCallback)(const char*, const char*, bool&, void*);
void* cmSystemTools::s_ErrorCallbackClientData = 0;
// adds the elements of the env variable path to the arg passed in // adds the elements of the env variable path to the arg passed in
void cmSystemTools::GetPath(std::vector<std::string>& path) void cmSystemTools::GetPath(std::vector<std::string>& path)
@ -984,9 +985,10 @@ void cmSystemTools::Error(const char* m1, const char* m2,
} }
void cmSystemTools::SetErrorCallback(ErrorCallback f) void cmSystemTools::SetErrorCallback(ErrorCallback f, void* clientData)
{ {
s_ErrorCallback = f; s_ErrorCallback = f;
s_ErrorCallbackClientData = clientData;
} }
void cmSystemTools::Message(const char* m1, const char *title) void cmSystemTools::Message(const char* m1, const char *title)
@ -997,7 +999,7 @@ void cmSystemTools::Message(const char* m1, const char *title)
} }
if(s_ErrorCallback) if(s_ErrorCallback)
{ {
(*s_ErrorCallback)(m1, title, s_DisableMessages); (*s_ErrorCallback)(m1, title, s_DisableMessages, s_ErrorCallbackClientData);
return; return;
} }
else else

View File

@ -149,14 +149,14 @@ public:
*/ */
static const char* GetExecutableExtension(); static const char* GetExecutableExtension();
typedef void (*ErrorCallback)(const char*, const char*, bool&); typedef void (*ErrorCallback)(const char*, const char*, bool&, void*);
/** /**
* Set the function used by GUI's to display error messages * Set the function used by GUI's to display error messages
* Function gets passed: message as a const char*, * Function gets passed: message as a const char*,
* title as a const char*, and a reference to bool that when * title as a const char*, and a reference to bool that when
* set to false, will disable furthur messages (cancel). * set to false, will disable furthur messages (cancel).
*/ */
static void SetErrorCallback(ErrorCallback f); static void SetErrorCallback(ErrorCallback f, void* clientData=0);
/** /**
* Display an error message. * Display an error message.
@ -308,6 +308,7 @@ private:
static bool s_DisableMessages; static bool s_DisableMessages;
static bool s_DisableRunCommandOutput; static bool s_DisableRunCommandOutput;
static ErrorCallback s_ErrorCallback; static ErrorCallback s_ErrorCallback;
static void* s_ErrorCallbackClientData;
}; };