AIMP Forum

Разное => Архив / Archive => SkinEditor, SkinEngine (archive) => Topic started by: Zigar on April 14, 2013, 17:51:28

Title: [есть решение] Автоматическое закрытие одного окна при открытии второго
Post by: Zigar on April 14, 2013, 17:51:28
Есть два окошка: окно №01 и окно №02, можно сделать так чтобы окно №01 автоматически закрывалось (если оно открыто) когда открывается окно №02 (и наоборот)?
Title: Re: Закрытие одного окна при открытии второго
Post by: Hayo Tee on April 14, 2013, 19:12:50
Нужно привязать окно N1 с N2 с Visibility: Value=0
Title: Re: Закрытие одного окна при открытии второго
Post by: Zigar on April 14, 2013, 20:04:36
Нужно привязать окно N1 с N2 с Visibility: Value=0
Так получается переключение между окнами и их нельзя закрыть, не совсем то что мне нужно. Поясню:
Есть два окна, каждое открывается\закрывается своей кнопкой. Если например открыто окно №1 мне надо чтобы нажав на кнопку открытие\закрытие окна №2 первое закрылось автоматом. Соответственно повторное нажатие на кнопку открытие\закрытие окна №2 должно его закрыть. Можно так сделать с окнами?
Title: Re: Закрытие одного окна при открытии второго
Post by: Hayo Tee on April 14, 2013, 21:24:04
Так получается переключение между окнами и их нельзя закрыть, не совсем то что мне нужно. Поясню:
Есть два окна, каждое открывается\закрывается своей кнопкой. Если например открыто окно №1 мне надо чтобы нажав на кнопку открытие\закрытие окна №2 первое закрылось автоматом. Соответственно повторное нажатие на кнопку открытие\закрытие окна №2 должно его закрыть. Можно так сделать с окнами?
Я точно такое сделал. Привязал №1 к №2, а №2 к №1. Если имеешь виду вид как на обложке Loreen, то так получается.
Title: Re: Закрытие одного окна при открытии второго
Post by: Zigar on April 14, 2013, 22:20:48
Я точно такое сделал. Привязал №1 к №2, а №2 к №1. Если имеешь виду вид как на обложке Loreen, то так получается.
У тебя я так понял многостраничная группа , а у меня окна типа EQ. Не знаю есть ли разница.
Title: Re: Закрытие одного окна при открытии второго
Post by: Hayo Tee on April 15, 2013, 16:06:01
В этой обложке я не пользовалься с многостраничними группамы...
Title: Re: Автоматическое закрытие одного окна при открытии второго
Post by: Tarik on May 14, 2013, 00:56:42
Сделал тестовый проект, у которого есть два дополнительных окна: эквалайзер (правое окно) и некое левое окно (сделал так по большей части для наглядности, практическое применение может быть в случае открытия двух окон с одной стороны, чтобы не накладывались текстуры/тени).
Каждое окно вызывается кнопкой-переключателем на главном окне, у каждого окна есть своя кнопка закрытия.

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=40086.0;attach=36874)

Чтобы реализовать возможность автоматического закрытия одного окна при открытии второго, нужно их связать через общий промежуточный провайдер-счетчик, в зависимости от состояния которого оба окна будут либо закрыты, либо будет открыто первое или второе окно.
В нашем счетчике будет хранится значение от 0 до 2:
0 - оба окна закрыты;
1 - открыт эквалайзер;
2 - открыто левое окно.
Наша задача - настроить связи всех кнопок открытия/закрытия окон, а также связи самих окон через пользовательский провайдер.

1) Создаем пользовательский провайдер-счетчик (Пользовательские провайдеры - Создать - LogicalOperatorCounter), я его назвал WindowsController.
2) В параметрах нашего провайдера указываем значение модуля (количество значений) = 3 (3 варианта отображения окон, как было указано выше).
3) Добавляем в скин дополнительное окно, прикрепляем его куда нужно (в моем примере - слева от главного окна, чтобы наглядней было).
4) Добавляем кнопки-переключатели для открытия наших окон.

5) Настраиваем связи (для каждого элемента нужно добавить наш провайдер WindowsController):
Как видите, все действия происходят через промежуточный провайдер, что позволяет гибко управлять окнами в нашем скине. По этой аналогии можно управлять больше, чем двумя окнами, но каждую группу окон нужно связывать через отдельный счетчик.

Замечание: для наших окошек параметр InitialVisible желательно должен быть false (иначе могут быть косяки при первом применении скина)!
Актуально для AIMP / AIMPSE v3.50 RC1+
Title: Re: [есть решение] Автоматическое закрытие одного окна при открытии второго
Post by: Zigar on May 14, 2013, 13:34:43
Отлично, все работает так как я хотел. Спасибо большое! (Раздвигает границы изучения SE).