JSplitter v2.7.2.1 / v3.5.2-p5 [29.11.2021]

Список разделов Аудиоплеер foobar2000 Плагины

Описание: Все о плагинах, компонентах, расширениях

Сообщение #1 LUR » 21.03.2018, 06:06

Плагин представляет собой панель, совмещающую функциональность сплиттера (контейнера для панелей других плагинов) и хоста скриптов JavaScript.

Особенности функционала:

1. Панели добавляются в сплиттер в произвольном порядке, где с ними можно работать как с обычными окнами Windows, а именно: перемещать, изменять их размер, сворачивать, разворачивать, закрывать. Т.е. при работе с плагином foobar2000 превращается в приложение с MDI интерфейсом (Multi Document Interface). Для точного позиционирования панелей предусмотрено отображение координат и их редактирование "на лету" в заголовке окна панели (полезно при дизайне интерфейса сборки). Также имеется возможность настраивать цвета и шрифт заголовка окон панелей.
Функциональность сплиттера работает как в DUI, так и в CUI.

1.PNG


2. Поддерживается управление размещением панелей в сплиттере через стандартный "размещатель" Columns UI.
3. В основе хоста скриптов лежит JScript Panel / Spider Monkey Panel, соответственно имеет все возможности данных панелей + дополнительные расширения API, касающиеся сплиттера.
4. Поддерживается управление панелями в сплиттере из скриптов. Возможно программно перемещать, скрывать, изменять размер панелей.
5. Имеется специальное API для быстрого создания кнопок в корне панели и обработки их нажатия.

Итог: по своей задумке функционала повторяет Mega Panel Splitter, но с приятными дополнениями в виде ручного управления перемещением панелей и простого API для создания кнопок. Ну а еще может кому-то просто понравится использовать foobar2000 в виде MDI приложения, кто знает.

Дисклеймер:
Практически каждая новая версия JSplitter основывается на очередной версии JScript Panel / Spider Monkey Panel, поэтому несет все изменения, задуманные автором. Если вы заметили какие-либо изменения в работе своих скриптов, то обратитесь к странице релиза JScript Panel / Spider Monkey Panel, где автор всегда указывает изменения, способные повлиять на существующий код.

СКАЧАТЬ v2.7.2.1 ====================> на основе JScriprt Panel v2.7.2.1
АНГЛИЙСКАЯ ВЕРСИЯ
РУССКАЯ ВЕРСИЯ
ЗЕРКАЛО
АНГЛИЙСКАЯ ВЕРСИЯ
РУССКАЯ ВЕРСИЯ

СКАЧАТЬ v3.5.2-p5 ====================> на основе Spider Monkey Panel v1.5.2
АНГЛИЙСКАЯ ВЕРСИЯ
РУССКАЯ ВЕРСИЯ
ЗЕРКАЛО
АНГЛИЙСКАЯ ВЕРСИЯ
РУССКАЯ ВЕРСИЯ

Краткое руководство
Для добавления панелей в сплиттер можно воспользоваться 2-мя способами:

1. С помощью контекстного меню панели плагина:

2.PNG
2.PNG (7.04 КБ) Просмотров: 77662


2. С помощью стандартного размещателя Columns UI:

4.PNG


3. С помощью списка панелей, вызываемого из окна конфигурации скрипта. Список панелей можно также использовать для добавления, удаления, переупорядочивания панелей, а также изменения их положения и размеров вручную (двойной щелчок по соответствующему полю):

Снимок.PNG


Все добавляемые панели можно вручную перемещать, изменять их размер, сворачивать, разворачивать, закрывать. У каждого окна в заголовке имеется меню для настройки некоторых опций:

3.PNG


ВНИМАНИЕ! Порядок размещения панелей в сплиттере зависит от глубины их визуального расположения. Самое верхнее окно будет последним в списке. Если вы активируете мышкой какую-либо панель, она переместится в конец списка. Учитываете это при использовании функции GetPanelByIndex (см. ниже).

Show caption - включает/отключает отображение обрамления (бордюра) окна панели
Locked - заблокировать панель. С установленной галочкой окно не реагирует на попытки переместить/изменить/закрыть окно.
Show coords - отобразить координаты. В заголовке окна будут отображены координаты окна, которые будут обновляться по мере перемещения/изменения размера окна.
Support pseudo transparency - некоторым окнам необходима поддержка "прозрачности". С включенной опцией плагин будет заменять фон окна панели на содержимое корневого окна плагина. Т.е. например все, что нарисовано в скрипте с помощью on_paint(gr) будет скопировано в окно.

В режиме отображения координат можно вводить необходимые координаты вручную кликнув по нужной координате или изменить название панели:

7.PNG


Настройки внешнего вида окон панелей расположены здесь:

8.png


Show tools menu for panels' caption - включает/отключает меню для заголовка окон панелей.
Move panels with middle button - позволяет перемещать панели при помощи средней кнопки мыши. Полезно когда бордюр окна скрыт (меню Show caption).
Align panels to edges of each other when dragging - выравнивать панели по краям друг друга при перетаскивании окошек. Полезно при построении интерфейса сборки, где панели должны быть расположены плотно друг к другу.
Show scrollbars for out-of-view panels - экспериментальная функция показа полос прокрутки, если панели выходят из зоны видимости. Прокручиваются только панели, содержимое отрисованного окна не меняется и не скроллится.
Hide panels on close - скрывать окна вместо их закрытия. Полезно для временного скрытия панели с помощью кнопки закрытия окна. Вернуть обратно окна можно в размещателе Columns UI сняв галочку Hidden с панели (или из "списка панелей" см. выше):

6.PNG



Программный интерфейс
Базовое API всегда зависит от плагина, на котором основана текущая версия JSplitter. Документация к плагину прилагается. Плюс к этому доступны следующие дополнения для объекта window:

window.GetPanel(caption) - получить объект для доступа к панели по тексту заголовка. Будет возвращена первая панель, совпавшая по тексту с аргументом. Текст панели указывается в заголовке. По умолчанию он имеет значение имени плагина панели, но его можно изменить как напрямую в заголовке окна (Show coords -> Click in caption text), так и в размещателе Columns UI (Use custom title)
window.GetPanelByIndex(index) - получить объект для доступа к панели по индексу. Вообще порядок изначально тот, в котором добавляются панели, но так же порядок можно увидеть в размещателе Columns UI, там же его и изменить.
window.CreateButton(x, y, images, hover_images) - создать кнопку в сплиттере. Кнопка будет создана в корне окна и будет размещена по координатам (x, y). Также функции передаются изображения для задания внешнего вида кнопки. Собственно от количества изображений images, переданных функции, будет зависеть количество состояний, которые может принимать кнопка. hover_images - изображения кнопки, отображающиеся при наведении курсора мыши. Функция достаточно гибкая для создания различного вида кнопок, например:
var path = fb.FoobarPath + "themes\\lur\\black\\bio.png";
var hpath = fb.FoobarPath + "themes\\lur\\black\\bio_on.png";
var a = window.CreateButton(0, 0, path, hpath); - создает обычную кнопку с картинкой bio.png, которая меняется на bio_on.png при наведении курсора мыши
var b = window.CreateButton(0, 0, [path, hpath], null); - создает чекбокс-кнопку. Обычное состояние - bio.png, нажатое (галочка установлена) - bio_on.png. Обратите внимание, что изображения для наведения курсора отсутствуют. Обычно чекбоксам они и не нужны, но можно их установить при желании.
var c = window.CreateButton(0, 0, [path1, path2, path3], [path1_on, path2_on, path3_on]); - можно создать кнопку с тремя (и более) состояниями. Они будут циклически переключаться при нажатии. Текущее состояние кнопки можно будет получить с помощью свойства кнопки State (см. ниже).
Также можно создать группу радио-кнопок (взаимоисключающих) с помощью следующей функции:
window.RadioButtons(buttons) - создает группу радио-кнопок. Принимает в качестве аргумента массив кнопок. Каждая кнопка должна иметь не менее двух состояний, иначе функция свалится. Пример:
var a = window.CreateButton(0, 0, [path, hpath], null);
var b = window.CreateButton(30, 0, [path, hpath], null);
window.RadioButtons([a, b]);
Теперь при нажатии на одну кнопку (состояние 1), другая будет "отключаться" (переходить в состояние 0) и наоборот.
window.GetButton(id) - получить кнопку по значению ее идентификатора (Button.ID)
window.RemoveButton(button) - удаляет кнопку
window.HandOnButtons - переключает курсор мыши для всех кнопок либо на руку, либо на стрелку. Данное свойство также действует на все создаваемые впоследствии кнопки. У каждой кнопки это свойство можно менять индивидуально (см. ниже).

