OberonCore https://forum.oberoncore.ru/ |
|
#051 возможность скрывать меню https://forum.oberoncore.ru/viewtopic.php?f=134&t=6831 |
Страница 1 из 1 |
Автор: | Иван Денисов [ Воскресенье, 13 Февраль, 2022 21:43 ] |
Заголовок сообщения: | #051 возможность скрывать меню |
Так как в репозитории сосуществуют конкурирующие меню для плиточной и MDI версии, а также в силу необходимости для разных воркспейсов влключать и выключать некоторые меню, предложен и добавлен следующий код в StdMenuTool. Код: PROCEDURE HideMenu* (IN name: ARRAY OF CHAR);
VAR hm, tmp: HiddenMenu; BEGIN NEW(hm); hm.name := name$; IF hiddenList = NIL THEN hiddenList := hm ELSE tmp := hiddenList; WHILE tmp.next # NIL DO tmp := tmp.next END; tmp.next := hm END END HideMenu; PROCEDURE UnhideMenu* (IN name: ARRAY OF CHAR); VAR hm, tmp: HiddenMenu; BEGIN IF hiddenList # NIL THEN WHILE (hiddenList # NIL) & (hiddenList.name = name) DO hiddenList := hiddenList.next END; IF hiddenList # NIL THEN tmp := hiddenList; WHILE tmp.next # NIL DO IF tmp.next.name = name THEN tmp.next := tmp.next.next END; tmp := tmp.next END END END END UnhideMenu; PROCEDURE IsMenuHidden* (IN name: ARRAY OF CHAR): BOOLEAN; VAR tmp: HiddenMenu; res: BOOLEAN; BEGIN res := FALSE; tmp := hiddenList; WHILE tmp # NIL DO IF tmp.name = name THEN res := TRUE END; tmp := tmp.next END; RETURN res END IsMenuHidden; |
Автор: | Иван Денисов [ Четверг, 24 Март, 2022 14:12 ] |
Заголовок сообщения: | Re: #051 возможность скрывать меню |
В связи с обнаружением такой супер универсальной функциональности StdMenuTool.UpdateFromText вопрос снимается с повестки. Желающие могут писать свои фильтры по объединению файлов меню, и передавать результат в эту процедуру самостоятельно. Просто замечательная новость. ББ не перестаёт радовать продуманностью деталей. Код: MODULE TestMenus;
IMPORT Files, Views, StdMenuTool, TextModels, TextViews; PROCEDURE LoadFromFile* (path, name: ARRAY OF CHAR); VAR text: TextModels.Model; view: Views.View; BEGIN view := Views.OldView(Files.dir.This(path), name$); WITH view: TextViews.View DO StdMenuTool.UpdateFromText(view.ThisModel()) ELSE END END LoadFromFile; END TestMenus. "TestMenus.LoadFromFile('Mod/Rsrc/ME', 'Menus_MOD.odc')" "TestMenus.LoadFromFile('Mod/Rsrc/ME', 'Menus_SIM.odc')" "TestMenus.LoadFromFile('System/Rsrc', 'Menus.odc')" |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |