53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
/*******************************************************************************************
|
|
*
|
|
* raylib-extras [ImGui] example - asset browser
|
|
*
|
|
* This is a more complex ImGui Integration
|
|
* It shows how to build windows on top of 2d and 3d views using a render texture
|
|
*
|
|
* Copyright (c) 2024 Jeffery Myers
|
|
*
|
|
********************************************************************************************/
|
|
|
|
#include "item_view.h"
|
|
|
|
#include "imgui.h"
|
|
#include "imgui_utils.h"
|
|
#include "rlImGuiColors.h"
|
|
#include "raylib.h"
|
|
|
|
extern ImFont* IconFont;
|
|
|
|
ViewableItem* ListItemView::Show(ViewableItemContainer& container)
|
|
{
|
|
ViewableItem* item = container.Reset();
|
|
|
|
ViewableItem* selected = nullptr;
|
|
while (item)
|
|
{
|
|
float x = ImGui::GetCursorPosX();
|
|
|
|
const char* name = TextFormat("###%s", item->Name.c_str());
|
|
if (item->Tint.a > 0)
|
|
ImGui::TextColored(rlImGuiColors::Convert(item->Tint), " %s", item->Icon.c_str());
|
|
else
|
|
ImGui::Text(" %s", item->Icon.c_str());
|
|
|
|
ImGui::SameLine(0, 0);
|
|
ImGui::Text(" %s", item->Name.c_str());
|
|
ImGui::SameLine(0, 0);
|
|
|
|
ImGui::SetCursorPosX(x);
|
|
//ImGui::SetItemAllowOverlap();
|
|
|
|
ImGui::Selectable(name);
|
|
if (ImGui::IsItemHovered() && ImGui::IsMouseDoubleClicked(0))
|
|
{
|
|
selected = item;
|
|
}
|
|
|
|
item = container.Next();
|
|
}
|
|
|
|
return selected;
|
|
} |