Форум НПФ  

Вернуться   Форум НПФ "ТОПОМАТИК" > Программные продукты "Топоматик Robur" на платформе "Robur AP3" > Средства разработки Топоматик Robur > Вопросы и ответы
Ник
Пароль
Регистрация FAQ Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02-14-2022, 15:56
boris3698 boris3698 вне форума
Новичок
 
Регистрация: Nov 2021
Сообщения: 8
По умолчанию Создание собственных лент (ribbon)

Здравствуйте!

Возникли вопросы при работе с ленточным интерфейсом:

1) Как сделать так, чтобы лента отображалась только при условии, что активная модель ЦММ? ( И, если возможно, можете рассказать общий принцип отображения ленты в зависимости от выбранного объекта или окна (план/профиль/ поперечник))

2) Как изменить местоположение "вкладки" относительно других элементов в ленте (см. рисунок)? Необходимо сделать так, чтобы вкладка оказалась в крайнем правом положении (Использование ключа( "priority": 1000) не дало результатов)

3) И за что отвечают цифры в названии картинок в папке "icons" ?(Пример, ic_3dglg_join_contours_16dp_2.5x.png)

Заранее спасибо
Изображения
 

Последний раз редактировалось boris3698, 02-14-2022 в 16:01.
Ответить с цитированием
  #2  
Старый 02-15-2022, 10:34
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

Добрый день!

1. Принцип формирования ленты очень похож на принцип формирования меню и тулбаров через plugin файлы. Для того чтобы сделать отображение ленты в зависимости от активной модели, Вам необходимо прописать флаг, который за это отвечает и использовать его при объявлении ленты. Например, в файле ribbon.plugin в секции "ribbon"->"rbproj" объявлена лента для поверхности. Её появление зависит от переменной"surface", объявленной в секции "variables". Более подробно Вы можете ознакомится с синтаксисом этих файлов здесь, но к сожалению раздел находится в разработке.
Код:
{ "variables": { "readonly_dtm_flag": "$(if,$(viewer),1,$(if,$(hasactivelayer,{407652DD-6CF9-459e-B162-224CAEF0BD6A},0,plan),0,1))", "surface": "$(if,$(readonly_dtm_flag),1,$(if,$(strncasecmp,$(g et_active_model_type),dtm),0,1))", }, "ribbon": { "rbproj": { "items": [ { "group": "surface", "title": "Поверхность", "flags": "$(surface)" } ] } }

Разберём её подробнее. Он использует переменную - "readonly_dtm_flag", которая в свою очередь представляет собой две проверки - вызов системной функции "viewer" и системной функции "hasactivelayer". Переменная "readonly_dtm_flag" принимает значение 0 только в том случае, если программа не находится в режиме просмотра и на окне плана присутствует активный слой поверхности, который не находится в режиме только для чтения. Соответственно переменная "surface" принимает значение 0 только в том случае, если поверхность не находится в режиме только для чтения - это проверка переменной "readonly_dtm_flag" и тип текущей активной модели "dtm" - то есть модель поверхности - это поверка результата функции "get_active_model_type".
2. На текущий момент изменить положение вкладки Вы не можете. Это связано с техническим особенностями реализации ленты. В будущем мы предусмотрим такую возможность.
3. Цифры в названии иконок отвечают за размер и масштаб. Фактически возможны следующие комбинации - размер 16dp - маленькая иконка (например иконка на тулбаре), 32dp - большая иконка (например иконка на большой кнопке ленты). Масштабы 1.0, 1.5, 2.0, 2.5, 3.0 - масштабы предназначены для мониторов с высокой чёткости, чем выше чёткость - тем более крупный масштаб будет использоваться. Если программа не найдёт иконку нужного масштаба или размера - она попытается использовать иконку 16dp масштаб 1.0 или просто без масштаба и выведет в список ошибок предупреждение об отсутствии.
Ответить с цитированием
  #3  
Старый 02-15-2022, 11:40
boris3698 boris3698 вне форума
Новичок
 
Регистрация: Nov 2021
Сообщения: 8
По умолчанию

Большое спасибо, всё получилось! Единственное - в функции "get_active_model_type" есть лишний пробел
Ответить с цитированием
  #4  
Старый 02-24-2022, 16:35
boris3698 boris3698 вне форума
Новичок
 
Регистрация: Nov 2021
Сообщения: 8
По умолчанию Отличающаяся иконка для кнопки на ленте

Здравствуйте!

Подскажите пожалуйста, как сделать так, чтобы кнопка "button" имела отличную, от прописанной в разделе "actions" иконку? Добавление пары "icon": "Новая иконка" не дало результатов. Пришлось делать на эту же команду отдельный action.

Заранее спасибо.
Ответить с цитированием
  #5  
Старый 02-24-2022, 16:55
Василий Гончаров Василий Гончаров вне форума
Разработчик Robur
 
Регистрация: Oct 2016
Сообщения: 154
По умолчанию

Добрый день!

Так сделать нельзя - Вам необходимо прописать отдельный action с новой иконкой и использовать его в Вашей кнопке. Это сделано для унификации - чтобы для одинаковых команд иконка всегда и везде была одна и та же.
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 2:54.

Навигация по основному сайту
Главная Каталог продуктов и услуг Где купить Сопровождение
Вакансии О компании Обзоры Канал на YouTube

vBulletin v3.0.7 , Copyright ©2000-2022, Jelsoft Enterprises Ltd.
Copyright © 2003-2022, НПФ "ТОПОМАТИК".