Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

CEGUIPushButton.cpp

Go to the documentation of this file.
00001 /************************************************************************
00002         filename:       CEGUIPushButton.cpp
00003         created:        13/4/2004
00004         author:         Paul D Turner
00005         
00006         purpose:        Implementation of PushButton widget base class
00007 *************************************************************************/
00008 /*************************************************************************
00009     Crazy Eddie's GUI System (http://www.cegui.org.uk)
00010     Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk)
00011 
00012     This library is free software; you can redistribute it and/or
00013     modify it under the terms of the GNU Lesser General Public
00014     License as published by the Free Software Foundation; either
00015     version 2.1 of the License, or (at your option) any later version.
00016 
00017     This library is distributed in the hope that it will be useful,
00018     but WITHOUT ANY WARRANTY; without even the implied warranty of
00019     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020     Lesser General Public License for more details.
00021 
00022     You should have received a copy of the GNU Lesser General Public
00023     License along with this library; if not, write to the Free Software
00024     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00025 *************************************************************************/
00026 #include "elements/CEGUIPushButton.h"
00027 
00028 // Start of CEGUI namespace section
00029 namespace CEGUI
00030 {
00031 const String PushButton::EventNamespace("PushButton");
00032 
00033 /*************************************************************************
00034         Event name constants
00035 *************************************************************************/
00036 const String PushButton::EventClicked( (utf8*)"Clicked" );
00037 
00038 
00039 /*************************************************************************
00040         Constructor
00041 *************************************************************************/
00042 PushButton::PushButton(const String& type, const String& name) :
00043         ButtonBase(type, name)
00044 {
00045         // add the additional events generated by this derived class
00046         addPushButtonEvents();
00047 }
00048 
00049 
00050 /*************************************************************************
00051         Destructor
00052 *************************************************************************/
00053 PushButton::~PushButton(void)
00054 {
00055 }
00056 
00057 
00058 /*************************************************************************
00059         Add button specific events      
00060 *************************************************************************/
00061 void PushButton::addPushButtonEvents(void)
00062 {
00063         addEvent(EventClicked);
00064 }
00065 
00066 
00067 /*************************************************************************
00068         handler invoked internally when the button is clicked.  
00069 *************************************************************************/
00070 void PushButton::onClicked(WindowEventArgs& e)
00071 {
00072         fireEvent(EventClicked, e, EventNamespace);
00073 }
00074 
00075 
00076 /*************************************************************************
00077         Handler for mouse button release events
00078 *************************************************************************/
00079 void PushButton::onMouseButtonUp(MouseEventArgs& e)
00080 {
00081         if ((e.button == LeftButton) && isPushed())
00082         {
00083                 Window* sheet = System::getSingleton().getGUISheet();
00084 
00085                 if (sheet != NULL)
00086                 {
00087                         // if mouse was released over this widget
00088                         if (this == sheet->getChildAtPosition(e.position))
00089                         {
00090                                 // fire event
00091                                 WindowEventArgs args(this);
00092                                 onClicked(args);
00093                         }
00094 
00095                 }
00096 
00097                 e.handled = true;
00098         }
00099 
00100         // default handling
00101         ButtonBase::onMouseButtonUp(e);
00102 }
00103 
00104 
00105 } // End of  CEGUI namespace section

Generated on Wed Feb 16 12:41:07 2005 for Crazy Eddies GUI System by  doxygen 1.3.9.1