Флаги imgui.BeginTabBar

Anti...

Участник
Автор темы
245
19
Версия MoonLoader
.026-beta
Почему не применяются флаги к imgui.BeginTabBar? imgui.BeginTabBar("Tabs", imgui.TabBarFlags.NoTooltip) или imgui.BeginTabBar("Tabs", imgui.TabBarFlags.FittingPolicyScroll). Крашит скрипт attempt to index field 'TabBarFlags' (a nil value). Флаги смотрю на https://pixtur.github.io/mkdocs-for...gs---Enumerations/#flags-for-imguibegintabbar. Может версия имгуи не та и не поддерживает? Сниппет VSC от @chapo показывает imgui.BeginTabBar(constchar*str_id,ImGuiTabBarFlagsflags), значит флаги должны присутствовать(наверное)
 
Решение
Флаги есть, но почему они не работают, или я тупой не так сделал. Но если ImGuiTabBarFlags_FittingPolicyScroll, то значит imgui.BeginTabBar("Tabs", imgui.TabBarFlags.FittingPolicyScroll), но ошибочка attempt to index field 'TabBarFlags' (a nil value)
😅

C++:
enum ImGuiTabBarFlags_
{
    ImGuiTabBarFlags_None = 0,
    ImGuiTabBarFlags_Reorderable = 1 << 0,
    ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1,
    ImGuiTabBarFlags_TabListPopupButton = 1 << 2,
    ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3,
    ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4,
    ImGuiTabBarFlags_NoTooltip = 1 << 5,
    ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6,
    ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7...

Anti...

Участник
Автор темы
245
19
Поищи инфу о TabBarFlags в фацле moonloader/lib/mimgui/cdefs.lua.
функции для сниппета я вроде бы парсил с imgui.h которая лежит на гитхабе, но это не точно
Флаги есть, но почему они не работают, или я тупой не так сделал. Но если ImGuiTabBarFlags_FittingPolicyScroll, то значит imgui.BeginTabBar("Tabs", imgui.TabBarFlags.FittingPolicyScroll), но ошибочка attempt to index field 'TabBarFlags' (a nil value)
😅

C++:
enum ImGuiTabBarFlags_
{
    ImGuiTabBarFlags_None = 0,
    ImGuiTabBarFlags_Reorderable = 1 << 0,
    ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1,
    ImGuiTabBarFlags_TabListPopupButton = 1 << 2,
    ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3,
    ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4,
    ImGuiTabBarFlags_NoTooltip = 1 << 5,
    ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6,
    ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7,
    ImGuiTabBarFlags_FittingPolicyMask_ = ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll,
    ImGuiTabBarFlags_FittingPolicyDefault_ = ImGuiTabBarFlags_FittingPolicyResizeDown
};

Немного начал разбираться. Если флаг установить через нижнее подчеркивание: не imgui.TabBarFlags.Reorderable, а imgui.TabBarFlags_Reorderable, то скрипт уже не крашит, но флаги не работают. В данном случае imgui.TabBarFlags_Reorderable - позволяет вручную перетаскивать вкладки, чтобы изменить их порядок + новые вкладки добавляются в конец списка.
 
Последнее редактирование:

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,777
11,224
Флаги есть, но почему они не работают, или я тупой не так сделал. Но если ImGuiTabBarFlags_FittingPolicyScroll, то значит imgui.BeginTabBar("Tabs", imgui.TabBarFlags.FittingPolicyScroll), но ошибочка attempt to index field 'TabBarFlags' (a nil value)
😅

C++:
enum ImGuiTabBarFlags_
{
    ImGuiTabBarFlags_None = 0,
    ImGuiTabBarFlags_Reorderable = 1 << 0,
    ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1,
    ImGuiTabBarFlags_TabListPopupButton = 1 << 2,
    ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3,
    ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4,
    ImGuiTabBarFlags_NoTooltip = 1 << 5,
    ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6,
    ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7,
    ImGuiTabBarFlags_FittingPolicyMask_ = ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll,
    ImGuiTabBarFlags_FittingPolicyDefault_ = ImGuiTabBarFlags_FittingPolicyResizeDown
};
Действительно странно, в init.lua есть почти все флаги кроме флагов для таб баров
Lua:
--- API ---
mimgui._VERSION = '1.7.1'
mimgui.DisableInput = false

mimgui.ComboFlags = ImGuiEnum('ImGuiComboFlags_')
mimgui.Dir = ImGuiEnum('ImGuiDir_')
mimgui.ColorEditFlags = ImGuiEnum('ImGuiColorEditFlags_')
mimgui.Col = ImGuiEnum('ImGuiCol_')
mimgui.WindowFlags = ImGuiEnum('ImGuiWindowFlags_')
mimgui.NavInput = ImGuiEnum('ImGuiNavInput_')
mimgui.FocusedFlags = ImGuiEnum('ImGuiFocusedFlags_')
mimgui.Cond = ImGuiEnum('ImGuiCond_')
mimgui.BackendFlags = ImGuiEnum('ImGuiBackendFlags_')
mimgui.TreeNodeFlags = ImGuiEnum('ImGuiTreeNodeFlags_')
mimgui.StyleVar = ImGuiEnum('ImGuiStyleVar_')
mimgui.DrawCornerFlags = ImGuiEnum('ImDrawCornerFlags_')
mimgui.DragDropFlags = ImGuiEnum('ImGuiDragDropFlags_')
mimgui.SelectableFlags = ImGuiEnum('ImGuiSelectableFlags_')
mimgui.InputTextFlags = ImGuiEnum('ImGuiInputTextFlags_')
mimgui.MouseCursor = ImGuiEnum('ImGuiMouseCursor_')
mimgui.FontAtlasFlags = ImGuiEnum('ImFontAtlasFlags_')
mimgui.HoveredFlags = ImGuiEnum('ImGuiHoveredFlags_')
mimgui.ConfigFlags = ImGuiEnum('ImGuiConfigFlags_')
mimgui.DrawListFlags = ImGuiEnum('ImDrawListFlags_')
mimgui.DataType = ImGuiEnum('ImGuiDataType_')
mimgui.Key = ImGuiEnum('ImGuiKey_')
Можешь попробовать скопировать функцию ImGuiEnum к себе в скрипт и вызвать ее вписав туда флагм таббаров, но не уверен что это сработает
 