Введены вспомогательные методы для управления главным окном плеера.
window.FoobarWindowX - возвращает и устанавливает положение главного окна foobar2000 по оси X.
window.FoobarWindowY - возвращает и устанавливает положение главного окна foobar2000 по оси Y.
window.FoobarWindowWidth - возвращает и устанавливает ширину главного окна foobar2000.
window.FoobarWindowHeight - возвращает и устанавливает высоту главного окна foobar2000.

Так как JSplitter не получает никакой информации о передвижении мыши над панелями самих плагинов, но иногда это требуется, то введено API для получения данных событий. Перед использованием данного API его необходимо явно разрешить в настройках JSplitter (опция "Track mouse over panels (for on_panel_mouse_*)"/"Отслеживать мышь над панелями (для on_panel_mouse_*)").
window.TrackMouseEnterLeaveOnPanels = true; - включает отслеживание входа/выхода курсора мыши из области панелей. По умолчанию отключено. Для обработки событий используются следующие функции:
on_panel_mouse_enter(name) - событие входа курсора в область панели, name - имя панели
on_panel_mouse_leave(name) - событие выхода курсора из области панели, name - имя панели
window.TrackMouseMoveOnPanels = true; - включает отслеживание позиции курсора мыши в пределах области панели. По умолчанию отключено. Для обработки события используется следующая функция:
on_panel_mouse_move(name, x, y, mask) - событие перемещения курсора в пределах области панели, name - имя панели, x,y - координаты точки на панели

Объекты, получаемые при помощи функций, указанных выше, имеют следующие свойства и методы:

ПАНЕЛИ (GetPanel, GetPanelByIndex)
Свойства:
(readonly) String Name;
(read, write) String Text;
(read, write) boolean Hidden;
(read, write) boolean Locked;
(read, write) boolean ShowCaption;
(read, write) boolean SupportPseudoTransparency;
(read, write) int X;
(read, write) int Y;
(read, write) int Width;
(read, write) int Height;
(read, write) boolean TopMost;
(read, write) boolean EraseBackground;
Методы:
void Show(show = true);
void Move(x, y, width, height, repaintParent = false);

КНОПКИ (CreateButton, GetButton)
Свойства:
(readonly) ushort ID;
(read, write) int X;
(read, write) int Y;
(read, write) int Width;
(read, write) int Height;
(read, write) boolean Hidden;
(read, write) boolean HandOnHover;
(writeonly) Function Click;
(read, write) uint State;
Методы:
void Show(show = true);
void Move(x, y);
void Resize(width, height);

Назначение свойств и методов объектов довольно прозрачно. При назначении ширины или высоты кнопки в ноль, ширина и высота автоматически высчитываются (как и просто при создании кнопки) из максимальной ширины и высоты изображений. Отдельного упоминания заслуживает обработка нажатий кнопок. Она осуществляется 2-мя
путями:

1. При помощи задания свойства Click объекта кнопки:
var a = window.CreateButton(0, 0, [path, hpath], null);
a.Click = function() { do_something(); }

2. При помощи специального callback'a, который вызывается при нажатии ВСЕХ кнопок, созданных с помощью window.CreateButton:
function on_button_click(id) - принимает идентификатор кнопки, который можно получить через свойство кнопки ID.
switch(id) {
case a.ID:
do_something();
break;
}


