Added utility functions for creating string/value data table columns.
This commit is contained in:
parent
41258cda5b
commit
b38fa1b68b
@ -114,7 +114,7 @@ inline void DataTable(const char* strId, const DataTableOptions<TObject>& option
|
||||
sortSpecs->SpecsDirty = false;
|
||||
|
||||
const ImGuiTableColumnSortSpecs& specs = *sortSpecs->Specs;
|
||||
state.dirty |= (specs.ColumnIndex != state.sortColumn);
|
||||
state.dirty |= (specs.ColumnIndex != static_cast<ImS16>(state.sortColumn));
|
||||
state.sortColumn = specs.ColumnIndex;
|
||||
state.sortDescending = specs.SortDirection == ImGuiSortDirection_Descending;
|
||||
}
|
||||
@ -154,6 +154,36 @@ inline void DataTable(const char* strId, const DataTableOptions<TObject>& option
|
||||
|
||||
ImGui::EndTable();
|
||||
}
|
||||
|
||||
template<typename TObject>
|
||||
inline DataTableColumn<TObject> MakeStringColumn(const char* header, const char* TObject::* member)
|
||||
{
|
||||
return {
|
||||
.header = header,
|
||||
.renderer = [member](const auto& args) { ImGui::TextUnformatted(args.object.*member); },
|
||||
.comparator = [member](const TObject& left, const TObject& right) { return std::string_view(left.*member) < std::string_view(right.*member); }
|
||||
};
|
||||
}
|
||||
|
||||
template<typename TObject>
|
||||
inline DataTableColumn<TObject> MakeStringColumn(const char* header, std::string TObject::* member)
|
||||
{
|
||||
return {
|
||||
.header = header,
|
||||
.renderer = [member](const auto& args) { ImGui::TextUnformatted((args.object.*member).c_str()); },
|
||||
.comparator = [member](const TObject& left, const TObject& right) { return left.*member < right.*member; }
|
||||
};
|
||||
}
|
||||
|
||||
template<typename TObject, typename TMember>
|
||||
inline DataTableColumn<TObject> MakeColumn(const char* header, const char* fmt, TMember TObject::* member)
|
||||
{
|
||||
return {
|
||||
.header = header,
|
||||
.renderer = [fmt, member](const auto& args) { ImGui::Text(fmt, args.object.*member); },
|
||||
.comparator = [member](const TObject& left, const TObject& right) { return left.*member < right.*member; }
|
||||
};
|
||||
}
|
||||
} // namespace ImRaid
|
||||
|
||||
#endif // !defined(RAID_PUBLIC_RAID_IMRAID_HPP_INCLUDED)
|
||||
|
Loading…
x
Reference in New Issue
Block a user