  • Нравится
Реакции: Anti...

Anti...

Участник
Автор темы
245
19
Действительно странно, в init.lua есть почти все флаги кроме флагов для таб баров
Lua:
--- API ---
mimgui._VERSION = '1.7.1'
mimgui.DisableInput = false

mimgui.ComboFlags = ImGuiEnum('ImGuiComboFlags_')
mimgui.Dir = ImGuiEnum('ImGuiDir_')
mimgui.ColorEditFlags = ImGuiEnum('ImGuiColorEditFlags_')
mimgui.Col = ImGuiEnum('ImGuiCol_')
mimgui.WindowFlags = ImGuiEnum('ImGuiWindowFlags_')
mimgui.NavInput = ImGuiEnum('ImGuiNavInput_')
mimgui.FocusedFlags = ImGuiEnum('ImGuiFocusedFlags_')
mimgui.Cond = ImGuiEnum('ImGuiCond_')
mimgui.BackendFlags = ImGuiEnum('ImGuiBackendFlags_')
mimgui.TreeNodeFlags = ImGuiEnum('ImGuiTreeNodeFlags_')
mimgui.StyleVar = ImGuiEnum('ImGuiStyleVar_')
mimgui.DrawCornerFlags = ImGuiEnum('ImDrawCornerFlags_')
mimgui.DragDropFlags = ImGuiEnum('ImGuiDragDropFlags_')
mimgui.SelectableFlags = ImGuiEnum('ImGuiSelectableFlags_')
mimgui.InputTextFlags = ImGuiEnum('ImGuiInputTextFlags_')
mimgui.MouseCursor = ImGuiEnum('ImGuiMouseCursor_')
mimgui.FontAtlasFlags = ImGuiEnum('ImFontAtlasFlags_')
mimgui.HoveredFlags = ImGuiEnum('ImGuiHoveredFlags_')
mimgui.ConfigFlags = ImGuiEnum('ImGuiConfigFlags_')
mimgui.DrawListFlags = ImGuiEnum('ImDrawListFlags_')
mimgui.DataType = ImGuiEnum('ImGuiDataType_')
mimgui.Key = ImGuiEnum('ImGuiKey_')
Можешь попробовать скопировать функцию ImGuiEnum к себе в скрипт и вызвать ее вписав туда флагм таббаров, но не уверен что это сработает
Флаги заработали :), а библиотеку обновить нужно, отсутствуют ImGuiTabBarFlags_ и ImGuiTabItemFlags_. Пытался в init.lua добавить их, не работают что-то

Lua:
mimgui.TabBarFlags = ImGuiEnum('ImGuiTabBarFlags_')
mimgui.TabItemFlags = ImGuiEnum('ImGuiTabItemFlags_')

Так работает всё нормально
Lua:
if imgui.BeginTabBar('Tabs', ImGuiEnum('ImGuiTabBarFlags_').Reorderable) then

function ImGuiEnum(name)
    return setmetatable({__name = name}, {__index = function(t, k)
        return imgui.lib[t.__name .. k]
    end})
end
 
Последнее редактирование: