MCPcopy Create free account
hub / github.com/KebsCS/KBotExt / TableSaveSettings

Method TableSaveSettings

KBotExt/imgui/imgui_tables.cpp:3287–3340  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3285}
3286
3287void ImGui::TableSaveSettings(ImGuiTable* table)
3288{
3289 table->IsSettingsDirty = false;
3290 if (table->Flags & ImGuiTableFlags_NoSavedSettings)
3291 return;
3292
3293 // Bind or create settings data
3294 ImGuiContext& g = *GImGui;
3295 ImGuiTableSettings* settings = TableGetBoundSettings(table);
3296 if (settings == NULL)
3297 {
3298 settings = TableSettingsCreate(table->ID, table->ColumnsCount);
3299 table->SettingsOffset = g.SettingsTables.offset_from_ptr(settings);
3300 }
3301 settings->ColumnsCount = (ImGuiTableColumnIdx)table->ColumnsCount;
3302
3303 // Serialize ImGuiTable/ImGuiTableColumn into ImGuiTableSettings/ImGuiTableColumnSettings
3304 IM_ASSERT(settings->ID == table->ID);
3305 IM_ASSERT(settings->ColumnsCount == table->ColumnsCount && settings->ColumnsCountMax >= settings->ColumnsCount);
3306 ImGuiTableColumn* column = table->Columns.Data;
3307 ImGuiTableColumnSettings* column_settings = settings->GetColumnSettings();
3308
3309 bool save_ref_scale = false;
3310 settings->SaveFlags = ImGuiTableFlags_None;
3311 for (int n = 0; n < table->ColumnsCount; n++, column++, column_settings++)
3312 {
3313 const float width_or_weight = (column->Flags & ImGuiTableColumnFlags_WidthStretch) ? column->StretchWeight : column->WidthRequest;
3314 column_settings->WidthOrWeight = width_or_weight;
3315 column_settings->Index = (ImGuiTableColumnIdx)n;
3316 column_settings->DisplayOrder = column->DisplayOrder;
3317 column_settings->SortOrder = column->SortOrder;
3318 column_settings->SortDirection = column->SortDirection;
3319 column_settings->IsEnabled = column->IsUserEnabled;
3320 column_settings->IsStretch = (column->Flags & ImGuiTableColumnFlags_WidthStretch) ? 1 : 0;
3321 if ((column->Flags & ImGuiTableColumnFlags_WidthStretch) == 0)
3322 save_ref_scale = true;
3323
3324 // We skip saving some data in the .ini file when they are unnecessary to restore our state.
3325 // Note that fixed width where initial width was derived from auto-fit will always be saved as InitStretchWeightOrWidth will be 0.0f.
3326 // FIXME-TABLE: We don't have logic to easily compare SortOrder to DefaultSortOrder yet so it's always saved when present.
3327 if (width_or_weight != column->InitStretchWeightOrWidth)
3328 settings->SaveFlags |= ImGuiTableFlags_Resizable;
3329 if (column->DisplayOrder != n)
3330 settings->SaveFlags |= ImGuiTableFlags_Reorderable;
3331 if (column->SortOrder != -1)
3332 settings->SaveFlags |= ImGuiTableFlags_Sortable;
3333 if (column->IsUserEnabled != ((column->Flags & ImGuiTableColumnFlags_DefaultHide) == 0))
3334 settings->SaveFlags |= ImGuiTableFlags_Hideable;
3335 }
3336 settings->SaveFlags &= table->Flags;
3337 settings->RefScale = save_ref_scale ? table->RefScale : 0.0f;
3338
3339 MarkIniSettingsDirty();
3340}
3341
3342void ImGui::TableLoadSettings(ImGuiTable* table)
3343{

Callers

nothing calls this directly

Calls 2

offset_from_ptrMethod · 0.80
GetColumnSettingsMethod · 0.80

Tested by

no test coverage detected