Merge pull request #1024 from Ottermandias/FileSelector

This commit is contained in:
goat 2022-10-16 18:55:35 +02:00 committed by GitHub
commit ab6f57c6e6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -39,7 +39,7 @@ namespace Dalamud.Interface.ImGuiFileDialog
this.ResetEvents(); this.ResetEvents();
ImGui.SetNextWindowSize(new Vector2(800, 500), ImGuiCond.FirstUseEver); ImGui.SetNextWindowSize(ImGuiHelpers.ScaledVector2(800, 500), ImGuiCond.FirstUseEver);
if (this.isModal && !this.okResultToConfirm) if (this.isModal && !this.okResultToConfirm)
{ {
@ -100,6 +100,9 @@ namespace Dalamud.Interface.ImGuiFileDialog
return wasClosed || this.ConfirmOrOpenOverWriteFileDialogIfNeeded(res); return wasClosed || this.ConfirmOrOpenOverWriteFileDialogIfNeeded(res);
} }
private static float Scaled(float value)
=> value * ImGuiHelpers.GlobalScale;
private static void AddToIconMap(string[] extensions, FontAwesomeIcon icon, Vector4 color) private static void AddToIconMap(string[] extensions, FontAwesomeIcon icon, Vector4 color)
{ {
foreach (var ext in extensions) foreach (var ext in extensions)
@ -138,9 +141,9 @@ namespace Dalamud.Interface.ImGuiFileDialog
{ {
this.DrawPathComposer(); this.DrawPathComposer();
ImGui.SetCursorPosY(ImGui.GetCursorPosY() + 2); ImGui.SetCursorPosY(ImGui.GetCursorPosY() + Scaled(2));
ImGui.Separator(); ImGui.Separator();
ImGui.SetCursorPosY(ImGui.GetCursorPosY() + 2); ImGui.SetCursorPosY(ImGui.GetCursorPosY() + Scaled(2));
this.DrawSearchBar(); this.DrawSearchBar();
} }
@ -171,7 +174,7 @@ namespace Dalamud.Interface.ImGuiFileDialog
if (idx > 0) if (idx > 0)
{ {
ImGui.SameLine(); ImGui.SameLine();
ImGui.SetCursorPosX(ImGui.GetCursorPosX() - 3); ImGui.SetCursorPosX(ImGui.GetCursorPosX() - Scaled(3));
} }
ImGui.PushID(idx); ImGui.PushID(idx);
@ -254,7 +257,7 @@ namespace Dalamud.Interface.ImGuiFileDialog
ImGui.TextUnformatted("New Directory Name"); ImGui.TextUnformatted("New Directory Name");
ImGui.SameLine(); ImGui.SameLine();
ImGui.SetNextItemWidth(ImGui.GetContentRegionAvail().X - 100f); ImGui.SetNextItemWidth(ImGui.GetContentRegionAvail().X - Scaled(100));
ImGui.InputText("##DirectoryFileName", ref this.createDirectoryBuffer, 255); ImGui.InputText("##DirectoryFileName", ref this.createDirectoryBuffer, 255);
ImGui.SameLine(); ImGui.SameLine();
@ -288,12 +291,12 @@ namespace Dalamud.Interface.ImGuiFileDialog
{ {
ImGui.Columns(2, "##FileDialog_Columns"); ImGui.Columns(2, "##FileDialog_Columns");
this.DrawSideBar(size with { X = 150 }); this.DrawSideBar(size with { X = Scaled(150) });
ImGui.SetColumnWidth(0, 150); ImGui.SetColumnWidth(0, Scaled(150));
ImGui.NextColumn(); ImGui.NextColumn();
this.DrawFileListView(size - new Vector2(160, 0)); this.DrawFileListView(size - new Vector2(Scaled(160), 0));
ImGui.Columns(1); ImGui.Columns(1);
} }
@ -311,13 +314,13 @@ namespace Dalamud.Interface.ImGuiFileDialog
if (ImGui.BeginChild("##FileDialog_SideBar", size)) if (ImGui.BeginChild("##FileDialog_SideBar", size))
{ {
ImGui.SetCursorPosY(ImGui.GetCursorPosY() + 5); ImGui.SetCursorPosY(ImGui.GetCursorPosY() + Scaled(5));
var idx = 0; var idx = 0;
foreach (var qa in this.drives.Concat(this.quickAccess).Where(qa => qa.Exists)) foreach (var qa in this.drives.Concat(this.quickAccess).Where(qa => qa.Exists))
{ {
ImGui.PushID(idx++); ImGui.PushID(idx++);
ImGui.SetCursorPosX(25); ImGui.SetCursorPosX(Scaled(25));
if (ImGui.Selectable(qa.Text, qa.Text == this.selectedSideBar) && qa.CheckExistence()) if (ImGui.Selectable(qa.Text, qa.Text == this.selectedSideBar) && qa.CheckExistence())
{ {
this.SetPath(qa.Location); this.SetPath(qa.Location);
@ -445,7 +448,7 @@ namespace Dalamud.Interface.ImGuiFileDialog
if (ImGui.TableNextColumn()) if (ImGui.TableNextColumn())
{ {
var sz = ImGui.CalcTextSize(file.FileModifiedDate); var sz = ImGui.CalcTextSize(file.FileModifiedDate);
ImGui.SetNextItemWidth(sz.X + 5); ImGui.SetNextItemWidth(sz.X + Scaled(5));
ImGui.TextUnformatted(file.FileModifiedDate + " "); ImGui.TextUnformatted(file.FileModifiedDate + " ");
} }
@ -494,7 +497,7 @@ namespace Dalamud.Interface.ImGuiFileDialog
ImGui.TextUnformatted(icon.ToIconString()); ImGui.TextUnformatted(icon.ToIconString());
ImGui.PopFont(); ImGui.PopFont();
ImGui.SameLine(25f); ImGui.SameLine(Scaled(25f));
if (ImGui.Selectable(file.FileName, selected, flags)) if (ImGui.Selectable(file.FileName, selected, flags))
{ {
@ -703,10 +706,10 @@ namespace Dalamud.Interface.ImGuiFileDialog
ImGui.SameLine(); ImGui.SameLine();
var width = ImGui.GetContentRegionAvail().X - 100; var width = ImGui.GetContentRegionAvail().X - Scaled(100);
if (this.filters.Count > 0) if (this.filters.Count > 0)
{ {
width -= 150f; width -= Scaled(150);
} }
var selectOnly = this.flags.HasFlag(ImGuiFileDialogFlags.SelectOnly); var selectOnly = this.flags.HasFlag(ImGuiFileDialogFlags.SelectOnly);
@ -721,7 +724,7 @@ namespace Dalamud.Interface.ImGuiFileDialog
ImGui.SameLine(); ImGui.SameLine();
var needToApplyNewFilter = false; var needToApplyNewFilter = false;
ImGui.SetNextItemWidth(150f); ImGui.SetNextItemWidth(Scaled(150f));
if (ImGui.BeginCombo("##Filters", this.selectedFilter.Filter, ImGuiComboFlags.None)) if (ImGui.BeginCombo("##Filters", this.selectedFilter.Filter, ImGuiComboFlags.None))
{ {
var idx = 0; var idx = 0;