Project stdui: "Simple Type Dialog User-Interface"

|
Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

cevent.cpp

Go to the documentation of this file.
00001 /******************************pthread_mutex_unlock(& mtx_evq );*********************************************
00002  *   copyright (c) 2004 by serge lussier                                   *
00003  *   serge.lussier@videotron.ca                                            *
00004  *                                                                         *
00005  *   this program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the gnu general public license as published by  *
00007  *   the free software foundation; either version 2 of the license, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   this program is distributed in the hope that it will be useful,       *
00011  *   but without any warranty; without even the implied warranty of        *
00012  *   merchantability or fitness for a particular purpose.  see the         *
00013  *   gnu general public license for more details.                          *
00014  *                                                                         *
00015  *   you should have received a copy of the gnu general public license     *
00016  *   along with this program; if not, write to the                         *
00017  *   free software foundation, inc.,                                       *
00018  *   59 temple place - suite 330, boston, ma  02111-1307, usa.             *
00019  ***************************************************************************/
00020 #include <cevent.h>
00021 //#include <ndebugstream.h>
00022 
00023 #include <iostream>
00024 #include <stdwindow.h>
00025 
00026 
00027 using std::cerr;
00028 using std::endl;
00029 
00030 namespace stdui {
00031 
00032 
00033 
00034 cevent::cevent()
00035 {
00036    _translate();
00037 }
00038 
00039 
00040 cevent::~cevent()
00041 {
00042 }
00043 
00044 
00045 
00046 
00047 
00051 void cevent::_translate()
00052 {
00054 }
00058 void cmouseevent::_translate()
00059 {
00060   // _debug(0) << " " << endl;
00061    pos = cxy(_data.x, _data.y);
00062    identify_event();
00063 }
00064 
00068 bool cmouseevent::identify_event()
00069 {
00070    // reset buttons bit:
00071    int bs = _data.bstate;
00072    right = mleft = mmiddle = 0;
00073    if( ( bs &  BUTTON1_RELEASED ) ||
00074        ( bs &  BUTTON1_PRESSED  ) ||
00075        ( bs &  BUTTON1_CLICKED  ) ||
00076        ( bs &  BUTTON1_DOUBLE_CLICKED) ||
00077        ( bs &  BUTTON1_TRIPLE_CLICKED)) left = 1;
00078    else
00079    if( ( bs &  BUTTON2_RELEASED ) ||
00080        ( bs &  BUTTON2_PRESSED  ) ||
00081        ( bs &  BUTTON2_CLICKED  ) ||
00082        ( bs &  BUTTON2_DOUBLE_CLICKED) ||
00083        ( bs &  BUTTON2_TRIPLE_CLICKED)) middle = 1;
00084    else
00085    if( ( bs &  BUTTON3_RELEASED ) ||
00086        ( bs &  BUTTON3_PRESSED  ) ||
00087        ( bs &  BUTTON3_CLICKED  ) ||
00088        ( bs &  BUTTON3_DOUBLE_CLICKED) ||
00089        ( bs &  BUTTON3_TRIPLE_CLICKED)) right = 1;
00090 
00091    if( left ) {
00092       if( _data.bstate & BUTTON1_RELEASED ) setevent( events::mousebuttonrelease );
00093       else
00094       if( _data.bstate & BUTTON1_PRESSED ) setevent( events::mousebuttonpress );
00095       else
00096       if( _data.bstate & BUTTON1_CLICKED ) setevent( events::mousebuttonclick );
00097       else
00098       if( _data.bstate & BUTTON1_DOUBLE_CLICKED ) setevent( events::mousebuttondblclick );
00099       else
00100       if( _data.bstate & BUTTON1_TRIPLE_CLICKED ) setevent( events::mousebuttondblclick );
00101    }
00102    else
00103    if( middle ) {
00104       if( _data.bstate & BUTTON2_RELEASED ) setevent( events::mousebuttonrelease );
00105       else
00106       if( _data.bstate & BUTTON2_PRESSED ) setevent( events::mousebuttonpress );
00107       else
00108       if( _data.bstate & BUTTON2_CLICKED ) setevent( events::mousebuttonclick );
00109       else
00110       if( _data.bstate & BUTTON2_DOUBLE_CLICKED ) setevent( events::mousebuttondblclick );
00111       else
00112       if( _data.bstate & BUTTON2_TRIPLE_CLICKED ) setevent( events::mousebuttondblclick );
00113    }
00114    else
00115    if( right ) {
00116       if( _data.bstate & BUTTON3_RELEASED ) setevent( events::mousebuttonrelease );
00117       else
00118       if( _data.bstate & BUTTON3_PRESSED ) setevent( events::mousebuttonpress );
00119       else
00120       if( _data.bstate & BUTTON3_CLICKED ) setevent( events::mousebuttonclick );
00121       else
00122       if( _data.bstate & BUTTON3_DOUBLE_CLICKED ) setevent( events::mousebuttondblclick );
00123       else
00124       if( _data.bstate & BUTTON3_TRIPLE_CLICKED ) setevent( events::mousebuttondblclick );
00125    }
00126    else
00127    if( _oldpos != pos ){
00128       setevent( events::mousemove );
00129    }
00130    return true;
00131 }
00132 
00133 
00134 
00135 
00139 void ckeypressevent::_translate()
00140 {
00141     //_debug(1)<< "==> " << (char*)(bmeta ? "meta-" : "key") << '[' << (char) key << "] (#" << key << ')' << endl;
00142 }
00143 
00144 
00145 
00149 bool cmouseevent::isleft()
00150 {
00151     return left != 0;
00152 }
00153 
00154 
00158 bool cmouseevent::ismiddle()
00159 {
00160     return middle != 0;
00161 }
00162 
00163 
00167 bool cmouseevent::isright()
00168 {
00169     return right !=0;
00170 }
00171 
00172 
00176 void cevent::clear(cevent::list& l)
00177 {
00178     for( cevent::iterator it = l.begin(); it != l.end(); it++) delete *it;
00179     l.clear();
00180 }
00181 
00182 } // namespace stdui
00183 

API Documentation Generated by:  doxygen 1.4.0
About the author | Site started with trial version of DreamWeaver MX 2004 | Finalizing with  | Contact | ©2005, Serge Lussier ( Bretzel )