Crazy Eddie's GUI System 0.8.7
Loading...
Searching...
No Matches
widgets/ListHeader.h
1/***********************************************************************
2 created: 13/4/2004
3 author: Paul D Turner
4
5 purpose: Interface to base class for ListHeader widget
6*************************************************************************/
7/***************************************************************************
8 * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining
11 * a copy of this software and associated documentation files (the
12 * "Software"), to deal in the Software without restriction, including
13 * without limitation the rights to use, copy, modify, merge, publish,
14 * distribute, sublicense, and/or sell copies of the Software, and to
15 * permit persons to whom the Software is furnished to do so, subject to
16 * the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be
19 * included in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 * OTHER DEALINGS IN THE SOFTWARE.
28 ***************************************************************************/
29#ifndef _CEGUIListHeader_h_
30#define _CEGUIListHeader_h_
31
32#include "../Base.h"
33#include "../Window.h"
34#include "./ListHeaderSegment.h"
35
36#if defined(_MSC_VER)
37# pragma warning(push)
38# pragma warning(disable : 4251)
39#endif
40
41
42// Start of CEGUI namespace section
43namespace CEGUI
44{
57
62class CEGUIEXPORT ListHeaderWindowRenderer : public WindowRenderer
63{
64public:
70
82 virtual ListHeaderSegment* createNewSegment(const String& name) const = 0;
83
96};
97
98
103class CEGUIEXPORT ListHeader : public Window
104{
105public:
106 static const String EventNamespace;
107 static const String WidgetTypeName;
108
109
110 /*************************************************************************
111 Constants
112 *************************************************************************/
113 // Event names
189
190 // values
191 static const float ScrollSpeed;
192 static const float MinimumSegmentPixelWidth;
193
194 /*************************************************************************
195 Child Widget name suffix constants
196 *************************************************************************/
199
200
201 /*************************************************************************
202 Accessor Methods
203 *************************************************************************/
211 uint getColumnCount(void) const;
212
213
227
228
243
244
267
268
282
283
297
298
309 uint getSortColumn(void) const;
310
311
324 uint getColumnWithText(const String& text) const;
325
326
340
341
355 float getPixelOffsetToColumn(uint column) const;
356
357
366
367
381 UDim getColumnWidth(uint column) const;
382
383
392
393
402 bool isSortingEnabled(void) const;
403
404
412 bool isColumnSizingEnabled(void) const;
413
414
422 bool isColumnDraggingEnabled(void) const;
423
424
433 float getSegmentOffset(void) const {return d_segmentOffset;}
434
435
436 /*************************************************************************
437 Manipulator Methods
438 *************************************************************************/
451
452
464
465
479
480
493 void setSortColumn(uint column);
494
495
509
510
523
524
537
538
555 void addColumn(const String& text, uint id, const UDim& width);
556
557
578 void insertColumn(const String& text, uint id, const UDim& width, uint position);
579
580
603 void insertColumn(const String& text, uint id, const UDim& width, const ListHeaderSegment& position);
604
605
618 void removeColumn(uint column);
619
620
634
635
652 void moveColumn(uint column, uint position);
653
654
673 void moveColumn(uint column, const ListHeaderSegment& position);
674
675
693
694
713
714
727 void setSegmentOffset(float offset);
728
729
746 void setColumnWidth(uint column, const UDim& width);
747
748
749 /*************************************************************************
750 Construction and Destruction
751 *************************************************************************/
756 ListHeader(const String& type, const String& name);
757
758
763 virtual ~ListHeader(void);
764
765
766protected:
767 /*************************************************************************
768 Abstract Implementation Methods
769 *************************************************************************/
781 //virtual ListHeaderSegment* createNewSegment_impl(const String& name) const = 0;
782
783
795 //virtual void destroyListSegment_impl(ListHeaderSegment* segment) const = 0;
796
797
798 /*************************************************************************
799 Implementation Methods
800 *************************************************************************/
806
807
812 void layoutSegments(void);
813
826
827
840
841 // validate window renderer
843
844 /*************************************************************************
845 New List header event handlers
846 *************************************************************************/
852
853
859
860
866
867
873
874
880
881
887
888
894
895
901
902
908
909
915
916
922
923
929
930 /*************************************************************************
931 handlers for events we subscribe to from segments
932 *************************************************************************/
933 bool segmentSizedHandler(const EventArgs& e);
934 bool segmentMovedHandler(const EventArgs& e);
935 bool segmentClickedHandler(const EventArgs& e);
936 bool segmentDoubleClickHandler(const EventArgs& e);
937 bool segmentDragHandler(const EventArgs& e);
938
939
940 /*************************************************************************
941 Implementation Data
942 *************************************************************************/
943 typedef std::vector<ListHeaderSegment*
944 CEGUI_VECTOR_ALLOC(ListHeaderSegment*)> SegmentList;
945 SegmentList d_segments;
953
954
955private:
956 /*************************************************************************
957 Private methods
958 *************************************************************************/
959 void addHeaderProperties(void);
960};
961
962
963} // End of CEGUI namespace section
964
965
966#if defined(_MSC_VER)
967# pragma warning(pop)
968#endif
969
970#endif // end of guard _CEGUIListHeader_h_
Base class used as the argument to all subscribers Event object.
Definition EventArgs.h:51
EventArgs class used for segment move (sequence changed) events.
Definition widgets/ListHeader.h:50
uint d_newIdx
The new column index of the segment that has moved.
Definition widgets/ListHeader.h:55
uint d_oldIdx
The original column index of the segment that has moved.
Definition widgets/ListHeader.h:54
Base class for list header segment window.
Definition widgets/ListHeaderSegment.h:50
SortDirection
Enumeration of possible values for sorting direction used with ListHeaderSegment classes.
Definition widgets/ListHeaderSegment.h:133
Base class for the multi column list header window renderer.
Definition widgets/ListHeader.h:63
virtual void destroyListSegment(ListHeaderSegment *segment) const =0
Cleanup and destroy the given ListHeaderSegment that was created via the createNewSegment method.
virtual ListHeaderSegment * createNewSegment(const String &name) const =0
Create and return a pointer to a new ListHeaderSegment based object.
ListHeaderWindowRenderer(const String &name)
Constructor.
Base class for the multi column list header widget.
Definition widgets/ListHeader.h:104
void moveColumn(uint column, uint position)
Moves a column segment into a new position.
bool d_sortingEnabled
true if the sort criteria modifications by user are enabled (no sorting is actuall done)
Definition widgets/ListHeader.h:948
void setSegmentOffset(float offset)
Set the current base segment offset. (This implements scrolling of the header segments within the hea...
UDim getColumnWidth(uint column) const
Return the width of the specified column.
static const String EventDragSizeSettingChanged
Definition widgets/ListHeader.h:182
void moveColumn(uint column, const ListHeaderSegment &position)
Move a column segment to a new position.
static const String WidgetTypeName
Window factory name.
Definition widgets/ListHeader.h:107
uint getColumnCount(void) const
Return the number of columns or segments attached to the header.
void removeColumn(uint column)
Removes a column segment from the ListHeader.
bool d_sizingEnabled
true if segments can be sized by the user.
Definition widgets/ListHeader.h:947
static const String EventDragMoveSettingChanged
Definition widgets/ListHeader.h:175
SegmentList d_segments
Attached segment windows in header order.
Definition widgets/ListHeader.h:945
virtual void onSortColumnChanged(WindowEventArgs &e)
Handler called when the sort column is changed.
void moveSegment(const ListHeaderSegment &segment, uint position)
Moves a segment into a new position.
ListHeaderSegment & getSegmentFromID(uint id) const
Return the ListHeaderSegment object with the specified ID.
ListHeader(const String &type, const String &name)
Constructor for the list header base class.
void setColumnDraggingEnabled(bool setting)
Set whether columns may be reordered by the user via drag and drop.
static const String EventSegmentClicked
Definition widgets/ListHeader.h:135
void setColumnWidth(uint column, const UDim &width)
Set the width of the specified column.
static const String EventSortSettingChanged
Definition widgets/ListHeader.h:168
void layoutSegments(void)
Layout the attached segments.
virtual void onDragMoveSettingChanged(WindowEventArgs &e)
Handler called when the setting that controls the users ability to drag and drop segments changes.
void removeSegment(const ListHeaderSegment &segment)
Remove the specified segment from the ListHeader.
virtual void onSegmentSequenceChanged(WindowEventArgs &e)
Handler called when the segment / column order changes.
static const String EventSegmentSized
Definition widgets/ListHeader.h:130
ListHeaderSegment & getSegmentFromColumn(uint column) const
Return the ListHeaderSegment object for the specified column.
void setSortColumn(uint column)
Set the column to be used as the sort column.
uint getSortSegmentID(void) const
Return the ListHeaderSegment ID that is marked as being the 'sort key' segment. There must be at leas...
ListHeaderSegment * createInitialisedSegment(const String &text, uint id, const UDim &width)
Create and return a pointer to a new ListHeaderSegment based object.
bool isColumnDraggingEnabled(void) const
Return whether the user may modify the order of the segments.
virtual ~ListHeader(void)
Destructor for the list header base class.
ListHeaderSegment * createNewSegment(const String &name) const
Create and return a pointer to a new ListHeaderSegment based object.
static const float MinimumSegmentPixelWidth
Miniumum width of a segment in pixels.
Definition widgets/ListHeader.h:192
static const String EventSegmentAdded
Definition widgets/ListHeader.h:155
float getPixelOffsetToColumn(uint column) const
Return the pixel offset to the ListHeaderSegment at the given zero based column index.
static const String EventSortColumnChanged
Definition widgets/ListHeader.h:119
void setSortDirection(ListHeaderSegment::SortDirection direction)
Set the current sort direction.
float getSegmentOffset(void) const
Return the current segment offset value. This value is used to implement scrolling of the header segm...
Definition widgets/ListHeader.h:433
virtual void onSplitterDoubleClicked(WindowEventArgs &e)
Handler called when a segment splitter / sizer is double-clicked. e.window points to the segment.
bool d_movingEnabled
true if drag & drop moving of columns / segments is enabled.
Definition widgets/ListHeader.h:949
virtual void onSortDirectionChanged(WindowEventArgs &e)
Handler called when the sort direction is changed.
ListHeaderSegment * d_sortSegment
Pointer to the segment that is currently set as the sork-key,.
Definition widgets/ListHeader.h:946
ListHeaderSegment::SortDirection d_sortDir
Brief copy of the current sort direction.
Definition widgets/ListHeader.h:952
virtual bool validateWindowRenderer(const WindowRenderer *renderer) const
Function used in checking if a WindowRenderer is valid for this window.
uint getColumnFromSegment(const ListHeaderSegment &segment) const
Return the zero based column index of the specified segment.
uint getColumnWithText(const String &text) const
Return the zero based column index of the segment with the specified text.
static const String SegmentNameSuffix
Widget name suffix for header segments.
Definition widgets/ListHeader.h:198
void moveSegment(const ListHeaderSegment &segment, const ListHeaderSegment &position)
Move a segment to a new position.
virtual void onSegmentAdded(WindowEventArgs &e)
Handler called when a new segment is added to the header.
void setSortingEnabled(bool setting)
Set whether user manipulation of the sort column and direction is enabled.
bool isSortingEnabled(void) const
Return whether user manipulation of the sort column & direction are enabled.
void addColumn(const String &text, uint id, const UDim &width)
Add a new column segment to the end of the header.
ListHeaderSegment::SortDirection getSortDirection(void) const
Return the currently set sort direction.
float getTotalSegmentsPixelExtent(void) const
Return the total pixel width of all attached segments.
void setColumnSizingEnabled(bool setting)
Set whether columns may be sized by the user.
virtual void onSegmentSized(WindowEventArgs &e)
Handler called when a segment is sized by the user. e.window points to the segment.
float d_segmentOffset
Base offset used to layout the segments (allows scrolling within the window area)
Definition widgets/ListHeader.h:951
virtual void onSegmentOffsetChanged(WindowEventArgs &e)
Handler called when the base rendering offset for the segments (scroll position) changes.
static const String EventSegmentRemoved
Definition widgets/ListHeader.h:161
float getPixelOffsetToSegment(const ListHeaderSegment &segment) const
Return the pixel offset to the given ListHeaderSegment.
static const float ScrollSpeed
Speed to scroll at when dragging outside header.
Definition widgets/ListHeader.h:191
virtual void onSortSettingChanged(WindowEventArgs &e)
Handler called then setting that controls the users ability to modify the search column & direction c...
void insertColumn(const String &text, uint id, const UDim &width, uint position)
ListHeaderSegment & getSortSegment(void) const
Return the ListHeaderSegment that is marked as being the 'sort key' segment. There must be at least o...
uint d_uniqueIDNumber
field used to create unique names.
Definition widgets/ListHeader.h:950
static const String EventSegmentSequenceChanged
Definition widgets/ListHeader.h:149
static const String EventSegmentRenderOffsetChanged
Definition widgets/ListHeader.h:188
void setSortSegment(const ListHeaderSegment &segment)
Set the column segment to be used as the sort column.
virtual void onDragSizeSettingChanged(WindowEventArgs &e)
Handler called when the setting that controls the users ability to size segments changes.
static const String EventNamespace
Namespace for global events.
Definition widgets/ListHeader.h:106
virtual void onSegmentClicked(WindowEventArgs &e)
Handler called when a segment is clicked by the user. e.window points to the segment.
void insertColumn(const String &text, uint id, const UDim &width, const ListHeaderSegment &position)
void destroyListSegment(ListHeaderSegment *segment) const
Cleanup and destroy the given ListHeaderSegment that was created via the createNewSegment method.
void setSortColumnFromID(uint id)
Set the column to to be used for sorting via its ID code.
uint getSortColumn(void) const
Return the zero based index of the current sort column. There must be at least one segment/column to ...
static const String EventSortDirectionChanged
Definition widgets/ListHeader.h:125
static const String EventSplitterDoubleClicked
Definition widgets/ListHeader.h:141
uint getColumnFromID(uint id) const
Return the zero based column index of the segment with the specified ID.
virtual void onSegmentRemoved(WindowEventArgs &e)
Handler called when a segment is removed from the header.
bool isColumnSizingEnabled(void) const
Return whether the user may size column segments.
String class used within the GUI system.
Definition String.h:64
base class for properties able to do native set/get
Definition TypedProperty.h:50
Dimension that has both a relative 'scale' portion and and absolute 'offset' portion.
Definition UDim.h:94
EventArgs based class that is used for objects passed to handlers triggered for events concerning som...
Definition InputEvent.h:252
Base-class for the assignable WindowRenderer object.
Definition WindowRenderer.h:52
An abstract base class providing common functionality and specifying the required interface for deriv...
Definition Window.h:151
Main namespace for Crazy Eddie's GUI Library.
Definition arch_overview.dox:1