Public Member Functions | Data Fields | Private Member Functions

SettingEntry Struct Reference

Data structure describing a single setting in a tab. More...

Public Member Functions

 SettingEntry (const char *nm)
 Constructor for a single setting in the 'advanced settings' window.
 SettingEntry (SettingsPage *sub, StringID title)
 Constructor for a sub-page in the 'advanced settings' window.
void Init (byte level)
 Initialization of a setting entry.
void FoldAll ()
 Recursively close all (filtered) folds of sub-pages.
void UnFoldAll ()
 Recursively open all (filtered) folds of sub-pages.
void SetButtons (byte new_val)
 Set the button-depressed flags (SEF_LEFT_DEPRESSED and SEF_RIGHT_DEPRESSED) to a specified value.
void SetLastField (bool last_field)
 Set whether this is the last visible entry of the parent node.
uint Length () const
 Return numbers of rows needed to display the (filtered) entry.
void GetFoldingState (bool &all_folded, bool &all_unfolded) const
 Recursively accumulate the folding state of the (filtered) tree.
bool IsVisible (const SettingEntry *item) const
 Check whether an entry is visible and not folded or filtered away.
SettingEntryFindEntry (uint row, uint *cur_row)
 Find setting entry at row row_num.
uint GetMaxHelpHeight (int maxw)
 Get the biggest height of the help text(s), if the width is at least maxw.
bool IsFiltered () const
 Check whether an entry is hidden due to filters.
bool UpdateFilterState (StringFilter &filter, bool force_visible)
 Update the filter state.
uint Draw (GameSettings *settings_ptr, int base_x, int base_y, int max_x, uint first_row, uint max_row, uint cur_row, uint parent_last, SettingEntry *selected)
 Draw a row in the settings panel.
StringID GetHelpText ()
 Get the help text of a single setting.
void SetValueDParams (uint first_param, int32 value)
 Set the DParams for drawing the value of a setting.

Data Fields

byte flags
 Flags of the setting entry.
byte level
 Nesting level of this setting entry.
union {
   SettingEntrySetting   entry
 Data fields if entry is a setting.
   SettingEntrySubtree   sub
 Data fields if entry is a sub-page.
d
 Data fields for each kind.

Private Member Functions

void DrawSetting (GameSettings *settings_ptr, int x, int y, int max_x, int state, bool highlight)
 Private function to draw setting value (button + text + current value).

Detailed Description

Data structure describing a single setting in a tab.

Definition at line 997 of file settings_gui.cpp.


Constructor & Destructor Documentation

SettingEntry::SettingEntry ( const char *  nm  ) 

Constructor for a single setting in the 'advanced settings' window.

Parameters:
nm Name of the setting in the setting table

Definition at line 1073 of file settings_gui.cpp.

References d, flags, and level.

SettingEntry::SettingEntry ( SettingsPage sub,
StringID  title 
)

Constructor for a sub-page in the 'advanced settings' window.

Parameters:
sub Sub-page
title Title of the sub-page

Definition at line 1087 of file settings_gui.cpp.

References d, flags, and level.


Member Function Documentation

uint SettingEntry::Draw ( GameSettings settings_ptr,
int  left,
int  right,
int  base_y,
uint  first_row,
uint  max_row,
uint  cur_row,
uint  parent_last,
SettingEntry selected 
)

Draw a row in the settings panel.

See SettingsPage::Draw() for an explanation about how drawing is performed.

The parent_last parameter ensures that the vertical lines at the left are only drawn when another entry follows, that it prevents output like

 *  |-- setting
 *  |-- (-) - Title
 *  |    |-- setting
 *  |    |-- setting
 * 

The left-most vertical line is not wanted. It is prevented by setting the appropiate bit in the parent_last parameter.

Parameters:
settings_ptr Pointer to current values of all settings
left Left-most position in window/panel to start drawing first_row
right Right-most x position to draw strings at.
base_y Upper-most position in window/panel to start drawing first_row
first_row First row number to draw
max_row Row-number to stop drawing (the row-number of the row below the last row to draw)
cur_row Current row number (internal variable)
parent_last Last-field booleans of parent page level (page level i sets bit i to 1 if it is its last field)
selected Selected entry by the user.
Returns:
Row number of the next row to draw

Definition at line 1347 of file settings_gui.cpp.

References _colour_gradient, _current_text_dir, d, DrawSetting(), DrawSprite(), DrawString(), flags, HasBit(), IsFiltered(), level, SEF_BUTTONS_MASK, SEF_KIND_MASK, SEF_LAST_FIELD, SEF_SETTING_KIND, SEF_SUBTREE_KIND, and SetBit().

Referenced by SettingsPage::Draw().

void SettingEntry::DrawSetting ( GameSettings settings_ptr,
int  left,
int  right,
int  y,
int  state,
bool  highlight 
) [private]

Private function to draw setting value (button + text + current value).

Parameters:
settings_ptr Pointer to current values of all settings
left Left-most position in window/panel to start drawing
right Right-most position in window/panel to draw
y Upper-most position in window/panel to start drawing
state State of the left + right arrow buttons to draw for the setting
highlight Highlight entry.

Definition at line 1450 of file settings_gui.cpp.

References _current_text_dir, _network_server, _networking, SettingDescBase::cmd, SaveLoad::conv, d, SettingDesc::desc, DrawArrowButtons(), DrawBoolButton(), DrawDropDownButton(), DrawString(), SettingDescBase::flags, SettingDescBase::max, SettingDescBase::min, ReadValue(), SettingDesc::save, SDT_BOOLX, SetDParam(), SETTING_BUTTON_HEIGHT, SETTING_BUTTON_WIDTH, SetValueDParams(), SGF_0ISDISABLED, SGF_MULTISTRING, SGF_NETWORK_ONLY, SGF_NO_NETWORK, SLF_NO_NETWORK_SYNC, and SettingDescBase::str.

Referenced by Draw().

SettingEntry * SettingEntry::FindEntry ( uint  row_num,
uint *  cur_row 
)

Find setting entry at row row_num.

Parameters:
row_num Index of entry to return
cur_row Current row number
Returns:
The requested setting entry or NULL if it not found (folded or filtered)

Definition at line 1229 of file settings_gui.cpp.

References d, flags, IsFiltered(), SEF_KIND_MASK, SEF_SETTING_KIND, and SEF_SUBTREE_KIND.

Referenced by SettingsPage::FindEntry().

void SettingEntry::GetFoldingState ( bool &  all_folded,
bool &  all_unfolded 
) const

Recursively accumulate the folding state of the (filtered) tree.

Parameters:
[in,out] all_folded Set to false, if one entry is not folded.
[in,out] all_unfolded Set to false, if one entry is folded.

Definition at line 1155 of file settings_gui.cpp.

References d, flags, IsFiltered(), SEF_KIND_MASK, SEF_SETTING_KIND, and SEF_SUBTREE_KIND.

Referenced by SettingsPage::GetFoldingState().

StringID SettingEntry::GetHelpText (  )  [inline]

Get the help text of a single setting.

Returns:
The requested help text.

Definition at line 1034 of file settings_gui.cpp.

References d, flags, SEF_KIND_MASK, and SEF_SETTING_KIND.

Referenced by GetMaxHelpHeight(), and UpdateFilterState().

uint SettingEntry::GetMaxHelpHeight ( int  maxw  ) 

Get the biggest height of the help text(s), if the width is at least maxw.

Help text gets wrapped if needed.

Parameters:
maxw Maximal width of a line help text.
Returns:
Biggest height needed to display any help text of this node (and its descendants).

Definition at line 1256 of file settings_gui.cpp.

References d, flags, GetHelpText(), GetStringHeight(), SEF_KIND_MASK, SEF_SETTING_KIND, and SEF_SUBTREE_KIND.

void SettingEntry::Init ( byte  level  ) 

Initialization of a setting entry.

Parameters:
level Page nesting level of this entry

Definition at line 1100 of file settings_gui.cpp.

References d, flags, GetSettingFromName(), SEF_KIND_MASK, SEF_SETTING_KIND, and SEF_SUBTREE_KIND.

Referenced by SettingsPage::Init().

bool SettingEntry::IsFiltered (  )  const

Check whether an entry is hidden due to filters.

Returns:
true if hidden.

Definition at line 1269 of file settings_gui.cpp.

References flags.

Referenced by Draw(), FindEntry(), FoldAll(), GetFoldingState(), IsVisible(), Length(), and UnFoldAll().

bool SettingEntry::IsVisible ( const SettingEntry item  )  const

Check whether an entry is visible and not folded or filtered away.

Note: This does not consider the scrolling range; it might still require scrolling ot make the setting really visible.

Parameters:
item Entry to search for.
Returns:
true if entry is visible.

Definition at line 1181 of file settings_gui.cpp.

References d, flags, IsFiltered(), SEF_KIND_MASK, SEF_SETTING_KIND, and SEF_SUBTREE_KIND.

void SettingEntry::SetButtons ( byte  new_val  ) 

Set the button-depressed flags (SEF_LEFT_DEPRESSED and SEF_RIGHT_DEPRESSED) to a specified value.

Parameters:
new_val New value for the button flags
See also:
SettingEntryFlags

Definition at line 1202 of file settings_gui.cpp.

References flags, and SEF_BUTTONS_MASK.

void SettingEntry::SetLastField ( bool  last_field  )  [inline]

Set whether this is the last visible entry of the parent node.

Parameters:
last_field Value to set

Definition at line 1017 of file settings_gui.cpp.

References CLRBITS, flags, SEF_LAST_FIELD, and SETBITS.

Referenced by SettingsPage::UpdateFilterState().

void SettingEntry::SetValueDParams ( uint  first_param,
int32  value 
)

Set the DParams for drawing the value of a setting.

Parameters:
first_param First DParam to use
value Setting value to set params for.

Definition at line 1422 of file settings_gui.cpp.

References abs(), SettingDescBase::cmd, d, SettingDescBase::flags, flags, SettingDescBase::min, SDT_BOOLX, SEF_KIND_MASK, SEF_SETTING_KIND, SetDParam(), SGF_0ISDISABLED, SGF_DISPLAY_ABS, SGF_MULTISTRING, and SettingDescBase::str_val.

Referenced by DrawSetting().

bool SettingEntry::UpdateFilterState ( StringFilter filter,
bool  force_visible 
)

Update the filter state.

Parameters:
filter String filter
force_visible Whether to force all items visible, no matter what
Returns:
true if item remains visible

Definition at line 1280 of file settings_gui.cpp.

References StringFilter::AddLine(), CLRBITS, d, SettingDesc::desc, flags, GetHelpText(), StringFilter::GetState(), StringFilter::IsEmpty(), StringFilter::ResetState(), SEF_FILTERED, SEF_KIND_MASK, SEF_SETTING_KIND, SEF_SUBTREE_KIND, SETBITS, SetDParam(), and SettingDescBase::str.

Referenced by SettingsPage::UpdateFilterState().


Field Documentation


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