public static bool Selectable(string label, bool isSelected, ImGuiSelectableFlags flags) { return(Selectable(label, isSelected, flags, new ImVec2())); }
public static bool SelectableEx(string label, ref bool isSelected, ImGuiSelectableFlags flags, ImVec2 size) { return(ImGuiNative.igSelectableEx(label, ref isSelected, flags, size)); }
public static bool Selectable(string label, bool isSelected, ImGuiSelectableFlags flags, ImVec2 size) => ImGuiNative.igSelectable(label, isSelected, flags, size);
public static bool Selectable(string label, ref bool selected, ImGuiSelectableFlags flags = ImGuiSelectableFlags.None, ImVec2 size = default) => SelectableBoolPtr(label, ref selected, flags, size);
public static bool Selectable(string label, bool selected = false, ImGuiSelectableFlags flags = ImGuiSelectableFlags.None, ImVec2 size = default) => SelectableBool(label, selected, flags, size);
public abstract byte igSelectableBoolPtr(byte *label, byte *p_selected, ImGuiSelectableFlags flags, Vector2 size);
public void Draw(ref bool show) { ImGui.SetNextWindowSize(new Vector2(800, 500), ImGuiCond.Appearing); ImGui.PushStyleColor(ImGuiCol.ChildBg, Themes.GetThemeColourUINT(Themes.eThemeColour.Frame)); if (ImGui.Begin("Logged Events", ref show)) { //string label = $"{msgs.Length} log entries displayed from ({activeCount}/{_LogFilters.Length}) sources"; Vector2 boxSize = new Vector2(75, 40); Vector2 marginSize = new Vector2(70, 40); ImGuiSelectableFlags flags = ImGuiSelectableFlags.DontClosePopups; uint tableHdrBG = 0xff333333; var textFilterCounts = Logging.GetTextFilterCounts(); List <Tuple <string, LogFilterType> > filters = new List <Tuple <string, LogFilterType> >() { new Tuple <string, LogFilterType>("Debug", LogFilterType.Debug), new Tuple <string, LogFilterType>("Info", LogFilterType.Info), new Tuple <string, LogFilterType>("Alert", LogFilterType.Alert), new Tuple <string, LogFilterType>("Error", LogFilterType.Error) }; if (ImGui.BeginTable("LogFilterTable", filters.Count + 1, ImGuiTableFlags.Borders, new Vector2(boxSize.X * (filters.Count + 1), 41))) { ImGui.TableNextRow(); ImGui.TableSetColumnIndex(0); ImGui.TableSetBgColor(ImGuiTableBgTarget.CellBg, tableHdrBG); if (ImGui.Selectable("Message", false, flags, marginSize)) { rowLastSelected[0] = !rowLastSelected[0]; filters.ForEach((filter) => { _LogFilters[(int)filter.Item2] = rowLastSelected[0]; }); } foreach (var filter in filters) { if (ImGui.TableNextColumn()) { ImGui.Selectable($"{filter.Item1} ({textFilterCounts[filter.Item2]})", ref _LogFilters[(int)filter.Item2], flags, boxSize); } } ImGui.EndTable(); if (ImGui.BeginPopupContextItem("FlterTableRightCtx", ImGuiPopupFlags.MouseButtonRight)) { if (ImGui.MenuItem("Clear All Source Filters")) { Array.Clear(_LogFilters, 0, _LogFilters.Length); } if (ImGui.MenuItem("Apply All Source Filters")) { _LogFilters = Enumerable.Repeat(true, _LogFilters.Length).ToArray(); } ImGui.EndPopup(); } ImGui.SameLine(); ImGui.BeginGroup(); //filter text box { ImGui.SetCursorPosY(ImGui.GetCursorPosY() + 4); ImGui.Indent(8); ImGui.Text("Filter"); ImGui.SameLine(); ImGui.SetNextItemWidth(Math.Min(ImGui.GetContentRegionAvail().X - 50, 350)); ImGui.InputText("##IT1", textFilterValue, (uint)textFilterValue.Length); if (_textFilterLen > 0) { ImGui.SameLine(); if (ImGui.Button("Clear")) { textFilterValue = new byte[textFilterValue.Length]; } } ImGui.EndGroup(); } WriteLogContentTable(); } ImGui.End(); } ImGui.PopStyleColor(); }