Oleshe 36 Опубликовано: 15 сентября, 2023 (изменено) local args = {...} print(pcall(function() ... 29 local Project = fs.readTable(fs.removeSlashes(args[1]..'/.Data.dat')) ... 31 local wk, win, menu = System.addWindow(GUI.titledWindow(1,1,160,50,lc.Editor, true)) 32 local contextWindowMenus = menu:addContextMenuItem(lc.createWindows) ... end)) Создал окно, захотел привязать к меню контекст меню, но не получилось. Запускалось через pcall потому-что иначе system fatal error: nil. Не знаю что с этим делать. Должно работать, но не работает. Сам этот файл вызывается из другого файла через loadfile: local Projects = {'/Applications/New project/'} local ChoosedProject = 1 ... loadfile('/Editor.lua')(Projects[ChoosedProject]) ... Изменено 16 сентября, 2023 пользователем Oleshe Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS 1 904 Опубликовано: 16 сентября, 2023 18 часов назад, Oleshe сказал: Запускалось через pcall потому-что иначе system fatal error: nil. В нормальных условиях меню может не вернуться в двух случаях: 1) Когда окно форсированно игнорирует добавление в док и меню, т.е. system.addWindow(window, [addToDockAndMenu = false]). Обычно этот параметр используется для утилитарных окон, например, при ПКМ на файле -> Properties. Но, судя по всему, это не твой случай 2) Когда ты добавляешь окно в воркспейс системы не из Name.app/Main.lua, а из внешнего скрипта, загруженного через loadfile/dofile/readfile - это захардкожено вот тут. Система пытается получить путь к директории приложения, чтобы адекватно визуализировать иконку и имя в доке и в меню, но не может т.к. внешние файлы не считаются приложениями. Поэтому добавление в меню и док скипается Собственно, выход один: добавлять окно в основном скрипте приложения. Ещё было бы разумно доработать анализ пути исполняемого скрипта, чтобы искать последнее вхождение .app/ и не создавать анальных ограничений. Ну или хотя бы кидать ошибку, мол, "ай-ай-ай, так нельзя". Но лень хд Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Oleshe Автор вопроса 36 Опубликовано: 16 сентября, 2023 9 часов назад, ECS сказал: Name.app/Main.lua, Main.lua Editor.lua 30 local wk, win, menu = table.unpack(args[2]) 31 print(win, menu) -- Показывает только окно 32 contextWindowMenus = menu:addContextMenuItem(lc.createWindows) Та-же ошибка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS 1 904 Опубликовано: 16 сентября, 2023 Ну, тогда смерть. Можешь попробовать "ПКМ - создать приложение", система сгенерит шаблонный .app, где как раз реализована поддержка меню. Если оно там будет работать - то ищи ошибку у себя, а если нет - надо думать дальше. Без фулл сырцов трудно что-то сказать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Oleshe Автор вопроса 36 Опубликовано: 17 сентября, 2023 Ладно, свою ошибку я так и не понял. Моё решение: win:resize(160,50) -- Итоговый размер окна win.titleLabel.text = lc.LabelEditor -- Имя окна winMask:remove() -- Контейнер для тех элементов которые участвовали в первой части программы, --потому-что если мы удалим чайлды win(основное окно) то оно --удалит ваще всё и оставит прозрачный полиэтиленовый пакет, а строить окно заново мне не очень хочеться. --Проще было-б его пересоздать, но мы выяснели ранее что не можем так сделать( win.localX = 1 -- В моём случаи длинна 160, поетому шоб оно влезно на фулскрин ставим его в начало экрана win.localY = 1 -- Так-же и с высотой itemSettings:remove() -- Шляпа привязанная к menu. Причина почему не removeChildren и почему отдульно каждый --элемент: таже что и с окном loadfile(hubPath..'/Editor.lua')(Projects[ChoosedProject], {wk,win,menu}) -- Ну и грузим его. Сам едит тот-же Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Создал окно, захотел привязать к меню контекст меню, но не получилось. Запускалось через pcall потому-что иначе system fatal error: nil.
Не знаю что с этим делать. Должно работать, но не работает. Сам этот файл вызывается из другого файла через loadfile:
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах