135 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable file
		
	
	
	
	
| /*******************************************************************************
 | |
|             This file is Part of the Gewi GUI Library for ZEngine.
 | |
|              Gewi and ZEngine Copyright (C) 2002, 2003 James Turk
 | |
| 
 | |
|             Licensed under a BSD-style license. (see licensing.txt)
 | |
| 
 | |
|     The maintainer of this library is James Turk (james@conceptofzero.net) 
 | |
|   this library is found at the home of ZEngine http://zengine.sourceforge.net
 | |
| *******************************************************************************/
 | |
| 
 | |
| /*!
 | |
|     \file GewiWidgetList.h
 | |
|     \brief Definition file for WidgetList.
 | |
|     
 | |
|     Definition file for WidgetList, a list of widgets used by GewiEngine and GContainers.
 | |
|     <br>$Id: GewiWidgetList.h,v 1.4 2003/06/07 05:41:18 cozman Exp $<br>
 | |
|     \author James Turk
 | |
| **/
 | |
| 
 | |
| #ifndef __gewiwidgetlist_h__
 | |
| #define __gewiwidgetlist_h__
 | |
| 
 | |
| #include "GewiIncludes.h"
 | |
| 
 | |
| namespace Gewi
 | |
| {
 | |
| 
 | |
| class GWidget;
 | |
| 
 | |
| /*!
 | |
|     \brief WidgetNode class, node for linked list.
 | |
| 
 | |
|     Doubly linked list node containing a widget.
 | |
| **/
 | |
| class WidgetNode
 | |
| {
 | |
|     public:
 | |
|         /*!
 | |
|             \brief Basic constructor.
 | |
|             
 | |
|             Simple safety constructor just sets all values to NULL.
 | |
|         **/
 | |
|         WidgetNode();
 | |
| 
 | |
|         //! Pointer to widget for this node.
 | |
|         GWidget *widget;
 | |
|         //! Pointer to previous node.
 | |
|         WidgetNode *prev;
 | |
|         //! Pointer to next node.
 | |
|         WidgetNode *next;
 | |
| };
 | |
| 
 | |
| 
 | |
| /*!
 | |
|     \brief Class containing a linked list of widgets.
 | |
| 
 | |
|     Linked list of widgets, and various utility functions for containers.
 | |
|     Class is internally used only, GContainer and GewiEngine heavily rely on it.
 | |
| **/
 | |
| class WidgetList
 | |
| {
 | |
|     private:
 | |
|         //! Pointer to head of list.
 | |
|         WidgetNode *mWidgetList;
 | |
|         //! Variable keeping track of where the last click was, to change focus.
 | |
|         WidgetNode *mClick;
 | |
| 
 | |
|         /*!
 | |
|             \brief Internal function to delete widget memory.
 | |
| 
 | |
|             Deletes the memory used by a widget node, interally used.
 | |
|             \param node Node to delete.
 | |
|         **/
 | |
|         void DeleteWidgetMem(WidgetNode *node);
 | |
|     public:
 | |
|         /*!
 | |
|             \brief Constructor for the linked list.
 | |
| 
 | |
|             Simply NULLs pointers for the linked list.
 | |
|         **/
 | |
|         WidgetList();
 | |
| 
 | |
|         /*!
 | |
|             \brief Add a WidgetNode to the list.
 | |
| 
 | |
|             Adds a WidgetNode to the list, in the 'front'.
 | |
|             \param node Node to add to list.
 | |
|         **/
 | |
|         void AddWidget(WidgetNode *node);
 | |
| 
 | |
|         /*!
 | |
|             \brief Delete a widget.
 | |
| 
 | |
|             Deletes a widget, it's memory and frees it from it's container or GewiEngine.
 | |
|             \param widget Widget to delete.
 | |
|         **/
 | |
|         void DeleteWidget(GWidget *widget);
 | |
| 
 | |
|         /*!
 | |
|             \brief Delete all widgets.
 | |
| 
 | |
|             Deletes all widgets and their memory.
 | |
|         **/
 | |
|         void DeleteWidgets();
 | |
|         
 | |
|         /*!
 | |
|             \brief Intercepts a message to process.
 | |
| 
 | |
|             Intercepts and processes incoming messages, delegating them where they belong.
 | |
|             \param rawEvent SDL_Event of original message, may be needed if more information is available on event. (May be NULL).
 | |
|             \param event GewiEvent enum, description of event recieved.
 | |
|             \param mouseX Mouse x position in event, if not mouse event may be incorrect.
 | |
|             \param mouseY Mouse y position in event, if not mouse event may be incorrect.
 | |
|             \param ch Character pressed in event, may be 0 if not a keypress event.
 | |
|         **/
 | |
|         void Message(SDL_Event *rawEvent, GewiEvent event, Uint16 mouseX, Uint16 mouseY, char ch);
 | |
| 
 | |
|         /*!
 | |
|             \brief Fit all widgets to the parent.
 | |
| 
 | |
|             Fits widgets to parent of which this linked list is a part of.
 | |
|         **/
 | |
|         void FitParent();
 | |
| 
 | |
|         /*!
 | |
|             \brief Show widgets.
 | |
| 
 | |
|             Calls Show method of widgets in reverse order for proper appearance.
 | |
|         **/
 | |
|         void ShowWidgets();
 | |
| };
 | |
| 
 | |
| }
 | |
| 
 | |
| #endif //__gewiwidgetlist_h__
 | 
