Наши партнеры

UnixForum

Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Женатым лучше не смотреть: танец роскошной Татьяны (видео)
Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Танец на выпускном взорвал сеть: смотреть без детей
Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Этот танец невесты оставит вас без слов! Пересмотрела 10 раз!
Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Диалог бабушки и внучки! Такое видео вызывает смех сквозь слезы…
Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Женатым лучше не смотреть: танец роскошной Татьяны (видео)


Библиотека сайта rus-linux.net

Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Диалог бабушки и внучки! Такое видео вызывает смех сквозь слезы…

Audacity

Глава 2 из книги "Архитектура приложений с открытым исходным кодом", том 1.

Оригинал: Audacity, глава из книги "The Architecture of Open Source Applications" том 1.
Автор: James Crook
Перевод: Н.Ромоданов

2.3. Слой ShuttleGui

Решить проблему с запутанным кодом позволил новый класс, ShuttleGui, который существенно сократил число строк кода, необходимого для спецификации диалоговых окон, что сделало код более удобным для чтения. Класс ShuttleGui представляет собой дополнительный слой между библиотекой wxWidgets и Audacity. Его задача заключается в передаче между ними информации. Ниже приведен пример, который, с конце концов, становится элементами графического пользовательского интерфейса, изображенного на рис.2.2.

ShuttleGui S;
// GUI Structure
S.StartStatic("Some Title",…);
{
    S.AddButton("Some Button",…);
    S.TieCheckbox("Some Checkbox",…);
}
S.EndStatic();

Рис.2.2: Пример диалогового окна

В этом коде определяется статическая область в диалоговом окне и область, в которой находится кнопка и чекбокс. Соответствие между кодом и диалоговым окном должно быть очевидным. StartStatic и EndStatic являются парными вызовами. Другими подобными согласованными парами являются StartSomething/EndSomething, которые используются для управления другими элементами компоновки диалогового окна. Фигурные скобки и отступы, которые с ними используются, требуются не для того, чтобы код был правильным. Мы приняли соглашение о том, чтобы их добавлять для того, чтобы сделать более очевидными структуру и особенности согласования парных вызовов. Это действительно упрощает чтение больших примеров.

Показанный исходный код не только создает диалоговое окно. Код, идущий после комментария "//GUI Structure", также можно использовать для обмена данными между диалоговым окном и пользовательскими настройками, запоминаемыми на диске. Ранее для этого пришлось бы писать большой объем кода. В настоящее время этот код пишется только один раз, и скрыт в классе ShuttleGui.

В Audacity есть и другие расширения для базовых виджетов wxWidgets. В Audacity есть свой собственный класс для управления панелями инструментов. Почему не использовать класс панелей инструментов, встроенный в wxWidget? Причина историческая: панели инструментов Audacity были написаны до того, как стал использоваться wxWidgets, в котором предоставлен класс панелей инструментов.


Продолжение статьи: Панель TrackPanel.


Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Диалог бабушки и внучки! Такое видео вызывает смех сквозь слезы…