Crazy Eddies GUI System: CEGUIListHeaderSegment.h Source File

Crazy Eddies GUI System 0.7.6

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

CEGUIListHeaderSegment.h

    00001 /***********************************************************************
    00002         filename:       CEGUIListHeaderSegment.h
    00003         created:        15/6/2004
    00004         author:         Paul D Turner
    00005
    00006         purpose:        Interface to list header segment class.
    00007 *************************************************************************/
    00008 /***************************************************************************
    00009  *   Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
    00010  *
    00011  *   Permission is hereby granted, free of charge, to any person obtaining
    00012  *   a copy of this software and associated documentation files (the
    00013  *   "Software"), to deal in the Software without restriction, including
    00014  *   without limitation the rights to use, copy, modify, merge, publish,
    00015  *   distribute, sublicense, and/or sell copies of the Software, and to
    00016  *   permit persons to whom the Software is furnished to do so, subject to
    00017  *   the following conditions:
    00018  *
    00019  *   The above copyright notice and this permission notice shall be
    00020  *   included in all copies or substantial portions of the Software.
    00021  *
    00022  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    00023  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    00024  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    00025  *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
    00026  *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
    00027  *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    00028  *   OTHER DEALINGS IN THE SOFTWARE.
    00029  ***************************************************************************/
    00030 #ifndef _CEGUIListHeaderSegment_h_
    00031 #define _CEGUIListHeaderSegment_h_
    00032
    00033 #include "../CEGUIBase.h"
    00034 #include "../CEGUIWindow.h"
    00035 #include "CEGUIListHeaderSegmentProperties.h"
    00036
    00037
    00038 #if defined(_MSC_VER)
    00039 #       pragma warning(push)
    00040 #       pragma warning(disable : 4251)
    00041 #endif
    00042
    00043
    00044 // Start of CEGUI namespace section
    00045 namespace CEGUI
    00046 {
    00051 class CEGUIEXPORT ListHeaderSegment : public Window
    00052 {
    00053 public:
    00054         static const String EventNamespace;
    00055     static const String WidgetTypeName;
    00056
    00057
    00058         /*************************************************************************
    00059                 Constants
    00060         *************************************************************************/
    00061         // Event names
    00066         static const String EventSegmentClicked;
    00072         static const String EventSplitterDoubleClicked;
    00078         static const String EventSizingSettingChanged;
    00084         static const String EventSortDirectionChanged;
    00090         static const String EventMovableSettingChanged;
    00096         static const String EventSegmentDragStart;
    00102         static const String EventSegmentDragStop;
    00108         static const String EventSegmentDragPositionChanged;
    00114         static const String EventSegmentSized;
    00120         static const String EventClickableSettingChanged;
    00121
    00122         // Defaults
    00123         static const float      DefaultSizingArea;
    00124         static const float      SegmentMoveThreshold;
    00125
    00126
    00127         /*************************************************************************
    00128                 Enumerated types
    00129         *************************************************************************/
    00134         enum SortDirection
    00135         {
    00136                 None,
    00137                 Ascending,
    00138                 Descending
    00139         };
    00140
    00141
    00142         /*************************************************************************
    00143                 Accessor Methods
    00144         *************************************************************************/
    00152         bool    isSizingEnabled(void) const                     {return d_sizingEnabled;}
    00153
    00154
    00167         SortDirection   getSortDirection(void) const    {return d_sortDir;}
    00168
    00169
    00177         bool    isDragMovingEnabled(void) const         {return d_movingEnabled;}
    00178
    00179
    00187         const Point&    getDragMoveOffset(void) const   {return d_dragPosition;}
    00188
    00189
    00197         bool    isClickable(void) const         {return d_allowClicks;}
    00198
    00199
    00204     bool    isSegmentHovering(void) const  {return d_segmentHover;}
    00205
    00206
    00211     bool    isSegmentPushed(void) const  {return d_segmentPushed;}
    00212
    00213
    00218     bool    isSplitterHovering(void) const  {return d_splitterHover;}
    00219
    00220
    00225     bool    isBeingDragMoved(void) const  {return d_dragMoving;}
    00226
    00227
    00232     bool    isBeingDragSized(void) const  {return d_dragSizing;}
    00233
    00234
    00235     const Image* getSizingCursorImage() const;
    00236     const Image* getMovingCursorImage() const;
    00237
    00238
    00239         /*************************************************************************
    00240                 Manipulator Methods
    00241         *************************************************************************/
    00252         void    setSizingEnabled(bool setting);
    00253
    00254
    00270         void    setSortDirection(SortDirection sort_dir);
    00271
    00272
    00283         void    setDragMovingEnabled(bool setting);
    00284
    00285
    00296         void setClickable(bool setting);
    00297
    00298
    00299     void setSizingCursorImage(const Image* image);
    00300     void setSizingCursorImage(const String& imageset, const String& image);
    00301     void setMovingCursorImage(const Image* image);
    00302     void setMovingCursorImage(const String& imageset, const String& image);
    00303
    00304
    00305         /*************************************************************************
    00306                 Construction & Destruction
    00307         *************************************************************************/
    00312         ListHeaderSegment(const String& type, const String& name);
    00313
    00314
    00319         virtual ~ListHeaderSegment(void);
    00320
    00321
    00322 protected:
    00323         /*************************************************************************
    00324                 Implementation Methods
    00325         *************************************************************************/
    00336         void    doDragSizing(const Point& local_mouse);
    00337
    00338
    00349         void    doDragMoving(const Point& local_mouse);
    00350
    00351
    00356         void    initDragMoving(void);
    00357
    00358
    00363         void    initSizingHoverState(void);
    00364
    00365
    00370         void    initSegmentHoverState(void);
    00371
    00372
    00385         bool    isDragMoveThresholdExceeded(const Point& local_mouse);
    00386
    00387
    00398         virtual bool    testClassName_impl(const String& class_name) const
    00399         {
    00400                 if (class_name=="ListHeaderSegment")    return true;
    00401                 return Window::testClassName_impl(class_name);
    00402         }
    00403
    00404
    00405         /*************************************************************************
    00406                 New Event Handlers
    00407         *************************************************************************/
    00412         virtual void    onSegmentClicked(WindowEventArgs& e);
    00413
    00414
    00419         virtual void    onSplitterDoubleClicked(WindowEventArgs& e);
    00420
    00421
    00426         virtual void    onSizingSettingChanged(WindowEventArgs& e);
    00427
    00428
    00433         virtual void    onSortDirectionChanged(WindowEventArgs& e);
    00434
    00435
    00440         virtual void    onMovableSettingChanged(WindowEventArgs& e);
    00441
    00442
    00447         virtual void    onSegmentDragStart(WindowEventArgs& e);
    00448
    00449
    00454         virtual void    onSegmentDragStop(WindowEventArgs& e);
    00455
    00456
    00461         virtual void    onSegmentDragPositionChanged(WindowEventArgs& e);
    00462
    00463
    00468         virtual void    onSegmentSized(WindowEventArgs& e);
    00469
    00470
    00475         virtual void    onClickableSettingChanged(WindowEventArgs& e);
    00476
    00477
    00478         /*************************************************************************
    00479                 Overridden Event Handlers
    00480         *************************************************************************/
    00481         virtual void    onMouseMove(MouseEventArgs& e);
    00482         virtual void    onMouseButtonDown(MouseEventArgs& e);
    00483         virtual void    onMouseButtonUp(MouseEventArgs& e);
    00484         virtual void    onMouseDoubleClicked(MouseEventArgs& e);
    00485         virtual void    onMouseLeaves(MouseEventArgs& e);
    00486         virtual void    onCaptureLost(WindowEventArgs& e);
    00487
    00488
    00489         /*************************************************************************
    00490                 Implementation Data
    00491         *************************************************************************/
    00492         const Image*    d_sizingMouseCursor;
    00493         const Image*    d_movingMouseCursor;
    00494
    00495         float   d_splitterSize;
    00496         bool    d_splitterHover;
    00497
    00498         bool    d_dragSizing;
    00499         Point   d_dragPoint;
    00500
    00501         SortDirection   d_sortDir;
    00502
    00503         bool    d_segmentHover;
    00504         bool    d_segmentPushed;
    00505         bool    d_sizingEnabled;
    00506         bool    d_movingEnabled;
    00507         bool    d_dragMoving;
    00508         Point   d_dragPosition;
    00509         bool    d_allowClicks;
    00510
    00511 private:
    00512         /*************************************************************************
    00513                 Static Properties for this class
    00514         *************************************************************************/
    00515         static ListHeaderSegmentProperties::Clickable           d_clickableProperty;
    00516         static ListHeaderSegmentProperties::Dragable            d_dragableProperty;
    00517         static ListHeaderSegmentProperties::Sizable                     d_sizableProperty;
    00518         static ListHeaderSegmentProperties::SortDirection       d_sortDirectionProperty;
    00519     static ListHeaderSegmentProperties::SizingCursorImage   d_sizingCursorProperty;
    00520     static ListHeaderSegmentProperties::MovingCursorImage   d_movingCursorProperty;
    00521
    00522
    00523         /*************************************************************************
    00524                 Private methods
    00525         *************************************************************************/
    00526         void    addHeaderSegmentProperties(void);
    00527 };
    00528
    00529 } // End of  CEGUI namespace section
    00530
    00531 #if defined(_MSC_VER)
    00532 #       pragma warning(pop)
    00533 #endif
    00534
    00535 #endif  // end of guard _CEGUIListHeaderSegment_h_