mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-25 21:17:01 +00:00
Tables: Made demo options consistently compact, replaced constants with font-based sizes, added comments on memory allocations.
This commit is contained in:
parent
02b27b75a4
commit
77e561aaf3
171
imgui_demo.cpp
171
imgui_demo.cpp
@ -3287,12 +3287,29 @@ struct MyItem
|
|||||||
const ImGuiTableSortSpecs* MyItem::s_current_sort_specs = NULL;
|
const ImGuiTableSortSpecs* MyItem::s_current_sort_specs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make the UI compact because there are so many fields
|
||||||
|
static void PushStyleCompact()
|
||||||
|
{
|
||||||
|
ImGuiStyle& style = ImGui::GetStyle();
|
||||||
|
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(style.FramePadding.x, (float)(int)(style.FramePadding.y * 0.70f)));
|
||||||
|
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(style.ItemSpacing.x, (float)(int)(style.ItemSpacing.y * 0.70f)));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void PopStyleCompact()
|
||||||
|
{
|
||||||
|
ImGui::PopStyleVar(2);
|
||||||
|
}
|
||||||
|
|
||||||
static void ShowDemoWindowTables()
|
static void ShowDemoWindowTables()
|
||||||
{
|
{
|
||||||
//ImGui::SetNextItemOpen(true, ImGuiCond_Once);
|
//ImGui::SetNextItemOpen(true, ImGuiCond_Once);
|
||||||
if (!ImGui::CollapsingHeader("Tables & Columns"))
|
if (!ImGui::CollapsingHeader("Tables & Columns"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Using those as a base value to create width/height that are factor of the size of our font
|
||||||
|
const float TEXT_BASE_WIDTH = ImGui::CalcTextSize("A").x;
|
||||||
|
const float TEXT_BASE_HEIGHT = ImGui::GetTextLineHeightWithSpacing();
|
||||||
|
|
||||||
ImGui::PushID("Tables");
|
ImGui::PushID("Tables");
|
||||||
|
|
||||||
int open_action = -1;
|
int open_action = -1;
|
||||||
@ -3327,7 +3344,7 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::SetNextItemOpen(open_action != 0);
|
ImGui::SetNextItemOpen(open_action != 0);
|
||||||
if (ImGui::TreeNode("Basic"))
|
if (ImGui::TreeNode("Basic"))
|
||||||
{
|
{
|
||||||
// Here we will showcase 4 different ways to output a table. They are very simple variations of a same thing!
|
// Here we will showcase three different ways to output a table. They are very simple variations of a same thing!
|
||||||
|
|
||||||
// Basic use of tables using TableNextRow() to create a new row, and TableSetColumnIndex() to select the column.
|
// Basic use of tables using TableNextRow() to create a new row, and TableSetColumnIndex() to select the column.
|
||||||
// In many situations, this is the most flexible and easy to use pattern.
|
// In many situations, this is the most flexible and easy to use pattern.
|
||||||
@ -3366,7 +3383,9 @@ static void ShowDemoWindowTables()
|
|||||||
|
|
||||||
// Another subtle variant, we call TableNextColumn() _before_ each cell. At the end of a row, TableNextColumn() will create a new row.
|
// Another subtle variant, we call TableNextColumn() _before_ each cell. At the end of a row, TableNextColumn() will create a new row.
|
||||||
// Note that we never TableNextRow() here!
|
// Note that we never TableNextRow() here!
|
||||||
HelpMarker("Only using TableNextColumn(), which tends to be convenient for tables where every cells contains the same type of contents.\nThis is also more similar to the old NextColumn() function of the Columns API, and provided to facilitate the Columns->Tables API transition.");
|
HelpMarker(
|
||||||
|
"Only using TableNextColumn(), which tends to be convenient for tables where every cells contains the same type of contents.\n"
|
||||||
|
"This is also more similar to the old NextColumn() function of the Columns API, and provided to facilitate the Columns->Tables API transition.");
|
||||||
if (ImGui::BeginTable("##table4", 3))
|
if (ImGui::BeginTable("##table4", 3))
|
||||||
{
|
{
|
||||||
for (int item = 0; item < 14; item++)
|
for (int item = 0; item < 14; item++)
|
||||||
@ -3391,6 +3410,7 @@ static void ShowDemoWindowTables()
|
|||||||
static bool display_width = false;
|
static bool display_width = false;
|
||||||
static int contents_type = CT_Text;
|
static int contents_type = CT_Text;
|
||||||
|
|
||||||
|
PushStyleCompact();
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_RowBg", (unsigned int*)&flags, ImGuiTableFlags_RowBg);
|
ImGui::CheckboxFlags("ImGuiTableFlags_RowBg", (unsigned int*)&flags, ImGuiTableFlags_RowBg);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Borders", (unsigned int*)&flags, ImGuiTableFlags_Borders);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Borders", (unsigned int*)&flags, ImGuiTableFlags_Borders);
|
||||||
ImGui::SameLine(); HelpMarker("ImGuiTableFlags_Borders\n = ImGuiTableFlags_BordersInnerV\n | ImGuiTableFlags_BordersOuterV\n | ImGuiTableFlags_BordersInnerV\n | ImGuiTableFlags_BordersOuterH");
|
ImGui::SameLine(); HelpMarker("ImGuiTableFlags_Borders\n = ImGuiTableFlags_BordersInnerV\n | ImGuiTableFlags_BordersOuterV\n | ImGuiTableFlags_BordersInnerV\n | ImGuiTableFlags_BordersOuterH");
|
||||||
@ -3419,6 +3439,7 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::SameLine(); ImGui::RadioButton("FillButton", &contents_type, CT_FillButton);
|
ImGui::SameLine(); ImGui::RadioButton("FillButton", &contents_type, CT_FillButton);
|
||||||
ImGui::Checkbox("Display headers", &display_headers);
|
ImGui::Checkbox("Display headers", &display_headers);
|
||||||
ImGui::Checkbox("Display debug width", &display_width);
|
ImGui::Checkbox("Display debug width", &display_width);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
if (ImGui::BeginTable("##table1", 3, flags))
|
if (ImGui::BeginTable("##table1", 3, flags))
|
||||||
{
|
{
|
||||||
@ -3477,9 +3498,11 @@ static void ShowDemoWindowTables()
|
|||||||
// By default, if we don't enable ScrollX the sizing policy for each columns is "Stretch"
|
// By default, if we don't enable ScrollX the sizing policy for each columns is "Stretch"
|
||||||
// Each columns maintain a sizing weight, and they will occupy all available width.
|
// Each columns maintain a sizing weight, and they will occupy all available width.
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV;
|
static ImGuiTableFlags flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV;
|
||||||
|
PushStyleCompact();
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersV", (unsigned int*)&flags, ImGuiTableFlags_BordersV);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersV", (unsigned int*)&flags, ImGuiTableFlags_BordersV);
|
||||||
ImGui::SameLine(); HelpMarker("Using the _Resizable flag automatically enables the _BordersV flag as well.");
|
ImGui::SameLine(); HelpMarker("Using the _Resizable flag automatically enables the _BordersV flag as well.");
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
if (ImGui::BeginTable("##table1", 3, flags))
|
if (ImGui::BeginTable("##table1", 3, flags))
|
||||||
{
|
{
|
||||||
@ -3530,9 +3553,8 @@ static void ShowDemoWindowTables()
|
|||||||
{
|
{
|
||||||
HelpMarker("Using columns flag to alter resizing policy on a per-column basis.");
|
HelpMarker("Using columns flag to alter resizing policy on a per-column basis.");
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_SizingPolicyFixedX | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable;
|
static ImGuiTableFlags flags = ImGuiTableFlags_SizingPolicyFixedX | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable;
|
||||||
//ImGui::CheckboxFlags("ImGuiTableFlags_ScrollX", (unsigned int*)&flags, ImGuiTableFlags_ScrollX); // FIXME-TABLE: Explain or fix the effect of enable Scroll on outer_size
|
|
||||||
|
|
||||||
if (ImGui::BeginTable("##table1", 3, flags, ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 6)))
|
if (ImGui::BeginTable("##table1", 3, flags))
|
||||||
{
|
{
|
||||||
ImGui::TableSetupColumn("AAA", ImGuiTableColumnFlags_WidthFixed);// | ImGuiTableColumnFlags_NoResize);
|
ImGui::TableSetupColumn("AAA", ImGuiTableColumnFlags_WidthFixed);// | ImGuiTableColumnFlags_NoResize);
|
||||||
ImGui::TableSetupColumn("BBB", ImGuiTableColumnFlags_WidthFixed);
|
ImGui::TableSetupColumn("BBB", ImGuiTableColumnFlags_WidthFixed);
|
||||||
@ -3549,7 +3571,7 @@ static void ShowDemoWindowTables()
|
|||||||
}
|
}
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTable("##table2", 6, flags, ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 6)))
|
if (ImGui::BeginTable("##table2", 6, flags))
|
||||||
{
|
{
|
||||||
ImGui::TableSetupColumn("AAA", ImGuiTableColumnFlags_WidthFixed);
|
ImGui::TableSetupColumn("AAA", ImGuiTableColumnFlags_WidthFixed);
|
||||||
ImGui::TableSetupColumn("BBB", ImGuiTableColumnFlags_WidthFixed);
|
ImGui::TableSetupColumn("BBB", ImGuiTableColumnFlags_WidthFixed);
|
||||||
@ -3578,11 +3600,13 @@ static void ShowDemoWindowTables()
|
|||||||
{
|
{
|
||||||
HelpMarker("Click and drag column headers to reorder columns.\n\nYou can also right-click on a header to open a context menu.");
|
HelpMarker("Click and drag column headers to reorder columns.\n\nYou can also right-click on a header to open a context menu.");
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_NoBordersInBody;
|
static ImGuiTableFlags flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_NoBordersInBody;
|
||||||
|
PushStyleCompact();
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Reorderable", (unsigned int*)&flags, ImGuiTableFlags_Reorderable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Reorderable", (unsigned int*)&flags, ImGuiTableFlags_Reorderable);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Hideable", (unsigned int*)&flags, ImGuiTableFlags_Hideable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Hideable", (unsigned int*)&flags, ImGuiTableFlags_Hideable);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_NoBordersInBody", (unsigned int*)&flags, ImGuiTableFlags_NoBordersInBody);
|
ImGui::CheckboxFlags("ImGuiTableFlags_NoBordersInBody", (unsigned int*)&flags, ImGuiTableFlags_NoBordersInBody);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_NoBordersInBodyUntilResize", (unsigned int*)&flags, ImGuiTableFlags_NoBordersInBodyUntilResize);
|
ImGui::CheckboxFlags("ImGuiTableFlags_NoBordersInBodyUntilResize", (unsigned int*)&flags, ImGuiTableFlags_NoBordersInBodyUntilResize);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
if (ImGui::BeginTable("##table1", 3, flags))
|
if (ImGui::BeginTable("##table1", 3, flags))
|
||||||
{
|
{
|
||||||
@ -3629,13 +3653,16 @@ static void ShowDemoWindowTables()
|
|||||||
if (ImGui::TreeNode("Explicit widths"))
|
if (ImGui::TreeNode("Explicit widths"))
|
||||||
{
|
{
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_None;
|
static ImGuiTableFlags flags = ImGuiTableFlags_None;
|
||||||
|
PushStyleCompact();
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_NoKeepColumnsVisible", (unsigned int*)&flags, ImGuiTableFlags_NoKeepColumnsVisible);
|
ImGui::CheckboxFlags("ImGuiTableFlags_NoKeepColumnsVisible", (unsigned int*)&flags, ImGuiTableFlags_NoKeepColumnsVisible);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
if (ImGui::BeginTable("##table1", 3, flags))
|
if (ImGui::BeginTable("##table1", 3, flags))
|
||||||
{
|
{
|
||||||
// We could also set ImGuiTableFlags_SizingPolicyFixedX on the table and all columns will default to ImGuiTableColumnFlags_WidthFixed.
|
// We could also set ImGuiTableFlags_SizingPolicyFixedX on the table and all columns will default to ImGuiTableColumnFlags_WidthFixed.
|
||||||
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 100.0f);
|
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDTH * 15.0f);
|
||||||
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 200.0f);
|
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDTH * 30.0f);
|
||||||
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 100.0f);
|
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDTH * 15.0f);
|
||||||
for (int row = 0; row < 5; row++)
|
for (int row = 0; row < 5; row++)
|
||||||
{
|
{
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
@ -3655,10 +3682,15 @@ static void ShowDemoWindowTables()
|
|||||||
if (ImGui::TreeNode("Vertical scrolling, with clipping"))
|
if (ImGui::TreeNode("Vertical scrolling, with clipping"))
|
||||||
{
|
{
|
||||||
HelpMarker("Here we activate ScrollY, which will create a child window container to allow hosting scrollable contents.\n\nWe also demonstrate using ImGuiListClipper to virtualize the submission of many items.");
|
HelpMarker("Here we activate ScrollY, which will create a child window container to allow hosting scrollable contents.\n\nWe also demonstrate using ImGuiListClipper to virtualize the submission of many items.");
|
||||||
ImVec2 size = ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 7);
|
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_ScrollY | ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable;
|
static ImGuiTableFlags flags = ImGuiTableFlags_ScrollY | ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable;
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_ScrollY", (unsigned int*)&flags, ImGuiTableFlags_ScrollY);
|
|
||||||
|
|
||||||
|
PushStyleCompact();
|
||||||
|
ImGui::CheckboxFlags("ImGuiTableFlags_ScrollY", (unsigned int*)&flags, ImGuiTableFlags_ScrollY);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
|
// When using ScrollX or ScrollY we need to specify a size for our table container!
|
||||||
|
// Otherwise by default the table will fit all available space, like a BeginChild() call.
|
||||||
|
ImVec2 size = ImVec2(0, TEXT_BASE_HEIGHT * 8);
|
||||||
if (ImGui::BeginTable("##table1", 3, flags, size))
|
if (ImGui::BeginTable("##table1", 3, flags, size))
|
||||||
{
|
{
|
||||||
ImGui::TableSetupScrollFreeze(0, 1); // Make top row always visible
|
ImGui::TableSetupScrollFreeze(0, 1); // Make top row always visible
|
||||||
@ -3690,16 +3722,21 @@ static void ShowDemoWindowTables()
|
|||||||
if (ImGui::TreeNode("Horizontal scrolling"))
|
if (ImGui::TreeNode("Horizontal scrolling"))
|
||||||
{
|
{
|
||||||
HelpMarker("When ScrollX is enabled, the default sizing policy becomes ImGuiTableFlags_SizingPolicyFixedX, as automatically stretching columns doesn't make much sense with horizontal scrolling.\n\nAlso note that as of the current version, you will almost always want to enable ScrollY along with ScrollX, because the container window won't automatically extend vertically to fix contents (this may be improved in future versions).");
|
HelpMarker("When ScrollX is enabled, the default sizing policy becomes ImGuiTableFlags_SizingPolicyFixedX, as automatically stretching columns doesn't make much sense with horizontal scrolling.\n\nAlso note that as of the current version, you will almost always want to enable ScrollY along with ScrollX, because the container window won't automatically extend vertically to fix contents (this may be improved in future versions).");
|
||||||
ImVec2 size = ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 10);
|
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable;
|
static ImGuiTableFlags flags = ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable;
|
||||||
static int freeze_cols = 1;
|
static int freeze_cols = 1;
|
||||||
static int freeze_rows = 1;
|
static int freeze_rows = 1;
|
||||||
|
|
||||||
|
PushStyleCompact();
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_ScrollY", (unsigned int*)&flags, ImGuiTableFlags_ScrollY);
|
ImGui::CheckboxFlags("ImGuiTableFlags_ScrollY", (unsigned int*)&flags, ImGuiTableFlags_ScrollY);
|
||||||
ImGui::SetNextItemWidth(ImGui::GetFrameHeight());
|
ImGui::SetNextItemWidth(ImGui::GetFrameHeight());
|
||||||
ImGui::DragInt("freeze_cols", &freeze_cols, 0.2f, 0, 9, NULL, ImGuiSliderFlags_NoInput);
|
ImGui::DragInt("freeze_cols", &freeze_cols, 0.2f, 0, 9, NULL, ImGuiSliderFlags_NoInput);
|
||||||
ImGui::SetNextItemWidth(ImGui::GetFrameHeight());
|
ImGui::SetNextItemWidth(ImGui::GetFrameHeight());
|
||||||
ImGui::DragInt("freeze_rows", &freeze_rows, 0.2f, 0, 9, NULL, ImGuiSliderFlags_NoInput);
|
ImGui::DragInt("freeze_rows", &freeze_rows, 0.2f, 0, 9, NULL, ImGuiSliderFlags_NoInput);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
|
// When using ScrollX or ScrollY we need to specify a size for our table container!
|
||||||
|
// Otherwise by default the table will fit all available space, like a BeginChild() call.
|
||||||
|
ImVec2 size = ImVec2(0, TEXT_BASE_HEIGHT * 8);
|
||||||
if (ImGui::BeginTable("##table1", 7, flags, size))
|
if (ImGui::BeginTable("##table1", 7, flags, size))
|
||||||
{
|
{
|
||||||
ImGui::TableSetupScrollFreeze(freeze_cols, freeze_rows);
|
ImGui::TableSetupScrollFreeze(freeze_cols, freeze_rows);
|
||||||
@ -3741,13 +3778,10 @@ static void ShowDemoWindowTables()
|
|||||||
|
|
||||||
if (ImGui::BeginTable("##flags", column_count, ImGuiTableFlags_None))
|
if (ImGui::BeginTable("##flags", column_count, ImGuiTableFlags_None))
|
||||||
{
|
{
|
||||||
|
PushStyleCompact();
|
||||||
for (int column = 0; column < column_count; column++)
|
for (int column = 0; column < column_count; column++)
|
||||||
{
|
{
|
||||||
// Make the UI compact because there are so many fields
|
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGuiStyle& style = ImGui::GetStyle();
|
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(style.FramePadding.x, 2));
|
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(style.ItemSpacing.x, 2));
|
|
||||||
ImGui::PushID(column);
|
ImGui::PushID(column);
|
||||||
ImGui::AlignTextToFramePadding(); // FIXME-TABLE: Workaround for wrong text baseline propagation
|
ImGui::AlignTextToFramePadding(); // FIXME-TABLE: Workaround for wrong text baseline propagation
|
||||||
ImGui::Text("Flags for '%s'", column_names[column]);
|
ImGui::Text("Flags for '%s'", column_names[column]);
|
||||||
@ -3765,8 +3799,8 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::CheckboxFlags("_IndentEnable", (unsigned int*)&column_flags[column], ImGuiTableColumnFlags_IndentEnable); ImGui::SameLine(); HelpMarker("Default for column 0");
|
ImGui::CheckboxFlags("_IndentEnable", (unsigned int*)&column_flags[column], ImGuiTableColumnFlags_IndentEnable); ImGui::SameLine(); HelpMarker("Default for column 0");
|
||||||
ImGui::CheckboxFlags("_IndentDisable", (unsigned int*)&column_flags[column], ImGuiTableColumnFlags_IndentDisable); ImGui::SameLine(); HelpMarker("Default for column >0");
|
ImGui::CheckboxFlags("_IndentDisable", (unsigned int*)&column_flags[column], ImGuiTableColumnFlags_IndentDisable); ImGui::SameLine(); HelpMarker("Default for column >0");
|
||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
ImGui::PopStyleVar(2);
|
|
||||||
}
|
}
|
||||||
|
PopStyleCompact();
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3777,9 +3811,10 @@ static void ShowDemoWindowTables()
|
|||||||
for (int column = 0; column < column_count; column++)
|
for (int column = 0; column < column_count; column++)
|
||||||
ImGui::TableSetupColumn(column_names[column], column_flags[column]);
|
ImGui::TableSetupColumn(column_names[column], column_flags[column]);
|
||||||
ImGui::TableHeadersRow();
|
ImGui::TableHeadersRow();
|
||||||
|
float indent_step = (float)((int)TEXT_BASE_WIDTH / 2);
|
||||||
for (int row = 0; row < 8; row++)
|
for (int row = 0; row < 8; row++)
|
||||||
{
|
{
|
||||||
ImGui::Indent(2.0f); // Add some indentation to demonstrate usage of per-column IndentEnable/IndentDisable flags.
|
ImGui::Indent(indent_step); // Add some indentation to demonstrate usage of per-column IndentEnable/IndentDisable flags.
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
for (int column = 0; column < column_count; column++)
|
for (int column = 0; column < column_count; column++)
|
||||||
{
|
{
|
||||||
@ -3787,7 +3822,7 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::Text("%s %s", (column == 0) ? "Indented" : "Hello", ImGui::TableGetColumnName(column));
|
ImGui::Text("%s %s", (column == 0) ? "Indented" : "Hello", ImGui::TableGetColumnName(column));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ImGui::Unindent(2.0f * 8.0f);
|
ImGui::Unindent(indent_step * 8.0f);
|
||||||
|
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
@ -3809,7 +3844,7 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("A0 Cell 0");
|
ImGui::Text("A0 Cell 0");
|
||||||
{
|
{
|
||||||
float rows_height = ImGui::GetTextLineHeightWithSpacing() * 2;
|
float rows_height = TEXT_BASE_HEIGHT * 2;
|
||||||
if (ImGui::BeginTable("recurse2", 2, ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable))
|
if (ImGui::BeginTable("recurse2", 2, ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable))
|
||||||
{
|
{
|
||||||
ImGui::TableSetupColumn("B0");
|
ImGui::TableSetupColumn("B0");
|
||||||
@ -3844,11 +3879,12 @@ static void ShowDemoWindowTables()
|
|||||||
{
|
{
|
||||||
HelpMarker("This section allows you to interact and see the effect of StretchX vs FixedX sizing policies depending on whether Scroll is enabled and the contents of your columns.");
|
HelpMarker("This section allows you to interact and see the effect of StretchX vs FixedX sizing policies depending on whether Scroll is enabled and the contents of your columns.");
|
||||||
enum ContentsType { CT_ShortText, CT_LongText, CT_Button, CT_FillButton, CT_InputText };
|
enum ContentsType { CT_ShortText, CT_LongText, CT_Button, CT_FillButton, CT_InputText };
|
||||||
static int contents_type = CT_FillButton;
|
|
||||||
ImGui::SetNextItemWidth(ImGui::GetFontSize() * 12);
|
|
||||||
ImGui::Combo("Contents", &contents_type, "Short Text\0Long Text\0Button\0Fill Button\0InputText\0");
|
|
||||||
|
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_ScrollY | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_RowBg;
|
static ImGuiTableFlags flags = ImGuiTableFlags_ScrollY | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_RowBg;
|
||||||
|
static int contents_type = CT_FillButton;
|
||||||
|
|
||||||
|
PushStyleCompact();
|
||||||
|
ImGui::SetNextItemWidth(TEXT_BASE_WIDTH * 22);
|
||||||
|
ImGui::Combo("Contents", &contents_type, "Short Text\0Long Text\0Button\0Fill Button\0InputText\0");
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersInnerH", (unsigned int*)&flags, ImGuiTableFlags_BordersInnerH);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersInnerH", (unsigned int*)&flags, ImGuiTableFlags_BordersInnerH);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersOuterH", (unsigned int*)&flags, ImGuiTableFlags_BordersOuterH);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersOuterH", (unsigned int*)&flags, ImGuiTableFlags_BordersOuterH);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersInnerV", (unsigned int*)&flags, ImGuiTableFlags_BordersInnerV);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersInnerV", (unsigned int*)&flags, ImGuiTableFlags_BordersInnerV);
|
||||||
@ -3863,6 +3899,7 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::SameLine(); HelpMarker("Default if _ScrollX if enabled. Makes columns use _WidthFixed by default, or _WidthAlwaysAutoResize if _Resizable is not set.");
|
ImGui::SameLine(); HelpMarker("Default if _ScrollX if enabled. Makes columns use _WidthFixed by default, or _WidthAlwaysAutoResize if _Resizable is not set.");
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_NoClip", (unsigned int*)&flags, ImGuiTableFlags_NoClip);
|
ImGui::CheckboxFlags("ImGuiTableFlags_NoClip", (unsigned int*)&flags, ImGuiTableFlags_NoClip);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
if (ImGui::BeginTable("##3ways", 3, flags, ImVec2(0, 100)))
|
if (ImGui::BeginTable("##3ways", 3, flags, ImVec2(0, 100)))
|
||||||
{
|
{
|
||||||
@ -3896,16 +3933,17 @@ static void ShowDemoWindowTables()
|
|||||||
{
|
{
|
||||||
// FIXME-TABLE: Vertical border not overridden the same way as horizontal one
|
// FIXME-TABLE: Vertical border not overridden the same way as horizontal one
|
||||||
HelpMarker("Setting style.CellPadding to (0,0).");
|
HelpMarker("Setting style.CellPadding to (0,0).");
|
||||||
|
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg;
|
static ImGuiTableFlags flags = ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg;
|
||||||
|
static bool no_widget_frame = false;
|
||||||
|
|
||||||
|
PushStyleCompact();
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersOuter", (unsigned int*)&flags, ImGuiTableFlags_BordersOuter);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersOuter", (unsigned int*)&flags, ImGuiTableFlags_BordersOuter);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersH", (unsigned int*)&flags, ImGuiTableFlags_BordersH);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersH", (unsigned int*)&flags, ImGuiTableFlags_BordersH);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersV", (unsigned int*)&flags, ImGuiTableFlags_BordersV);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersV", (unsigned int*)&flags, ImGuiTableFlags_BordersV);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_RowBg", (unsigned int*)&flags, ImGuiTableFlags_RowBg);
|
ImGui::CheckboxFlags("ImGuiTableFlags_RowBg", (unsigned int*)&flags, ImGuiTableFlags_RowBg);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
||||||
|
|
||||||
static bool no_widget_frame = false;
|
|
||||||
ImGui::Checkbox("no_widget_frame", &no_widget_frame);
|
ImGui::Checkbox("no_widget_frame", &no_widget_frame);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, ImVec2(0, 0));
|
ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, ImVec2(0, 0));
|
||||||
if (ImGui::BeginTable("##3ways", 3, flags))
|
if (ImGui::BeginTable("##3ways", 3, flags))
|
||||||
@ -3942,7 +3980,7 @@ static void ShowDemoWindowTables()
|
|||||||
{
|
{
|
||||||
for (int row = 0; row < 10; row++)
|
for (int row = 0; row < 10; row++)
|
||||||
{
|
{
|
||||||
float min_row_height = (float)(int)(ImGui::GetFontSize() * 0.30f * row);
|
float min_row_height = (float)(int)(TEXT_BASE_HEIGHT * 0.30f * row);
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, min_row_height);
|
ImGui::TableNextRow(ImGuiTableRowFlags_None, min_row_height);
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("min_row_height = %.2f", min_row_height);
|
ImGui::Text("min_row_height = %.2f", min_row_height);
|
||||||
@ -3957,19 +3995,21 @@ static void ShowDemoWindowTables()
|
|||||||
if (ImGui::TreeNode("Background color"))
|
if (ImGui::TreeNode("Background color"))
|
||||||
{
|
{
|
||||||
static ImGuiTableFlags table_flags = ImGuiTableFlags_RowBg;
|
static ImGuiTableFlags table_flags = ImGuiTableFlags_RowBg;
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Borders", (unsigned int*)&table_flags, ImGuiTableFlags_Borders);
|
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_RowBg", (unsigned int*)&table_flags, ImGuiTableFlags_RowBg);
|
|
||||||
ImGui::SameLine(); HelpMarker("ImGuiTableFlags_RowBg automatically sets RowBg0 to alternative colors pulled from the Style.");
|
|
||||||
|
|
||||||
static int row_bg_type = 1;
|
static int row_bg_type = 1;
|
||||||
static int row_bg_target = 1;
|
static int row_bg_target = 1;
|
||||||
static int cell_bg_type = 1;
|
static int cell_bg_type = 1;
|
||||||
|
|
||||||
|
PushStyleCompact();
|
||||||
|
ImGui::CheckboxFlags("ImGuiTableFlags_Borders", (unsigned int*)&table_flags, ImGuiTableFlags_Borders);
|
||||||
|
ImGui::CheckboxFlags("ImGuiTableFlags_RowBg", (unsigned int*)&table_flags, ImGuiTableFlags_RowBg);
|
||||||
|
ImGui::SameLine(); HelpMarker("ImGuiTableFlags_RowBg automatically sets RowBg0 to alternative colors pulled from the Style.");
|
||||||
ImGui::Combo("row bg type", (int*)&row_bg_type, "None\0Red\0Gradient\0");
|
ImGui::Combo("row bg type", (int*)&row_bg_type, "None\0Red\0Gradient\0");
|
||||||
ImGui::Combo("row bg target", (int*)&row_bg_target, "RowBg0\0RowBg1\0"); ImGui::SameLine(); HelpMarker("Target RowBg0 to override the alternating odd/even colors,\nTarget RowBg1 to blend with them.");
|
ImGui::Combo("row bg target", (int*)&row_bg_target, "RowBg0\0RowBg1\0"); ImGui::SameLine(); HelpMarker("Target RowBg0 to override the alternating odd/even colors,\nTarget RowBg1 to blend with them.");
|
||||||
ImGui::Combo("cell bg type", (int*)&cell_bg_type, "None\0Blue\0"); ImGui::SameLine(); HelpMarker("We are colorizing cells to B1->C2 here.");
|
ImGui::Combo("cell bg type", (int*)&cell_bg_type, "None\0Blue\0"); ImGui::SameLine(); HelpMarker("We are colorizing cells to B1->C2 here.");
|
||||||
IM_ASSERT(row_bg_type >= 0 && row_bg_type <= 2);
|
IM_ASSERT(row_bg_type >= 0 && row_bg_type <= 2);
|
||||||
IM_ASSERT(row_bg_target >= 0 && row_bg_target <= 1);
|
IM_ASSERT(row_bg_target >= 0 && row_bg_target <= 1);
|
||||||
IM_ASSERT(cell_bg_type >= 0 && cell_bg_type <= 1);
|
IM_ASSERT(cell_bg_type >= 0 && cell_bg_type <= 1);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
if (ImGui::BeginTable("##Table", 5, table_flags))
|
if (ImGui::BeginTable("##Table", 5, table_flags))
|
||||||
{
|
{
|
||||||
@ -4012,14 +4052,16 @@ static void ShowDemoWindowTables()
|
|||||||
if (ImGui::TreeNode("Tree view"))
|
if (ImGui::TreeNode("Tree view"))
|
||||||
{
|
{
|
||||||
static ImGuiTableFlags flags = ImGuiTableFlags_BordersV | ImGuiTableFlags_BordersOuterH | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg | ImGuiTableFlags_NoBordersInBody;
|
static ImGuiTableFlags flags = ImGuiTableFlags_BordersV | ImGuiTableFlags_BordersOuterH | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg | ImGuiTableFlags_NoBordersInBody;
|
||||||
|
//PushStyleCompact();
|
||||||
//ImGui::CheckboxFlags("ImGuiTableFlags_Scroll", (unsigned int*)&flags, ImGuiTableFlags_Scroll);
|
//ImGui::CheckboxFlags("ImGuiTableFlags_Scroll", (unsigned int*)&flags, ImGuiTableFlags_Scroll);
|
||||||
|
//PopStyleCompact();
|
||||||
|
|
||||||
if (ImGui::BeginTable("##3ways", 3, flags))
|
if (ImGui::BeginTable("##3ways", 3, flags))
|
||||||
{
|
{
|
||||||
// The first column will use the default _WidthStretch when ScrollX is Off and _WidthFixed when ScrollX is On
|
// The first column will use the default _WidthStretch when ScrollX is Off and _WidthFixed when ScrollX is On
|
||||||
ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_NoHide);
|
ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_NoHide);
|
||||||
ImGui::TableSetupColumn("Size", ImGuiTableColumnFlags_WidthFixed, ImGui::GetFontSize() * 6);
|
ImGui::TableSetupColumn("Size", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDTH * 12.0f);
|
||||||
ImGui::TableSetupColumn("Type", ImGuiTableColumnFlags_WidthFixed, ImGui::GetFontSize() * 10);
|
ImGui::TableSetupColumn("Type", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDTH * 18.0f);
|
||||||
ImGui::TableHeadersRow();
|
ImGui::TableHeadersRow();
|
||||||
|
|
||||||
// Simple storage to output a dummy file-system.
|
// Simple storage to output a dummy file-system.
|
||||||
@ -4133,7 +4175,10 @@ static void ShowDemoWindowTables()
|
|||||||
{
|
{
|
||||||
HelpMarker("By default, right-clicking over a TableHeadersRow()/TableHeader() line will open the default context-menu.\nUsing ImGuiTableFlags_ContextMenuInBody we also allow right-clicking over columns body.");
|
HelpMarker("By default, right-clicking over a TableHeadersRow()/TableHeader() line will open the default context-menu.\nUsing ImGuiTableFlags_ContextMenuInBody we also allow right-clicking over columns body.");
|
||||||
static ImGuiTableFlags flags1 = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Borders | ImGuiTableFlags_ContextMenuInBody;
|
static ImGuiTableFlags flags1 = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Borders | ImGuiTableFlags_ContextMenuInBody;
|
||||||
|
|
||||||
|
PushStyleCompact();
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_ContextMenuInBody", (unsigned int*)&flags1, ImGuiTableFlags_ContextMenuInBody);
|
ImGui::CheckboxFlags("ImGuiTableFlags_ContextMenuInBody", (unsigned int*)&flags1, ImGuiTableFlags_ContextMenuInBody);
|
||||||
|
PopStyleCompact();
|
||||||
|
|
||||||
// Context Menus: first example
|
// Context Menus: first example
|
||||||
// [1.1] Right-click on the TableHeadersRow() line to open the default table context menu.
|
// [1.1] Right-click on the TableHeadersRow() line to open the default table context menu.
|
||||||
@ -4256,11 +4301,11 @@ static void ShowDemoWindowTables()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static ImGuiTableFlags flags =
|
ImGuiTableFlags flags =
|
||||||
ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_MultiSortable
|
ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_MultiSortable
|
||||||
| ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_NoBordersInBody
|
| ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_NoBordersInBody
|
||||||
| ImGuiTableFlags_ScrollY;
|
| ImGuiTableFlags_ScrollY;
|
||||||
if (ImGui::BeginTable("##table", 4, flags, ImVec2(0, 250), 0.0f))
|
if (ImGui::BeginTable("##table", 4, flags, ImVec2(0, TEXT_BASE_HEIGHT * 15), 0.0f))
|
||||||
{
|
{
|
||||||
// Declare columns
|
// Declare columns
|
||||||
// We use the "user_id" parameter of TableSetupColumn() to specify a user id that will be stored in the sort specifications.
|
// We use the "user_id" parameter of TableSetupColumn() to specify a user id that will be stored in the sort specifications.
|
||||||
@ -4328,24 +4373,22 @@ static void ShowDemoWindowTables()
|
|||||||
static int freeze_cols = 1;
|
static int freeze_cols = 1;
|
||||||
static int freeze_rows = 1;
|
static int freeze_rows = 1;
|
||||||
static int items_count = IM_ARRAYSIZE(template_items_names);
|
static int items_count = IM_ARRAYSIZE(template_items_names);
|
||||||
static ImVec2 outer_size_value = ImVec2(0, 250);
|
static ImVec2 outer_size_value = ImVec2(0, TEXT_BASE_HEIGHT * 15);
|
||||||
static float row_min_height = 0.0f; // Auto
|
static float row_min_height = 0.0f; // Auto
|
||||||
static float inner_width_with_scroll = 0.0f; // Auto-extend
|
static float inner_width_with_scroll = 0.0f; // Auto-extend
|
||||||
static bool outer_size_enabled = true;
|
static bool outer_size_enabled = true;
|
||||||
static bool show_headers = true;
|
static bool show_headers = true;
|
||||||
static bool show_wrapped_text = false;
|
static bool show_wrapped_text = false;
|
||||||
//static ImGuiTextFilter filter;
|
//static ImGuiTextFilter filter;
|
||||||
//ImGui::SetNextItemOpen(true, ImGuiCond_Once); // FIXME-TABLE: Enabling this results in initial clipped first pass on table which affects sizing
|
//ImGui::SetNextItemOpen(true, ImGuiCond_Once); // FIXME-TABLE: Enabling this results in initial clipped first pass on table which tend to affects column sizing
|
||||||
if (ImGui::TreeNodeEx("Options"))
|
if (ImGui::TreeNode("Options"))
|
||||||
{
|
{
|
||||||
// Make the UI compact because there are so many fields
|
// Make the UI compact because there are so many fields
|
||||||
ImGuiStyle& style = ImGui::GetStyle();
|
PushStyleCompact();
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(style.FramePadding.x, 1));
|
ImGui::PushItemWidth(TEXT_BASE_WIDTH * 28.0f);
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(style.ItemSpacing.x, 2));
|
|
||||||
ImGui::PushItemWidth(200);
|
|
||||||
|
|
||||||
ImGui::BulletText("Features:");
|
if (ImGui::TreeNodeEx("Features:", ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
ImGui::Indent();
|
{
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", (unsigned int*)&flags, ImGuiTableFlags_Resizable);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Reorderable", (unsigned int*)&flags, ImGuiTableFlags_Reorderable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Reorderable", (unsigned int*)&flags, ImGuiTableFlags_Reorderable);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_Hideable", (unsigned int*)&flags, ImGuiTableFlags_Hideable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_Hideable", (unsigned int*)&flags, ImGuiTableFlags_Hideable);
|
||||||
@ -4353,10 +4396,11 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::CheckboxFlags("ImGuiTableFlags_MultiSortable", (unsigned int*)&flags, ImGuiTableFlags_MultiSortable);
|
ImGui::CheckboxFlags("ImGuiTableFlags_MultiSortable", (unsigned int*)&flags, ImGuiTableFlags_MultiSortable);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_NoSavedSettings", (unsigned int*)&flags, ImGuiTableFlags_NoSavedSettings);
|
ImGui::CheckboxFlags("ImGuiTableFlags_NoSavedSettings", (unsigned int*)&flags, ImGuiTableFlags_NoSavedSettings);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_ContextMenuInBody", (unsigned int*)&flags, ImGuiTableFlags_ContextMenuInBody);
|
ImGui::CheckboxFlags("ImGuiTableFlags_ContextMenuInBody", (unsigned int*)&flags, ImGuiTableFlags_ContextMenuInBody);
|
||||||
ImGui::Unindent();
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::BulletText("Decoration:");
|
if (ImGui::TreeNodeEx("Decoration:", ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
ImGui::Indent();
|
{
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_RowBg", (unsigned int*)&flags, ImGuiTableFlags_RowBg);
|
ImGui::CheckboxFlags("ImGuiTableFlags_RowBg", (unsigned int*)&flags, ImGuiTableFlags_RowBg);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersV", (unsigned int*)&flags, ImGuiTableFlags_BordersV);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersV", (unsigned int*)&flags, ImGuiTableFlags_BordersV);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersOuterV", (unsigned int*)&flags, ImGuiTableFlags_BordersOuterV);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersOuterV", (unsigned int*)&flags, ImGuiTableFlags_BordersOuterV);
|
||||||
@ -4366,10 +4410,11 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::CheckboxFlags("ImGuiTableFlags_BordersInnerH", (unsigned int*)&flags, ImGuiTableFlags_BordersInnerH);
|
ImGui::CheckboxFlags("ImGuiTableFlags_BordersInnerH", (unsigned int*)&flags, ImGuiTableFlags_BordersInnerH);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_NoBordersInBody", (unsigned int*)&flags, ImGuiTableFlags_NoBordersInBody); ImGui::SameLine(); HelpMarker("Disable vertical borders in columns Body (borders will always appears in Headers");
|
ImGui::CheckboxFlags("ImGuiTableFlags_NoBordersInBody", (unsigned int*)&flags, ImGuiTableFlags_NoBordersInBody); ImGui::SameLine(); HelpMarker("Disable vertical borders in columns Body (borders will always appears in Headers");
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_NoBordersInBodyUntilResize", (unsigned int*)&flags, ImGuiTableFlags_NoBordersInBodyUntilResize); ImGui::SameLine(); HelpMarker("Disable vertical borders in columns Body until hovered for resize (borders will always appears in Headers)");
|
ImGui::CheckboxFlags("ImGuiTableFlags_NoBordersInBodyUntilResize", (unsigned int*)&flags, ImGuiTableFlags_NoBordersInBodyUntilResize); ImGui::SameLine(); HelpMarker("Disable vertical borders in columns Body until hovered for resize (borders will always appears in Headers)");
|
||||||
ImGui::Unindent();
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::BulletText("Padding, Sizing:");
|
if (ImGui::TreeNodeEx("Sizing, Padding:", ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
ImGui::Indent();
|
{
|
||||||
if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingPolicyStretchX", (unsigned int*)&flags, ImGuiTableFlags_SizingPolicyStretchX))
|
if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingPolicyStretchX", (unsigned int*)&flags, ImGuiTableFlags_SizingPolicyStretchX))
|
||||||
flags &= ~(ImGuiTableFlags_SizingPolicyMaskX_ ^ ImGuiTableFlags_SizingPolicyStretchX); // Can't specify both sizing polices so we clear the other
|
flags &= ~(ImGuiTableFlags_SizingPolicyMaskX_ ^ ImGuiTableFlags_SizingPolicyStretchX); // Can't specify both sizing polices so we clear the other
|
||||||
ImGui::SameLine(); HelpMarker("[Default if ScrollX is off]\nFit all columns within available width (or specified inner_width). Fixed and Stretch columns allowed.");
|
ImGui::SameLine(); HelpMarker("[Default if ScrollX is off]\nFit all columns within available width (or specified inner_width). Fixed and Stretch columns allowed.");
|
||||||
@ -4382,21 +4427,24 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::SameLine(); HelpMarker("Only available if ScrollX is disabled.");
|
ImGui::SameLine(); HelpMarker("Only available if ScrollX is disabled.");
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_NoClip", (unsigned int*)&flags, ImGuiTableFlags_NoClip);
|
ImGui::CheckboxFlags("ImGuiTableFlags_NoClip", (unsigned int*)&flags, ImGuiTableFlags_NoClip);
|
||||||
ImGui::SameLine(); HelpMarker("Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with ScrollFreeze options.");
|
ImGui::SameLine(); HelpMarker("Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with ScrollFreeze options.");
|
||||||
ImGui::Unindent();
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::BulletText("Scrolling:");
|
if (ImGui::TreeNodeEx("Scrolling:", ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
ImGui::Indent();
|
{
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_ScrollX", (unsigned int*)&flags, ImGuiTableFlags_ScrollX);
|
ImGui::CheckboxFlags("ImGuiTableFlags_ScrollX", (unsigned int*)&flags, ImGuiTableFlags_ScrollX);
|
||||||
ImGui::CheckboxFlags("ImGuiTableFlags_ScrollY", (unsigned int*)&flags, ImGuiTableFlags_ScrollY);
|
ImGui::SameLine();
|
||||||
ImGui::SetNextItemWidth(ImGui::GetFrameHeight());
|
ImGui::SetNextItemWidth(ImGui::GetFrameHeight());
|
||||||
ImGui::DragInt("freeze_cols", &freeze_cols, 0.2f, 0, 9, NULL, ImGuiSliderFlags_NoInput);
|
ImGui::DragInt("freeze_cols", &freeze_cols, 0.2f, 0, 9, NULL, ImGuiSliderFlags_NoInput);
|
||||||
|
ImGui::CheckboxFlags("ImGuiTableFlags_ScrollY", (unsigned int*)&flags, ImGuiTableFlags_ScrollY);
|
||||||
|
ImGui::SameLine();
|
||||||
ImGui::SetNextItemWidth(ImGui::GetFrameHeight());
|
ImGui::SetNextItemWidth(ImGui::GetFrameHeight());
|
||||||
ImGui::DragInt("freeze_rows", &freeze_rows, 0.2f, 0, 9, NULL, ImGuiSliderFlags_NoInput);
|
ImGui::DragInt("freeze_rows", &freeze_rows, 0.2f, 0, 9, NULL, ImGuiSliderFlags_NoInput);
|
||||||
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::Unindent();
|
if (ImGui::TreeNodeEx("Other:", ImGuiTreeNodeFlags_DefaultOpen))
|
||||||
|
{
|
||||||
ImGui::BulletText("Other:");
|
|
||||||
ImGui::Indent();
|
|
||||||
ImGui::Checkbox("show_headers", &show_headers);
|
ImGui::Checkbox("show_headers", &show_headers);
|
||||||
ImGui::Checkbox("show_wrapped_text", &show_wrapped_text);
|
ImGui::Checkbox("show_wrapped_text", &show_wrapped_text);
|
||||||
ImGui::DragFloat2("##OuterSize", &outer_size_value.x);
|
ImGui::DragFloat2("##OuterSize", &outer_size_value.x);
|
||||||
@ -4410,13 +4458,14 @@ static void ShowDemoWindowTables()
|
|||||||
ImGui::DragFloat("inner_width (when ScrollX active)", &inner_width_with_scroll, 1.0f, 0.0f, FLT_MAX);
|
ImGui::DragFloat("inner_width (when ScrollX active)", &inner_width_with_scroll, 1.0f, 0.0f, FLT_MAX);
|
||||||
ImGui::DragFloat("row_min_height", &row_min_height, 1.0f, 0.0f, FLT_MAX);
|
ImGui::DragFloat("row_min_height", &row_min_height, 1.0f, 0.0f, FLT_MAX);
|
||||||
ImGui::SameLine(); HelpMarker("Specify height of the Selectable item.");
|
ImGui::SameLine(); HelpMarker("Specify height of the Selectable item.");
|
||||||
ImGui::DragInt("items_count", &items_count, 0.1f, 0, 5000);
|
ImGui::DragInt("items_count", &items_count, 0.1f, 0, 9999);
|
||||||
ImGui::Combo("contents_type (first column)", &contents_type, contents_type_names, IM_ARRAYSIZE(contents_type_names));
|
ImGui::Combo("contents_type (first column)", &contents_type, contents_type_names, IM_ARRAYSIZE(contents_type_names));
|
||||||
//filter.Draw("filter");
|
//filter.Draw("filter");
|
||||||
ImGui::Unindent();
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
ImGui::PopStyleVar(2);
|
PopStyleCompact();
|
||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
@ -312,6 +312,14 @@ bool ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG
|
|||||||
table->RawData.resize(0);
|
table->RawData.resize(0);
|
||||||
if (table->RawData.Size == 0)
|
if (table->RawData.Size == 0)
|
||||||
{
|
{
|
||||||
|
// For reference, the total _allocation count_ for a table is:
|
||||||
|
// + 0 (for ImGuiTable instance, we sharing allocation in g.Tables pool)
|
||||||
|
// + 1 (for table->RawData allocated below)
|
||||||
|
// + 1 (for table->Splitter._Channels)
|
||||||
|
// + 2 * active_channels_count (for ImDrawCmd and ImDrawIdx buffers inside channels)
|
||||||
|
// Where active_channels_count is variable but often == columns_count or columns_count + 1, see TableUpdateDrawChannels() for details.
|
||||||
|
// Unused channels don't perform their +2 allocations.
|
||||||
|
|
||||||
// Allocate single buffer for our arrays
|
// Allocate single buffer for our arrays
|
||||||
ImSpanAllocator<3> span_allocator;
|
ImSpanAllocator<3> span_allocator;
|
||||||
span_allocator.ReserveBytes(0, columns_count * sizeof(ImGuiTableColumn));
|
span_allocator.ReserveBytes(0, columns_count * sizeof(ImGuiTableColumn));
|
||||||
|
Loading…
Reference in New Issue
Block a user