ПРИМЕЧАНИЕ: В отличие от панелей, существующих вне зависимости от скрипта, кнопки создаются только программно с помощью скрипта и всегда уничтожаются при выгрузке скрипта.


Пример конфигурации
Распаковать в папку с чистым портативным фубаром.
СКАЧАТЬ / ЗЕРКАЛО

Пример от zeremy

История версий
Версия 3.5.2-p5 [29.11.2021]
● Добавлена опция в настройках для разрешения использования API отслеживания мыши над панелями (опция "Track mouse over panels (for on_panel_mouse_*)"/"Отслеживать мышь над панелями (для on_panel_mouse_*)")

Версия 2.7.2.1 [29.11.2021]
● JScript Panel 2.7.2.1
● Добавлена опция в настройках для разрешения использования API отслеживания мыши над панелями (опция "Track mouse over panels (for on_panel_mouse_*)"/"Отслеживать мышь над панелями (для on_panel_mouse_*)")

Версия 3.5.2-p4 [24.10.2021]
● Исправлена ошибка появления окна с информацией об отсутствии shared.dll в операционных системах ниже Windows 10

Версия 2.7.2-p2 [24.10.2021]
● Исправлена ошибка появления окна с информацией об отсутствии shared.dll в операционных системах ниже Windows 10

Версия 2.7.2-p1 [14.10.2021]
● Исправлено зависание плеера при установке псевдопрозрачности для дочерней панели JSplitter

Версия 3.5.2-p3 [25.09.2021]
● Исправления API для отслеживания курсора мыши над панелями плагинов

Версия 2.7.2 [25.09.2021]
● JScript Panel 2.7.2
● Исправления API для отслеживания курсора мыши над панелями плагинов

Версия 2.7.0.1-p2 [21.09.2021]
● Добавлено исправление в работе API для отслеживания курсора мыши над панелями многопоточных плагинов

Версия 3.5.2-p2 [20.09.2021]
● Добавлено API для отслеживания курсора мыши над панелями плагинов

Версия 2.7.0.1-p1 [20.09.2021]
● Добавлено API для отслеживания курсора мыши над панелями плагинов

Версия 2.7.0.1 [18.09.2021]
● JScript Panel 2.7.0.1
● Мелкие фиксы

Версия 3.5.2 [14.09.2021]
● Spider Monkey Panel 1.5.2
Реализована поддержка DUI (Default User Interface)
● Расширено окно управления панелями (добавлены столбцы для скрытия/отображения панели и ее рамки)
● Изменен механизм сворачивания панелей (оконный менеджер плагина)

Версия 2.7.0 [14.09.2021]
● JScript Panel 2.7.0
● Изменен механизм сворачивания панелей (оконный менеджер плагина)

Версия 2.6.2.3 [03.09.2021]
● JScript Panel 2.6.2.3
Реализована поддержка DUI (Default User Interface)
● Расширено окно управления панелями (добавлены столбцы для скрытия/отображения панели и ее рамки)

Версия 3.3.1 [23.07.2020]
● Spider Monkey Panel 1.3.1

Версия 3.3.0 [17.07.2020]
● Spider Monkey Panel 1.3.0

Версия 3.2.4b [07.07.2020]
● Spider Monkey Panel 1.2.4b

Версия 2.3.3.1 [01.12.2019]
● JScript Panel 2.3.3.1
● Немного улучшено окно управления панелями

Версия 2.2.1 [15.03.2019]
● JScript Panel 2.2.1

Версия 2.2.0 [25.01.2019]
● JScript Panel 2.2.0

Версия 2.1.8 [03.01.2019]
● JScript Panel 2.1.8

Версия 2.1.7.1 [26.09.2018]
● JScript Panel 2.1.7.1
● Введены вспомогательные методы для управления главным окном плеера.
window.FoobarWindowX - возвращает и устанавливает положение главного окна foobar2000 по оси X.
window.FoobarWindowY - возвращает и устанавливает положение главного окна foobar2000 по оси Y.
window.FoobarWindowWidth - возвращает и устанавливает ширину главного окна foobar2000.
window.FoobarWindowHeight - возвращает и устанавливает высоту главного окна foobar2000.

Версия 2.1.6.3 / 1.5.10.2 [25.08.2018]
● Улучшена производительность прорисовки панелей: устранено мерцание за счет отключения прорисовки фона панели операционной системой.
● API: добавлено свойство EraseBackground для панелей, указывающее позволять ли операционной системе отрисовывать фон панели. Предназначено для панелей, которые не могут отобразить свой фон самостоятельно. По умолчанию свойство равно false для всех панелей кроме следующих панелей Columns UI: Buttons, Filter Search, Menu, Seekbar, Volume.

Версия 2.1.6.2 [10.08.2018]
● Исправлена работоспособность конфигурации JSplitter в Columns UI Layout (кнопка Configure)
● Мелкие улучшения Panel list
● Убран раздел статистики JScript Panel из свойств трека

Версия 2.1.6.1 [03.08.2018]
● Порядок размещения панелей в сплиттере теперь привязан к глубине их расположения. Самое верхнее окно - последнее в списке.
● Добавлено свойство TopMost для объекта панели. Установка в true переносит панель на самый верх.
● Теперь изображения на кнопках масштабируются при изменении размера кнопок.
● Исправлено падение обработчика Click для кнопок
● Создано окно управления списком панелей для просмотра их размеров и редактирования всех данных на месте. Доступ: правая кнопка мыши на сплиттере -> Изменить скрипт... -> Панели.

Версия 2.1.6.0 [30.07.2018]
● Версия, основанная на JScrpt Panel 2.1.6

Версия 1.5.10.1 [24.05.2018]
● Слегка уменьшено мерцание при перерисовке панелей

Версия 2.1.4.1 [18.05.2018]
● Исправлена ошибка "Load Scintilla failed."

Версия 2.1.4 [17.05.2018]
● Версия, основанная на JScrpt Panel 2.1.4

Версия 1.0.4 [28.03.2018]
● Исправлено: в Windows XP свойства fb.FoobarPath, fb.ProfilePath возвращали пустую строку.
● Изменение API: теперь window.GetPanel принимает в качестве аргумента текст заголовка панели, window.GetPanelByIndex - индекс панели

Версия 1.0.3 [22.03.2018]
● Исправление ошибок функционала выравнивания панелей

Версия 1.0.2 [22.03.2018]
● Исправление ошибок функционала выравнивания панелей

Версия 1.0.1 [21.03.2018]
● Добавлено выравнивание/прилипание панелей по краям друг друга, а также к границам окна самого плагина при перетаскивании (есть опция в настройках)

Версия 1.0 [20.03.2018]
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет


Сообщение #241 asion » 29.07.2021, 16:11

Он будет и дальше обновляться? :rambo:
asion
Репутация: 8
С нами: 7 месяцев 23 дня

Сообщение #242 LUR » 29.07.2021, 17:54

asion:Он будет и дальше обновляться?
Будет, вообще времени нет просто. Там будет "большое" обновление.
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #243 LUR » 03.09.2021, 21:50

Версия 2.6.2.3 [03.09.2021]

● JScript Panel 2.6.2.3
Реализована поддержка DUI (Default User Interface)
● Расширено окно управления панелями (добавлены столбцы для скрытия/отображения панели и ее рамки)

P.S. JSplitter на основе SMP выложу позже после тестов.
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #244 LUR » 14.09.2021, 21:10

Версия 2.7.0 [14.09.2021]

● JScript Panel 2.7.0
● Изменен механизм сворачивания панелей (оконный менеджер плагина)

Добавлено спустя 5 часов 16 минут:
Версия 3.5.2 [14.09.2021]

● Spider Monkey Panel 1.5.2
Реализована поддержка DUI (Default User Interface)
● Расширено окно управления панелями (добавлены столбцы для скрытия/отображения панели и ее рамки)
● Изменен механизм сворачивания панелей (оконный менеджер плагина)
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #245 SergPuh.68 » 15.09.2021, 12:10

