| 3471 | } |
| 3472 | |
| 3473 | static void TableSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandler* handler, ImGuiTextBuffer* buf) |
| 3474 | { |
| 3475 | ImGuiContext& g = *ctx; |
| 3476 | for (ImGuiTableSettings* settings = g.SettingsTables.begin(); settings != NULL; settings = g.SettingsTables.next_chunk(settings)) |
| 3477 | { |
| 3478 | if (settings->ID == 0) // Skip ditched settings |
| 3479 | continue; |
| 3480 | |
| 3481 | // TableSaveSettings() may clear some of those flags when we establish that the data can be stripped |
| 3482 | // (e.g. Order was unchanged) |
| 3483 | const bool save_size = (settings->SaveFlags & ImGuiTableFlags_Resizable) != 0; |
| 3484 | const bool save_visible = (settings->SaveFlags & ImGuiTableFlags_Hideable) != 0; |
| 3485 | const bool save_order = (settings->SaveFlags & ImGuiTableFlags_Reorderable) != 0; |
| 3486 | const bool save_sort = (settings->SaveFlags & ImGuiTableFlags_Sortable) != 0; |
| 3487 | if (!save_size && !save_visible && !save_order && !save_sort) |
| 3488 | continue; |
| 3489 | |
| 3490 | buf->reserve(buf->size() + 30 + settings->ColumnsCount * 50); // ballpark reserve |
| 3491 | buf->appendf("[%s][0x%08X,%d]\n", handler->TypeName, settings->ID, settings->ColumnsCount); |
| 3492 | if (settings->RefScale != 0.0f) |
| 3493 | buf->appendf("RefScale=%g\n", settings->RefScale); |
| 3494 | ImGuiTableColumnSettings* column = settings->GetColumnSettings(); |
| 3495 | for (int column_n = 0; column_n < settings->ColumnsCount; column_n++, column++) |
| 3496 | { |
| 3497 | // "Column 0 UserID=0x42AD2D21 Width=100 Visible=1 Order=0 Sort=0v" |
| 3498 | bool save_column = column->UserID != 0 || save_size || save_visible || save_order || (save_sort && column->SortOrder != -1); |
| 3499 | if (!save_column) |
| 3500 | continue; |
| 3501 | buf->appendf("Column %-2d", column_n); |
| 3502 | if (column->UserID != 0) { buf->appendf(" UserID=%08X", column->UserID); } |
| 3503 | if (save_size && column->IsStretch) { buf->appendf(" Weight=%.4f", column->WidthOrWeight); } |
| 3504 | if (save_size && !column->IsStretch) { buf->appendf(" Width=%d", (int)column->WidthOrWeight); } |
| 3505 | if (save_visible) { buf->appendf(" Visible=%d", column->IsEnabled); } |
| 3506 | if (save_order) { buf->appendf(" Order=%d", column->DisplayOrder); } |
| 3507 | if (save_sort && column->SortOrder != -1) { buf->appendf(" Sort=%d%c", column->SortOrder, (column->SortDirection == ImGuiSortDirection_Ascending) ? 'v' : '^'); } |
| 3508 | buf->append("\n"); |
| 3509 | } |
| 3510 | buf->append("\n"); |
| 3511 | } |
| 3512 | } |
| 3513 | |
| 3514 | void ImGui::TableSettingsAddSettingsHandler() |
| 3515 | { |
nothing calls this directly
no test coverage detected