Горячие клавиши

Автор Тема: Горячие клавиши  (Прочитано 6964 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Горячие клавиши
« : 17-06-2016, 14:57:17 »
Всем привет. Мой плагин не использует файла cui и при загрузке в автокад строит ленту программно. Лично мне этот вариант максимально импонирует. Но вот загвоздка - пользователи просят иметь возможность задавать горячие клавиши для функций. В связи с этим у меня два вопроса:
1. Возможно-ли задавать для функций горячие клавиши программно?
2. Если да, то как обстоят дела с тем, что такое сочетание клавиш уже может быть использовано?

Вопрос конечно нубский, но просто такое дело - я лично никогда не пользовался и не буду горячими клавишами. Поэтому по этой теме вообще не обладаю информацией

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Горячие клавиши
« Ответ #1 : 17-06-2016, 15:04:02 »
Мой плагин не использует файла cui и при загрузке в автокад строит ленту программно. Лично мне этот вариант максимально импонирует. Но вот загвоздка - пользователи просят иметь возможность задавать горячие клавиши для функций.
Что будешь делать, когда попросят возможность редактировать интерфейс (изменять состав и положение контента риббонов, туллбаров и меню) и чтобы внесённые ими изменения не исчезали в последующих сессиях акада?

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Горячие клавиши
« Ответ #2 : 17-06-2016, 15:06:38 »
Что будешь делать, когда попросят возможность редактировать интерфейс (изменять состав и положение контента риббонов, туллбаров и меню) и чтобы внесённые ими изменения не исчезали в последующих сессиях акада?
Это уже все реализовано


Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Горячие клавиши
« Ответ #3 : 17-06-2016, 15:15:38 »
Смотрится симпатично, но к сожалению ни о чём мне не говорит по части позиционирования элементов на экране... Т.е. позиционирование различных Toolbar, место вставки твоих Ribbons и меню по отношению к Ribbons и меню, уже имеющимся в AutoCAD тобою предусмотрено? На скрине этот момент я не могу распознать.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Горячие клавиши
« Ответ #4 : 17-06-2016, 15:31:17 »
Андрей Бушман, то, что реализовано у меня позволяет:
1. Создавать панели (RibbonPanel) внутри ToolBar. Соответсвенно и их позиционировать
2. Располагать кнопки в этих панелях
3. Задавать варианты размеров кнопок - большая или малая. В случае большой - можно добавлять другие кнопки "в нее". Т.е. делать SplitButton
Место вставки моего панели внутри ленты (по отношению к другим панелям) не предусматривается. Панель всегда строится последней
Соответственно и нет возможности добавления родных команд автокада в мою панель.

Однако не стоит забывать, что в моем случае вид ленты еще зависит от того, какие функции установил пользователь, а какие нет. Реализовать это, программно обрабатывая файл cui тоже задачка не из простых

В общем - конечно много ограничений по отношению к файлу cui, НО - мы как-то это уже обсуждали в другой теме и тогда я написал, что выбрал этот вариант и остановился на нем. Меня устраивает, да и пока-что никто не был против.
В любом случае прогресс никогда не стоит на месте и возможно когда-нибудь я сделаю интеграцию и обычного cui файла... Может быть

Да и ушли мы от вопроса темы ))

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Горячие клавиши
« Ответ #5 : 17-06-2016, 15:36:18 »
1. Создавать панели (RibbonPanel) внутри ToolBar.
Я писал о тех Toolbar, которые используются вместо Ribbon в Classic Workspace.
Да и ушли мы от вопроса темы ))
ок.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Горячие клавиши
« Ответ #6 : 17-06-2016, 16:23:57 »
1. Возможно-ли задавать для функций горячие клавиши программно?
Попробуй посмотреть в сторону P/Invoke функции RegisterHotKey.
Тут вроде есть примеры: http://stackoverflow.com/questions/2450373/set-global-hotkeys-using-c-sharp
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Горячие клавиши
« Ответ #7 : 17-06-2016, 16:42:43 »
Попробуй посмотреть в сторону P/Invoke функции RegisterHotKey.
Для тех, кто хочет хорошо разобраться с DllImport, .NET-to-COM и COM-to-.NET: существует книга COM and .NET Interoperability (Andrew Troelsen).