OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 02 Декабрь, 2022 02:06

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: #051 возможность скрывать меню
СообщениеДобавлено: Воскресенье, 13 Февраль, 2022 21:43 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3272
Так как в репозитории сосуществуют конкурирующие меню для плиточной и 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;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: #051 возможность скрывать меню
СообщениеДобавлено: Четверг, 24 Март, 2022 14:12 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3272
В связи с обнаружением такой супер универсальной функциональности 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')"



Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2022, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB