private void ItemCreatePopup(List <Shortcut> shortcuts) { if (ImGui.BeginPopup("addItem")) { _sh ??= new Shortcut(); ItemBaseUI(_sh, false); if (ImGui.Button("Create")) { shortcuts.Add(_sh); config.Save(); _sh = null; ImGui.CloseCurrentPopup(); } ImGui.SameLine(); if (ImGui.Button("Import")) { try { shortcuts.Add(plugin.ImportShortcut(ImGui.GetClipboardText())); config.Save(); ImGui.CloseCurrentPopup(); } catch (Exception e) // Try as a bar instead { try { var bar = plugin.ImportBar(ImGui.GetClipboardText()); foreach (var sh in bar.ShortcutList) { shortcuts.Add(sh); } config.Save(); ImGui.CloseCurrentPopup(); } catch (Exception e2) { PluginLog.LogError("Invalid import string!"); PluginLog.LogError($"{e.GetType()}\n{e.Message}"); PluginLog.LogError($"{e2.GetType()}\n{e2.Message}"); } } } if (ImGui.IsItemHovered()) { ImGui.SetTooltip("Import a shortcut from the clipboard,\n" + "or import all of another bar's shortcuts."); } ClampWindowPos(); ImGui.EndPopup(); } }
public void ImportBar(string import) { try { AddBar(QoLBar.ImportBar(import)); } catch (Exception e) // Try as a shortcut instead { try { var sh = QoLBar.ImportShortcut(ImGui.GetClipboardText()); var bar = new BarConfig(); bar.ShortcutList.Add(sh); AddBar(bar); } catch (Exception e2) { PluginLog.LogError("Invalid import string!"); PluginLog.LogError($"{e.GetType()}\n{e.Message}"); PluginLog.LogError($"{e2.GetType()}\n{e2.Message}"); } } }
private void DrawPluginConfigWindow() { ImGui.SetNextWindowSizeConstraints(new Vector2(588, 500), ImGui.GetIO().DisplaySize); ImGui.Begin("QoL Bar Configuration", ref configOpen); if (ImGui.Checkbox("Export on Delete", ref config.ExportOnDelete)) { config.Save(); } ImGui.SameLine(ImGui.GetWindowWidth() / 2); if (ImGui.Checkbox("Resizing Repositions Bars", ref config.ResizeRepositionsBars)) { config.Save(); } if (ImGui.IsItemHovered()) { ImGui.SetTooltip("Undocked bars will automatically readjust if you change resolutions."); } if (ImGui.Checkbox("Use Hotbar Frames on Icons", ref config.UseIconFrame)) { config.Save(); } if (ImGui.IsItemHovered()) { ImGui.SetTooltip("Might cause lag."); } ImGui.Spacing(); ImGui.Spacing(); ImGui.Spacing(); ImGui.Spacing(); ImGui.SameLine(30); ImGui.Text("Bar Manager"); ImGui.Spacing(); ImGui.Separator(); Vector2 textsize = new Vector2(-1, 0); float textx = 0.0f; ImGui.Columns(3, "QoLBarsList", false); for (int i = 0; i < bars.Count; i++) { ImGui.PushID(i); ImGui.Text($"#{i + 1}"); ImGui.SameLine(); textx = ImGui.GetCursorPosX(); ImGui.SetNextItemWidth(-1); if (ImGui.InputText("##Title", ref config.BarConfigs[i].Title, 32)) { config.Save(); } textsize = ImGui.GetItemRectSize(); ImGui.NextColumn(); if (ImGui.Button("O")) { ImGui.OpenPopup($"BarConfig##{i}"); } if (ImGui.IsItemHovered()) { ImGui.SetTooltip("Options"); } bars[i].BarConfigPopup(); ImGui.SameLine(); if (ImGui.Button(config.BarConfigs[i].Hidden ? "R" : "H")) { bars[i].ToggleVisible(); } if (ImGui.IsItemHovered()) { ImGui.SetTooltip(config.BarConfigs[i].Hidden ? "Reveal" : "Hide"); } ImGui.NextColumn(); if (ImGui.Button("↑") && i > 0) { var b = bars[i]; bars.RemoveAt(i); bars.Insert(i - 1, b); var b2 = config.BarConfigs[i]; config.BarConfigs.RemoveAt(i); config.BarConfigs.Insert(i - 1, b2); config.Save(); RefreshBarIndexes(); } ImGui.SameLine(); if (ImGui.Button("↓") && i < (bars.Count - 1)) { var b = bars[i]; bars.RemoveAt(i); bars.Insert(i + 1, b); var b2 = config.BarConfigs[i]; config.BarConfigs.RemoveAt(i); config.BarConfigs.Insert(i + 1, b2); config.Save(); RefreshBarIndexes(); } ImGui.SameLine(); if (ImGui.Button("Export")) { ImGui.SetClipboardText(plugin.ExportBar(config.BarConfigs[i], false)); } if (ImGui.IsItemHovered()) { ImGui.SetTooltip("Export to clipboard without default settings (May change with updates).\n" + "Right click to export with every setting (Longer string, doesn't change)."); if (ImGui.IsMouseReleased(1)) { ImGui.SetClipboardText(plugin.ExportBar(config.BarConfigs[i], true)); } } if (i > 0) { ImGui.SameLine(); if (ImGui.Button(config.ExportOnDelete ? "Cut" : "Delete")) { plugin.ExecuteCommand("/echo <se> Right click to delete!"); } if (ImGui.IsItemHovered()) { ImGui.SetTooltip($"Right click this button to delete bar #{i + 1}!" + (config.ExportOnDelete ? "\nThe bar will be exported to clipboard first." : "")); if (ImGui.IsMouseReleased(1)) { if (config.ExportOnDelete) { ImGui.SetClipboardText(plugin.ExportBar(config.BarConfigs[i], false)); } bars.RemoveAt(i); config.BarConfigs.RemoveAt(i); config.Save(); RefreshBarIndexes(); } } } ImGui.NextColumn(); ImGui.PopID(); } ImGui.Separator(); ImGui.Spacing(); ImGui.SameLine(textx); if (ImGui.Button("+", textsize)) { AddBar(new BarConfig()); } ImGui.NextColumn(); ImGui.NextColumn(); if (ImGui.Button("Import", textsize)) { try { AddBar(plugin.ImportBar(ImGui.GetClipboardText())); } catch (Exception e) // Try as a shortcut instead { try { var sh = plugin.ImportShortcut(ImGui.GetClipboardText()); var bar = new BarConfig(); bar.ShortcutList.Add(sh); AddBar(bar); } catch (Exception e2) { PluginLog.LogError("Invalid import string!"); PluginLog.LogError($"{e.GetType()}\n{e.Message}"); PluginLog.LogError($"{e2.GetType()}\n{e2.Message}"); } } } if (ImGui.IsItemHovered()) { ImGui.SetTooltip("Import a bar from the clipboard,\n" + "or import a single shortcut as a new bar."); } ImGui.Columns(1); // I just wanna know who did this and where they live ImGui.End(); }