Привет.Можно ли при помощи JSplitter v2.7.0 / v3.5.2 [14.09.2021] реализовать что бы при наведении курсора мышки в определённое место например низ экрана всплывала/пряталась определенная панель(PSS) как на видео?Когда foobar2000 например в режиме Full Screen.
phpBB [media]
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #246 asion » 15.09.2021, 17:30

:clap: :clap: :clap:
asion
Репутация: 8
С нами: 7 месяцев 23 дня

Сообщение #247 LUR » 16.09.2021, 14:00

SergPuh.68, вполне. Поставить обработчик mouse_move и проверять вхождение координат в определенную область. Добавить панель в JSplitter, получить ее в коде через window.GetPanel и прятать/показывать через panel.Hidden

Вот простейший пример:

Добавлено спустя 37 минут 50 секунд:
phpBB [media]


Добавлено спустя 4 часа 36 минут:
Я тут поигрался, если что могут быть неприятные нюансы) Например как заставить ее спрятаться если вы перевели курсор не на JSplitter а на другую панель, которая стоит вплотную с этой или вышли за пределы окна фубара - она останется видимой. Так что по факту, чтобы работало хорошо, надо чтобы скрываемая панель была самописной типо тоже JSpltter или JSP/SMP, чтобы обработать событие on_mouse_leave, и тогда ее спрятать.
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #248 SergPuh.68 » 16.09.2021, 19:37

LUR, спасибо.Я как раз пытаюсь решить эту проблему,вернее обнаружил её когда добавил ещё одну панель :nervious:
phpBB [media]

Идея была такая:две панели с кнопками PSS одна сверху другая снизу,между ними панель видео mpv.Если плеер в режиме Во весь экран панели PSS скрыты и вызываются наведением курсора вверх экрана или вниз и соответственно скрываются если курсор убрать.
Подскажите как использовать в JSplitter функции %ps_width%,%ps_height%,$sub(%ps_height%,40) и тд. что то у меня не получается :sad:
2021-09-16_193506.png
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #249 LUR » 16.09.2021, 21:30

SergPuh.68:Я как раз пытаюсь решить эту проблему
Я тоже решил озаботиться такой возможностью, сейчас попробую добавить отслеживание мыши в стиле "вошел/вышел" для других панелей.

SergPuh.68:Подскажите как использовать в JSplitter функции %ps_width%,%ps_height%,$sub(%ps_height%,40) и тд. что то у меня не получается
Ну эти переменные доступны только в PSS. Аналога как такового же в JS нет. Тут надо программировать самому эти моменты. В обработчике on_size() получаем window.Width и window.Height (если JSplitter 2.x) или on_size(width, height) (если JSplitter 3.x) и от них пляшем положение других панелей: panel.Move(x, y, w, h)
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #250 SergPuh.68 » 16.09.2021, 21:53

LUR:В обработчике on_size() получаем window.Width и window.Height (если JSplitter 2.x) или on_size(width, height) (если JSplitter 3.x) и от них пляшем положение других панелей: panel.Move(x, y, w, h)
:eek: :think:
Посмотреть бы где нибудь пример размещения панели я думаю разобрался бы :biggrin:
JSplitter 2.x
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #251 LUR » 16.09.2021, 23:26

SergPuh.68:Посмотреть бы где нибудь пример размещения панели
В шапке лежит комплексный пример (основа моей личной сборки), там комментарии в коде даже есть. Распаковываете в чистый фубар и исследуете. Немного можно заблудиться, но основной код, который вам нужен там в функции on_size() (доступ к скрипту Shift+Win+ПКМ в районе кнопок управления воспроизведения, не на них а рядом)
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #252 SergPuh.68 » 17.09.2021, 10:36

Получилось так:
Код: Выделить всё
var _tp = fb.ProfilePath + "images\\";
var _bgColor = 0xFF141414;
var _ww = 0, _wh = 0;
var _mainViewWidth = 0;
var _sidebarWidth = window.GetProperty("Sidebar width", 1920);

var Top = window.GetPanel("Top");

function on_size() {
   _ww = window.Width;
   _wh = window.Height;
   _mainViewWidth = _ww - _sidebarWidth;
   do_layout();
}

function do_layout() {

   Top.Move(0, 0, _mainViewWidth + 1920, 34);
   Top.Show();
}

function on_mouse_move(x, y, mask) {
   Top.Hidden = y > 34;
}
С шириной панели "Top" определился а вот с высотой не получается,изменяется при изменении высоты окошка плеера. :nervious:
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #253 LUR » 17.09.2021, 15:19

SergPuh.68:а вот с высотой не получается,изменяется при изменении высоты окошка плеера.
Так я вижу вы совсем не понимаете, что тут происходит...
Попробуйте не копировать мой код, а разобраться в том, как он работает. Например, зачем вам переменные _mainViewWidth и _sidebarWidth? У вас что тоже есть боковая панель, размер которой нужно учитывать? Судя по всему у вас ваша панель на всю ширину плеера. А высота так же пляшется от _wh, либо просто _wh, если на всю высоту, или _wh минус там чтото.
Код: Выделить всё
var _ww = 0, _wh = 0;

var Top = window.GetPanel("Top");

function on_size() {
   _ww = window.Width;
   _wh = window.Height;
   do_layout();
}

function do_layout() {
   Top.Move(0, 0, _ww, _wh);
   Top.Show();
}

function on_mouse_move(x, y, mask) {
   Top.Hidden = y > 34;
}

Ну и в do_layout() у вас просто безусловный вызов Top.Show(). Это значит, что при любом изменении размера окна плеера, она появится.
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #254 SergPuh.68 » 17.09.2021, 16:36

LUR, уже намного понятней,спасибо.Разбираюсь :smile:
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #255 SergPuh.68 » 18.09.2021, 13:06

Можно ли сделать что бы этот код работал исключительно когда проигрыватель находится в режиме Во весь экран?В других случаях панели не реагировали бы на курсор мышки?
Код: Выделить всё
function on_mouse_move(x, y, mask) {
    Top.Hidden = y > 34;
   
    Bottom.Hidden = y < _wh - 50;
}
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #256 LUR » 18.09.2021, 13:24

SergPuh.68:когда проигрыватель находится в режиме Во весь экран
Я так понимаю, во весь экран - это функционал плагина UIHacks. Если так, то из кода можно дернуть его свойства:
Код: Выделить всё
var UIHacks = new ActiveXObject("UIHacks");

function on_mouse_move(x, y, mask) {
    if(UIHacks.FullScreen) {
        Top.Hidden = y > 34;   
        Bottom.Hidden = y < _wh - 50;
    }
}
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #257 SergPuh.68 » 18.09.2021, 13:57

LUR, я имел ввиду режим View/Maximize/Restore.А с FullScreen работает :clap:
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #258 LUR » 18.09.2021, 21:33

SergPuh.68:я имел ввиду режим View/Maximize/Restore
В смысле? Вы про это?

Код: Выделить всё
var UIHacks = new ActiveXObject("UIHacks");

var WindowState = {
    Normal: 0,
    Minimized: 1,
    Maximized: 2
};

function on_mouse_move(x, y, mask) {
    if(UIHacks.MainWindowState == WindowState.Maximized) {
        Top.Hidden = y > 34;   
        Bottom.Hidden = y < _wh - 50;
    }
}

Что за режим View/Maximize/Restore?
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #259 SergPuh.68 » 18.09.2021, 21:44

foobar выводится во весь экран кнопкой на PSS с командой command:View/Maximize/Restore
Всё работает и в первом случае и во втором
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #260 LUR » 19.09.2021, 00:23

Версия 3.5.2-p1 [18.09.2021]

● Мелкие фиксы

Версия 2.7.0.1 [18.09.2021]

● JScript Panel 2.7.0.1
● Мелкие фиксы
LUR M
Автор темы, Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Пред.След.

Вернуться в Плагины