00001
00002
00003
00004
00005
00006
00012 #include <iostream>
00013
00014 #include "Message.h"
00015
00016 GLUI_StaticText * Message::txtMessage;
00017 GLUI_Spinner * Message::change;
00018 Message::listMessages Message::messages;
00019
00025 void Message::setText(char * text, messageType t) {
00026 txtMessage->set_text(text);
00027 }
00028
00032 void Message::clearMessages() {
00033 messages.clear();
00034 change->set_int_limits(0,0);
00035 setText("", MSG);
00036 }
00037
00045 void Message::msg(messageType t, const string & msg1,const string & msg2,const string & msg3) {
00046 if( messages.size() >= MAX_MSG) {
00047 messages.pop_back();
00048 }
00049
00050
00051 singleMessage tmp;
00052 int pos1 = msg1.length();
00053 int pos2 = pos1+msg2.length();
00054 if(pos1 > MSG_LEN)
00055 pos1 = MSG_LEN;
00056 if(pos2 > MSG_LEN)
00057 pos2 = MSG_LEN;
00058 strncpy(tmp.msg, msg1.c_str(), MSG_LEN);
00059 strncpy(tmp.msg+pos1, msg2.c_str(), MSG_LEN-pos1);
00060 strncpy(tmp.msg+pos2, msg3.c_str(), MSG_LEN-pos2);
00061 tmp.msg[MSG_LEN -1] = 0;
00062 tmp.type = t;
00063
00064
00065 messages.push_front(tmp);
00066
00067
00068 change->set_int_limits(1,messages.size());
00069 change->set_int_val(1);
00070
00071
00072 setText( messages.begin()->msg,t );
00073 }
00074
00079 void Message::CreateWindow( int mainWin ) {
00080 const GLUI_Update_CB mc = ( GLUI_Update_CB ) Message::MenuCallback;
00081 GLUI * messageWindow = GLUI_Master.create_glui_subwindow(
00082 mainWin, GLUI_SUBWINDOW_BOTTOM );
00083 messageWindow->set_main_gfx_window( mainWin );
00084
00085 change =
00086 messageWindow->add_spinner("MSG",GLUI_SPINNER_INT,NULL,CHOOSE_MSG,mc);
00087 change->edittext->disable();
00088 messageWindow->add_column(false);
00089 txtMessage = messageWindow->add_statictext( "" );
00090 change->set_int_limits(0,0);
00091 }
00092
00097 void Message::MenuCallback( button b ) {
00098 switch ( b ) {
00099 case (CHOOSE_MSG): {
00100 listMessages::iterator it= messages.begin();
00101 for ( int i = change->get_int_val() ; i > 1; i--)
00102 it++;
00103 setText(it->msg,it->type);
00104 break;
00105 }
00106 default:
00107 cout << "KEY " << b << " nicht definiert !" << endl;
00108 }
00109 }
00110