ArcdpsExtension
 
Loading...
Searching...
No Matches
ArcdpsExtension::MainTable< MaxColumnCount > Class Template Referenceabstract

#include <MainTable.h>

Inheritance diagram for ArcdpsExtension::MainTable< MaxColumnCount >:
Collaboration diagram for ArcdpsExtension::MainTable< MaxColumnCount >:

Classes

struct  Table
 
struct  TableColumn
 
struct  TableColumnSettings
 
struct  TableSettings
 

Public Types

typedef std::bitset< MaxColumnCount > ColumnBitMask
 

Public Member Functions

 MainTable (const std::vector< MainTableColumn > &pColumns, MainWindow *pMainWindow, MainTableFlags pFlags=0)
 
virtual ~MainTable ()=default
 
 MainTable (const MainTable &pOther)=delete
 
 MainTable (MainTable &&pOther) noexcept=delete
 
MainTableoperator= (const MainTable &pOther)=delete
 
MainTableoperator= (MainTable &&pOther) noexcept=delete
 
void Draw ()
 
void DrawColumnSetupMenu ()
 
void RequestSort ()
 
void SetSpecificColumnSetup (const std::vector< size_t > &pNewColumns)
 
void ResetSpecificColumnSetup ()
 
bool GetSpecificColumnsActive () const
 

Static Public Member Functions

static size_t GetMaxColumnCount ()
 

Protected Member Functions

virtual void DrawRows (TableColumnIdx pFirstColumnIndex)=0
 
virtual void Sort (const ImGuiTableColumnSortSpecs *mColumnSortSpecs)=0
 
virtual void DrawStyleSubMenu ()
 
virtual void DrawColumnSetupSubMenu ()
 
virtual AlignmentgetAlignment ()=0
 
virtual AlignmentgetHeaderAlignment ()=0
 
virtual bool getShowScrollbar ()
 
virtual std::string getTableId ()=0
 
virtual bool getMaxHeightActive ()
 
virtual int & getMaxDisplayed ()=0
 
virtual bool & getShowAlternatingBackground ()=0
 
virtual TableSettingsgetTableSettings ()=0
 
virtual bool & getHighlightHoveredRows ()=0
 
virtual bool & getShowHeaderAsText ()=0
 
virtual bool getCustomColumnsFeatureActive ()
 
virtual bool & getCustomColumnsActive ()
 
virtual int getCustomColumnsFirstColumn ()
 
virtual void MigrateSettings ()
 
virtual const char * getCategoryName (const std::string &pCat)=0
 
void NextRow (ImGuiTableRowFlags row_flags=0, float min_row_height=0.0f)
 
bool NextColumn ()
 
void EndMaxHeightRow ()
 
ImGuiTableSortSpecs * GetSortSpecs ()
 
void SetupColumn (const char *label, ImGuiTableColumnFlags flags, float init_width_or_weight, ImGuiID user_id)
 
void ColumnHeader (const char *label, bool show_label, ImTextureID texture, Alignment alignment, const char *popupText)
 
void AlignedTextColumn (const char *text)
 
void AlignedTextColumn (const std::string &text)
 
template<typename... Args>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void AlignedTextColumn (std::string_view format, Args &&... args)
 
bool SpinnerAligned (const char *label, float radius, float thickness, const ImU32 &color)
 
void ApplySpecificColumnSetup ()
 
bool Begin (const char *str_id, int columns_count, ImGuiTableFlags flags, const ImVec2 &outer_size, float inner_width, ImGuiWindowFlags child_window_flags)
 
void End ()
 
void MenuItemColumnVisibility (int TableColumnIdx)
 
const char * GetColumnName (int column_n)
 
void SetupScrollFreeze (int columns, int rows)
 
ImRect GetCellBgRect (int column_n)
 
bool IsCurrentColumnHovered ()
 
bool IsCurrentRowHovered ()
 
int GetColumnIndex ()
 

Protected Attributes

Table mTable
 

Detailed Description

template<size_t MaxColumnCount = 64>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
class ArcdpsExtension::MainTable< MaxColumnCount >

This class also contains the whole ImGui implementation of a table! It is a copy of the Table implementation of ImGui.

The template is used to define the max size of the table. This is needed cause the ImGui table was changed to use std::bitset

How to use:

  • Implement your own version of this class with all virtual void functions implemented.
  • Use your derived class in your window.
  • Make sure this class is constructed AFTER other components, so it hooks last.
  • pColumns in the constructor is saved as reference in this class, the calling object has to be valid the whole lifetime of this class!
  • Call Draw() in DrawContent()
  • Call DrawColumnSetupMenu() in DrawContextMenu() if you want to hide your columns.
  • Use MigrateSettings when you made changes to the table, that need the settings to be migrated. NEVER migrate within the Settings object itself, cause that would be too early.

Hoe do settings work:
Settings are still similar to how ImGui has designed them to be. The biggest difference is that columns are now saved based on the UserID instead of the index. The uniqueness of that ID has to be handled by the caller. When Migrating settings, delete what you removed, when adding new elements, only migrate the (still indexbased) DisplayOrder. When removing elements, only migrate the DisplayOrder as well. That is not all, there are some weird byproducts with the TableFlags and the SavedFlags.
!!! TEST THE SETTINGS MIGRATION REALLY WELL, IT IS SOMETIMES UNPREDICTABLE !!!

Member Typedef Documentation

◆ ColumnBitMask

template<size_t MaxColumnCount = 64>
typedef std::bitset<MaxColumnCount> ArcdpsExtension::MainTable< MaxColumnCount >::ColumnBitMask

Constructor & Destructor Documentation

◆ MainTable() [1/3]

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
ArcdpsExtension::MainTable< MaxColumnCount >::MainTable ( const std::vector< MainTableColumn > &  pColumns,
MainWindow pMainWindow,
MainTableFlags  pFlags = 0 
)

◆ ~MainTable()

template<size_t MaxColumnCount = 64>
virtual ArcdpsExtension::MainTable< MaxColumnCount >::~MainTable ( )
virtualdefault

◆ MainTable() [2/3]

template<size_t MaxColumnCount = 64>
ArcdpsExtension::MainTable< MaxColumnCount >::MainTable ( const MainTable< MaxColumnCount > &  pOther)
delete

◆ MainTable() [3/3]

template<size_t MaxColumnCount = 64>
ArcdpsExtension::MainTable< MaxColumnCount >::MainTable ( MainTable< MaxColumnCount > &&  pOther)
deletenoexcept

Member Function Documentation

◆ AlignedTextColumn() [1/3]

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::AlignedTextColumn ( const char *  text)
protected

Print text aligned to the current column. Use so text is aligned within the table. Alternatively use ImGui::Text() directly.

◆ AlignedTextColumn() [2/3]

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::AlignedTextColumn ( const std::string &  text)
protected

◆ AlignedTextColumn() [3/3]

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
template<typename... Args>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::AlignedTextColumn ( std::string_view  format,
Args &&...  args 
)
protected

◆ ApplySpecificColumnSetup()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::ApplySpecificColumnSetup ( )
protected

◆ Begin()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
bool ArcdpsExtension::MainTable< MaxColumnCount >::Begin ( const char *  str_id,
int  columns_count,
ImGuiTableFlags  flags,
const ImVec2 &  outer_size,
float  inner_width,
ImGuiWindowFlags  child_window_flags 
)
protected

◆ ColumnHeader()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::ColumnHeader ( const char *  label,
bool  show_label,
ImTextureID  texture,
Alignment  alignment,
const char *  popupText 
)
protected

◆ Draw()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::Draw ( )

HEADER

SORTING

CONTENT

◆ DrawColumnSetupMenu()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::DrawColumnSetupMenu ( )

◆ DrawColumnSetupSubMenu()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::DrawColumnSetupSubMenu ( )
protectedvirtual

◆ DrawRows()

template<size_t MaxColumnCount = 64>
virtual void ArcdpsExtension::MainTable< MaxColumnCount >::DrawRows ( TableColumnIdx  pFirstColumnIndex)
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ DrawStyleSubMenu()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::DrawStyleSubMenu ( )
protectedvirtual

◆ End()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::End ( )
protected

◆ EndMaxHeightRow()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::EndMaxHeightRow ( )
protected

Call this at the end of each Row. This is used to calculate max-heights. Only call it on rows, you want to add to the max displayed amount. (e.g. killproof.me plugin doesn't add linked account rows)

◆ getAlignment()

template<size_t MaxColumnCount = 64>
virtual Alignment & ArcdpsExtension::MainTable< MaxColumnCount >::getAlignment ( )
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ getCategoryName()

template<size_t MaxColumnCount = 64>
virtual const char * ArcdpsExtension::MainTable< MaxColumnCount >::getCategoryName ( const std::string &  pCat)
protectedpure virtual

Get the name of each column category. Categories are defined in MainTableColumn.

Implemented in ArcdpsExtension::DemoTable.

◆ GetCellBgRect()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
ImRect ArcdpsExtension::MainTable< MaxColumnCount >::GetCellBgRect ( int  column_n)
protected

◆ GetColumnIndex()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
int ArcdpsExtension::MainTable< MaxColumnCount >::GetColumnIndex ( )
protected

◆ GetColumnName()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
const char * ArcdpsExtension::MainTable< MaxColumnCount >::GetColumnName ( int  column_n)
protected

◆ getCustomColumnsActive()

template<size_t MaxColumnCount = 64>
virtual bool & ArcdpsExtension::MainTable< MaxColumnCount >::getCustomColumnsActive ( )
inlineprotectedvirtual

◆ getCustomColumnsFeatureActive()

template<size_t MaxColumnCount = 64>
virtual bool ArcdpsExtension::MainTable< MaxColumnCount >::getCustomColumnsFeatureActive ( )
inlineprotectedvirtual

Set this to true if you want to use the feature "custom columns". Set a custom column setup with SetSpecificColumnSetup. If you want to go back to normal columns call ResetSpecificColumnSetup. While custom columns are active the settings saving is disabled.

◆ getCustomColumnsFirstColumn()

template<size_t MaxColumnCount = 64>
virtual int ArcdpsExtension::MainTable< MaxColumnCount >::getCustomColumnsFirstColumn ( )
inlineprotectedvirtual

◆ getHeaderAlignment()

template<size_t MaxColumnCount = 64>
virtual Alignment & ArcdpsExtension::MainTable< MaxColumnCount >::getHeaderAlignment ( )
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ getHighlightHoveredRows()

template<size_t MaxColumnCount = 64>
virtual bool & ArcdpsExtension::MainTable< MaxColumnCount >::getHighlightHoveredRows ( )
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ GetMaxColumnCount()

template<size_t MaxColumnCount = 64>
static size_t ArcdpsExtension::MainTable< MaxColumnCount >::GetMaxColumnCount ( )
inlinestatic

◆ getMaxDisplayed()

template<size_t MaxColumnCount = 64>
virtual int & ArcdpsExtension::MainTable< MaxColumnCount >::getMaxDisplayed ( )
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ getMaxHeightActive()

template<size_t MaxColumnCount = 64>
virtual bool ArcdpsExtension::MainTable< MaxColumnCount >::getMaxHeightActive ( )
inlineprotectedvirtual

◆ getShowAlternatingBackground()

template<size_t MaxColumnCount = 64>
virtual bool & ArcdpsExtension::MainTable< MaxColumnCount >::getShowAlternatingBackground ( )
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ getShowHeaderAsText()

template<size_t MaxColumnCount = 64>
virtual bool & ArcdpsExtension::MainTable< MaxColumnCount >::getShowHeaderAsText ( )
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ getShowScrollbar()

template<size_t MaxColumnCount = 64>
virtual bool ArcdpsExtension::MainTable< MaxColumnCount >::getShowScrollbar ( )
inlineprotectedvirtual

◆ GetSortSpecs()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
ImGuiTableSortSpecs * ArcdpsExtension::MainTable< MaxColumnCount >::GetSortSpecs ( )
protected

◆ GetSpecificColumnsActive()

template<size_t MaxColumnCount = 64>
bool ArcdpsExtension::MainTable< MaxColumnCount >::GetSpecificColumnsActive ( ) const
inline

◆ getTableId()

template<size_t MaxColumnCount = 64>
virtual std::string ArcdpsExtension::MainTable< MaxColumnCount >::getTableId ( )
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ getTableSettings()

template<size_t MaxColumnCount = 64>
virtual TableSettings & ArcdpsExtension::MainTable< MaxColumnCount >::getTableSettings ( )
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ IsCurrentColumnHovered()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
bool ArcdpsExtension::MainTable< MaxColumnCount >::IsCurrentColumnHovered ( )
protected

Check if the current table column is hovered.

◆ IsCurrentRowHovered()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
bool ArcdpsExtension::MainTable< MaxColumnCount >::IsCurrentRowHovered ( )
protected

Check if the current table row is hovered.

◆ MenuItemColumnVisibility()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::MenuItemColumnVisibility ( int  TableColumnIdx)
protected

◆ MigrateSettings()

template<size_t MaxColumnCount = 64>
virtual void ArcdpsExtension::MainTable< MaxColumnCount >::MigrateSettings ( )
inlineprotectedvirtual

Called when the migration of this TableSetting should be done.

Also migrate the settings when you ADD new columns, else they have the absolute default values (which will show them)

◆ NextColumn()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
bool ArcdpsExtension::MainTable< MaxColumnCount >::NextColumn ( )
protected

Set the next column, will call ImGui::TableNextColumn

◆ NextRow()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::NextRow ( ImGuiTableRowFlags  row_flags = 0,
float  min_row_height = 0.0f 
)
protected

Set the next Row, will call ImGui::TableNextRow

◆ operator=() [1/2]

template<size_t MaxColumnCount = 64>
MainTable & ArcdpsExtension::MainTable< MaxColumnCount >::operator= ( const MainTable< MaxColumnCount > &  pOther)
delete

◆ operator=() [2/2]

template<size_t MaxColumnCount = 64>
MainTable & ArcdpsExtension::MainTable< MaxColumnCount >::operator= ( MainTable< MaxColumnCount > &&  pOther)
deletenoexcept

◆ RequestSort()

template<size_t MaxColumnCount = 64>
void ArcdpsExtension::MainTable< MaxColumnCount >::RequestSort ( )
inline

◆ ResetSpecificColumnSetup()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::ResetSpecificColumnSetup ( )

◆ SetSpecificColumnSetup()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::SetSpecificColumnSetup ( const std::vector< size_t > &  pNewColumns)

◆ SetupColumn()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::SetupColumn ( const char *  label,
ImGuiTableColumnFlags  flags,
float  init_width_or_weight,
ImGuiID  user_id 
)
protected

◆ SetupScrollFreeze()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
void ArcdpsExtension::MainTable< MaxColumnCount >::SetupScrollFreeze ( int  columns,
int  rows 
)
protected

◆ Sort()

template<size_t MaxColumnCount = 64>
virtual void ArcdpsExtension::MainTable< MaxColumnCount >::Sort ( const ImGuiTableColumnSortSpecs *  mColumnSortSpecs)
protectedpure virtual

Implemented in ArcdpsExtension::DemoTable.

◆ SpinnerAligned()

template<size_t MaxColumnCount>
requires SmallerThanMaxColumnAmount<MaxColumnCount>
bool ArcdpsExtension::MainTable< MaxColumnCount >::SpinnerAligned ( const char *  label,
float  radius,
float  thickness,
const ImU32 &  color 
)
protected

Aligned Spinner

Member Data Documentation

◆ mTable

template<size_t MaxColumnCount = 64>
Table ArcdpsExtension::MainTable< MaxColumnCount >::mTable
protected

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