GG
Public Types

GG::ListBox::Row Struct Reference

A single item in a listbox. More...

#include <ListBox.h>

Inheritance diagram for GG::ListBox::Row:
GG::Control GG::Wnd

List of all members.

Public Types

typedef std::string SortKeyType

Structors

 Row ()
 Row (X w, Y h, const std::string &drag_drop_data_type, Alignment align=ALIGN_VCENTER, unsigned int margin=2)
virtual ~Row ()

Accessors

SortKeyType SortKey (std::size_t column) const
std::size_t size () const
bool empty () const
Controloperator[] (std::size_t n) const
Controlat (std::size_t n) const
Alignment RowAlignment () const
Alignment ColAlignment (std::size_t n) const
X ColWidth (std::size_t n) const
unsigned int Margin () const
ControlCreateControl (const std::string &str, const boost::shared_ptr< Font > &font, Clr color) const
ControlCreateControl (const SubTexture &st) const

Mutators

virtual void Render ()
void push_back (Control *c)
void push_back (const std::string &str, const boost::shared_ptr< Font > &font, Clr color=CLR_BLACK)
void push_back (const std::string &str, const std::string &font_filename, unsigned int pts, Clr color=CLR_BLACK)
void push_back (const SubTexture &st)
void clear ()
void resize (std::size_t n)
void SetCell (std::size_t n, Control *c)
ControlRemoveCell (std::size_t n)
void SetRowAlignment (Alignment align)
void SetColAlignment (std::size_t n, Alignment align)
void SetColWidth (std::size_t n, X width)
void SetColAlignments (const std::vector< Alignment > &aligns)
void SetColWidths (const std::vector< X > &widths)
void SetMargin (unsigned int margin)

Detailed Description

A single item in a listbox.

A Row is primarily a container for Controls. Each cell in a Row contains pointer to a Control-derived object. As always, each such Control can be connected to arbitrary functionality using signals and slots. During dragging and dropping, the data type associated with a Row (DragDropDataType()) indicates to potential drop targets what type of data the Row represents; the target may accept or decline the drop based on the data type. Rows are stored in ListBoxes by reference, not value; this means that you can subclass from Row to create your own custom Row types. This is the recommended method for associating a row with the non-GUI object that it represents. Note that all subclasses of Row must declare a SortKeyType, if it differs from std::string, and must provide a SortKey() method if it should differ from the default SortKey() that Row provides. Note that SortKey is not virtual; this part of its interface is used for compile-time polymorphism -- whatever sorter is used with a Row subclass must know the most-derived type of the Row subclass.

Note:
The margin, column alignment, and width cell data are included so that each Row has all the necessary information with which to render itself (this is primarily needed to facilitate drag-and-drop); these data are duplicates of the margin, alignment, and column widths data found in the owning ListBox, and may be overwritten by the ListBox at any time.

Definition at line 149 of file ListBox.h.


Member Typedef Documentation

typedef std::string GG::ListBox::Row::SortKeyType

the type of key used to sort rows

Definition at line 164 of file ListBox.h.


Member Function Documentation

Control* GG::ListBox::Row::at ( std::size_t  n) const

returns the Control in the nth cell of this Row

Exceptions:
std::range_errorthrows when size() <= n
virtual void GG::ListBox::Row::Render ( ) [virtual]

Draws this Wnd. Note that Wnds being dragged for a drag-and-drop operation are rendered twice -- once in-place as normal, once in the location of the drag operation, attached to the cursor. Such Wnds may wish to render themselves differently in those two cases. To determine which render is being performed, they can call GUI::GetGUI()->RenderingDragDropWnds().

Implements GG::Control.


The documentation for this struct was generated from the following file: