icons to clear ui filters

This commit is contained in:
Mikulas Florek 2020-04-26 16:13:05 +02:00
parent 3a460428e7
commit 080b762e97
7 changed files with 75 additions and 12 deletions

View file

@ -637,13 +637,20 @@ void AssetBrowser::onGUI()
refreshLabels(); refreshLabels();
} }
ImGui::SameLine(); ImGui::SameLine();
ImGui::Checkbox("Thumbnails", &m_show_thumbnails);
ImGui::SameLine();
checkbox_w = ImGui::GetCursorPosX() - checkbox_w; checkbox_w = ImGui::GetCursorPosX() - checkbox_w;
ImGui::PushItemWidth(100); ImGui::PushItemWidth(100);
if (ImGui::InputTextWithHint("##filter", "Filter", m_filter, sizeof(m_filter))) doFilter(); if (ImGui::InputTextWithHint("##filter", "Filter", m_filter, sizeof(m_filter))) doFilter();
ImGui::PopItemWidth(); ImGui::PopItemWidth();
ImGui::SameLine(130 + checkbox_w); ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Reset filter")) {
m_filter[0] = '\0';
doFilter();
}
ImGui::SameLine();
ImGui::Checkbox("Thumbnails", &m_show_thumbnails);
ImGui::SameLine();
breadcrumbs(); breadcrumbs();
ImGui::Separator(); ImGui::Separator();
@ -912,7 +919,12 @@ bool AssetBrowser::resourceList(Span<char> buf, Ref<u32> selected_path_hash, Res
} }
static char filter[128] = ""; static char filter[128] = "";
ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", filter, sizeof(filter)); ImGui::InputTextWithHint("##filter", "Filter", filter, sizeof(filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
filter[0] = '\0';
}
ImGui::BeginChild("Resources", ImVec2(0, height - ImGui::GetTextLineHeight() * 3), false, ImGuiWindowFlags_HorizontalScrollbar); ImGui::BeginChild("Resources", ImVec2(0, height - ImGui::GetTextLineHeight() * 3), false, ImGuiWindowFlags_HorizontalScrollbar);
AssetCompiler& compiler = m_app.getAssetCompiler(); AssetCompiler& compiler = m_app.getAssetCompiler();

View file

@ -159,8 +159,12 @@ void LogUI::onGUI()
ImGui::SameLine(); ImGui::SameLine();
char filter[128] = ""; char filter[128] = "";
ImGui::Checkbox("Autoscroll", &m_autoscroll); ImGui::Checkbox("Autoscroll", &m_autoscroll);
ImGui::SetNextItemWidth(-1); ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", filter, sizeof(filter)); ImGui::InputTextWithHint("##filter", "Filter", filter, sizeof(filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
filter[0] = '\0';
}
int len = 0; int len = 0;
if (ImGui::BeginChild("log_messages", ImVec2(0, 0), true)) if (ImGui::BeginChild("log_messages", ImVec2(0, 0), true))

View file

@ -227,7 +227,12 @@ void ProfilerUIImpl::onGUIResources()
{ {
if (!ImGui::CollapsingHeader("Resources")) return; if (!ImGui::CollapsingHeader("Resources")) return;
ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##resource_filter", "Filter", m_resource_filter, sizeof(m_resource_filter)); ImGui::InputTextWithHint("##resource_filter", "Filter", m_resource_filter, sizeof(m_resource_filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
m_resource_filter[0] = '\0';
}
static const ResourceType RESOURCE_TYPES[] = { ResourceType("animation"), static const ResourceType RESOURCE_TYPES[] = { ResourceType("animation"),
ResourceType("material"), ResourceType("material"),

View file

@ -297,11 +297,17 @@ struct GridUIVisitor final : Reflection::IPropertyVisitor
Universe& universe = *m_editor.getUniverse(); Universe& universe = *m_editor.getUniverse();
if (ImGui::BeginPopup("popup")) if (ImGui::BeginResizablePopup("popup", ImVec2(200, 300)))
{ {
static char entity_filter[32] = {}; static char entity_filter[32] = {};
ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", entity_filter, sizeof(entity_filter)); ImGui::InputTextWithHint("##filter", "Filter", entity_filter, sizeof(entity_filter));
if (ImGui::BeginChild("list", ImVec2(0, 200))) { ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
entity_filter[0] = '\0';
}
if (ImGui::BeginChild("list", ImVec2(0, ImGui::GetContentRegionAvail().y))) {
for (EntityPtr i = universe.getFirstEntity(); i.isValid(); i = universe.getNextEntity((EntityRef)i)) for (EntityPtr i = universe.getFirstEntity(); i.isValid(); i = universe.getNextEntity((EntityRef)i))
{ {
getEntityListDisplayName(m_app, m_editor, Span(buf), i); getEntityListDisplayName(m_app, m_editor, Span(buf), i);
@ -800,8 +806,14 @@ void PropertyGrid::onGUI()
ImGui::OpenPopup("AddComponentPopup"); ImGui::OpenPopup("AddComponentPopup");
} }
if (ImGui::BeginPopup("AddComponentPopup")) { if (ImGui::BeginResizablePopup("AddComponentPopup", ImVec2(300, 300))) {
ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", m_component_filter, sizeof(m_component_filter)); ImGui::InputTextWithHint("##filter", "Filter", m_component_filter, sizeof(m_component_filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
m_component_filter[0] = '\0';
}
showAddComponentNode(m_app.getAddComponentTreeRoot().child, m_component_filter); showAddComponentNode(m_app.getAddComponentTreeRoot().child, m_component_filter);
ImGui::EndPopup(); ImGui::EndPopup();
} }

View file

@ -615,7 +615,12 @@ void Settings::showToolbarSettings() const
void Settings::showShortcutSettings() void Settings::showShortcutSettings()
{ {
auto& actions = m_app.getActions(); auto& actions = m_app.getActions();
ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", m_filter, sizeof(m_filter)); ImGui::InputTextWithHint("##filter", "Filter", m_filter, sizeof(m_filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
m_filter[0] = '\0';
}
for (int i = 0; i < actions.size(); ++i) for (int i = 0; i < actions.size(); ++i)
{ {
@ -638,11 +643,15 @@ void Settings::onGUI()
if (!m_is_open) return; if (!m_is_open) return;
if (ImGui::Begin(ICON_FA_COG "Settings##settings", &m_is_open)) if (ImGui::Begin(ICON_FA_COG "Settings##settings", &m_is_open))
{ {
if (ImGui::Button("Save")) save(); if (ImGui::Button(ICON_FA_SAVE "Save")) save();
ImGui::SameLine(); ImGui::SameLine();
if (ImGui::Button("Reload")) load(); if (ImGui::Button(ICON_FA_REDO_ALT "Reload")) load();
ImGui::SameLine(); ImGui::SameLine();
ImGui::Text("Settings are saved when the application closes"); ImGui::TextDisabled("(?)");
if (ImGui::IsItemHovered())
{
ImGui::SetTooltip("%s", "Settings are saved in studio.ini when the application closes");
}
if (ImGui::BeginTabBar("tabs")) { if (ImGui::BeginTabBar("tabs")) {

View file

@ -1440,8 +1440,12 @@ struct StudioAppImpl final : StudioApp
void onCreateEntityWithComponentGUI() void onCreateEntityWithComponentGUI()
{ {
doMenuItem(*getAction("createEntity"), true); doMenuItem(*getAction("createEntity"), true);
ImGui::Separator(); ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", m_component_filter, sizeof(m_component_filter)); ImGui::InputTextWithHint("##filter", "Filter", m_component_filter, sizeof(m_component_filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
m_component_filter[0] = '\0';
}
showAddComponentNode(m_add_cmp_root.child, m_component_filter); showAddComponentNode(m_add_cmp_root.child, m_component_filter);
} }
@ -1503,7 +1507,14 @@ struct StudioAppImpl final : StudioApp
doMenuItem(*getAction("newUniverse"), true); doMenuItem(*getAction("newUniverse"), true);
if (ImGui::BeginMenu(NO_ICON "Open")) if (ImGui::BeginMenu(NO_ICON "Open"))
{ {
ImGui::Dummy(ImVec2(200, 1)); // to forece minimal menu size
ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", m_open_filter, sizeof(m_open_filter)); ImGui::InputTextWithHint("##filter", "Filter", m_open_filter, sizeof(m_open_filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
m_open_filter[0] = '\0';
}
for (auto& univ : m_universes) for (auto& univ : m_universes)
{ {
if ((m_open_filter[0] == '\0' || stristr(univ.data, m_open_filter)) && ImGui::MenuItem(univ.data)) if ((m_open_filter[0] == '\0' || stristr(univ.data, m_open_filter)) && ImGui::MenuItem(univ.data))
@ -1796,8 +1807,12 @@ struct StudioAppImpl final : StudioApp
if (ImGui::Begin(ICON_FA_STREAM "Hierarchy##hierarchy", &m_is_entity_list_open)) if (ImGui::Begin(ICON_FA_STREAM "Hierarchy##hierarchy", &m_is_entity_list_open))
{ {
auto* universe = m_editor->getUniverse(); auto* universe = m_editor->getUniverse();
ImGui::SetNextItemWidth(-1); ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", filter, sizeof(filter)); ImGui::InputTextWithHint("##filter", "Filter", filter, sizeof(filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
filter[0] = '\0';
}
if (ImGui::BeginChild("entities")) if (ImGui::BeginChild("entities"))
{ {

View file

@ -1334,7 +1334,13 @@ void TerrainEditor::onGUI()
static char filter[100] = {0}; static char filter[100] = {0};
static ImVec2 size(-1, 100); static ImVec2 size(-1, 100);
ImGui::SetNextItemWidth(-20);
ImGui::InputTextWithHint("##filter", "Filter", filter, sizeof(filter)); ImGui::InputTextWithHint("##filter", "Filter", filter, sizeof(filter));
ImGui::SameLine();
if (ImGuiEx::IconButton(ICON_FA_TIMES, "Clear filter")) {
filter[0] = '\0';
}
if (ImGui::ListBoxHeader("Prefabs", size)) { if (ImGui::ListBoxHeader("Prefabs", size)) {
auto& resources = m_app.getAssetCompiler().lockResources(); auto& resources = m_app.getAssetCompiler().lockResources();
u32 count = 0; u32 count = 0;