JSplitter v2.8.8 / v3.6.1.10 [05.10.2024]

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

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

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

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

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

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

1.PNG


2. Поддерживается управление размещением панелей в сплиттере через стандартный "размещатель" Columns UI. Также поддерживается в DUI то, что похоже на его стандартные сплиттеры, что поддерживается теперь самим автором.
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.8.8 ====================> на основе JScriprt Panel v2.8.8
АНГЛИЙСКАЯ ВЕРСИЯ
РУССКАЯ ВЕРСИЯ
ЗЕРКАЛО
АНГЛИЙСКАЯ ВЕРСИЯ
РУССКАЯ ВЕРСИЯ

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

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

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

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


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

4.PNG


3. С помощью списка панелей, вызываемого из контекстного меню плагина:

10.png
10.png (8 КБ) Просмотров: 16239


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

Снимок.PNG


4. В стандартном режиме редактирования разметки (Default UI / Columns UI)

9.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.6.1.10 [05.10.2024]
● При переключении тем DUI, включающих в состав себя панель JSplitter, не выполнялось обновление корневого окна.

Версия 3.6.1.9 [04.10.2024]
● При импорте темы DUI, включающей в состав себя панель JSplitter, дополнительно выполнялся скрипт из текущей темы, что приводило к сообщениям об ошике при обращении скрипта к несуществующим более панелям
● Обновлен движок редактора кода до Scintilla 5.5.2

Версия 3.6.1.8 [25.07.2024]
● Возвращены следующие функции:
Код: Выделить всё
plman.GetGUID(playlistIndex)
plman.FindByGUID(guid)
● Обновлен движок редактора кода до Scintilla 5.5.1

Версия 3.6.1.7 [11.05.2024]
● Исправлен баг с неверным изменением порядка панелей при перетягивании мышкой в Panel list (Список панелей)
● Обновлен движок редактора кода до Scintilla 5.5.0

Версия 3.6.1.6 [10.05.2024]
● Откат движка JS до SpiderMonkey ESR102 (102.15.1esr) ввиду наличия многочисленных рандомных ошибок при инициализации скриптов (касается больше версии x64)

Версия 3.6.1.5 [05.05.2024]
● Добавлена поддержка архитектуры x64
● Обновлен движок JS до SpiderMonkey ESR115 (115.9.1esr)
● Расширены настройки цветовой схемы редактора (см. Options->Configure..., а также примеры в Options->Presets)
● Добавлено мультиредактирование (Ctrl+клик мыши для установки следующего курсора) и мультивыделение (Ctrl+новое выделение) (добавлена настройка редактора selection.multiple = 1)
● Добавлено подсвечивание аналогичного текста при выделении (добавлена настройка редактора selection.match = 1)
● Добавлено сворачивание/разворачивание блоков кода (добавлена настройка редактора fold.show = 1), добавлены горячие клавиши для сворачивания/разворачивания всех блоков: Ctrl+Alt+PgUp/Ctrl+Alt+PgDn

Версия 3.6.1.3 [27.02.2024]
● Исправлено игнорирование свойства features в window.DefinePanel и window.DefineScript

Версия 3.6.1.2 [15.02.2024]
● Mozilla SpiderMonkey ESR91 (91.13.0esr)
● plman.GetGUID(playlistIndex)
● plman.FindByGUID(guid)

Версия 2.8.8 [06.08.2022]
● JScript Panel 2.8.8

Версия 2.8.7 [03.08.2022]
● JScript Panel 2.8.7
● Обработчики событий кнопок мыши игнорировали результат возврата

Версия 2.8.6.2 [06.05.2022]
● JScript Panel 2.8.6.2

Версия 2.8.0 [17.01.2022]
● JScript Panel 2.8.0

Версия 3.6.1 [17.01.2022]
● Spider Monkey Panel 1.6.1

Версия 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
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет


Сообщение #361 Aum » 05.04.2024, 13:22

LUR:Попробуйте перед Move спрятать окно
Теперь везде все идеально! :beer:
SergPuh.68, классная идея с панелькой поверх всех для "полоски ресайза"! :beer:
Ребята, а подскажите: можно ли эту самую "панельку ресайза" сделать полупрозрачной?
Ввел в параметры и в самом сплиттере отрисовал фон с прозрачностью RGBA, но белый фон не уходит:
SplitterLeft.SupportPseudoTransparency = true;
Aum M
Аватара
Репутация: 23
С нами: 14 лет 9 месяцев

Сообщение #362 SergPuh.68 » 05.04.2024, 14:49

Aum:можно ли эту самую "панельку ресайза" сделать полупрозрачной?
Как по мне из компонента вообще нужно убрать прозрачность,сколько не пробовал,толком не работает.Может не прозрачность не работает а перерисовка после прозрачности если панели двигаются,и хорошо бы убрать копирование фона с панели на панель,если панели не пересекаются то вроде бы всё нормально визуально но если только если они проходят над или под чем то то фон копируется везде где можно и передаётся везде.Особенно это заметно с компонентами видео.Если добавить JSplitter и не вводить его в макет то тогда он двигается над любыми панелями и компонентами без проблем не оставляя никаких следов.
2024-04-05_134741.jpg
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 143
С нами: 5 лет 11 месяцев

Сообщение #363 Aum » 05.04.2024, 19:10

SergPuh.68, а как тогда лучше перерисовывать окно (даже без включенной прозрачности), при движении мышки и "панели ресайза", которая поверх всех других?
Получается в on_mouse_move можно добавить window.Repaint (но это тяжкая нагрузка для ПК мне показалась) или использовать команду SplitterLeft.Move с параметром true (SplitterLeft.Move(x, 0, 2, wh,true). Или может использовать window.RepaintRect в on_mouse_move с указанием области перерисовки только в границах "ресайза" панели. Иначе дикий шлейф как у вас выше.
Aum M
Аватара
Репутация: 23
С нами: 14 лет 9 месяцев

Сообщение #364 SergPuh.68 » 05.04.2024, 19:49

Aum, я всё перепробовал,пока незнаю...Может LUR что подскажет,попробуй SplitterLeft.Move(x, 0, 2, wh,true) или SplitterLeft.Move(x, 0, 2, wh,false),но это как мне кажется костыли,тут что то нужно глобальное.Для панели видео я использую madVR он хорошо перерисовывает когда воспроизводится видео,тут наверно сильно зависит какая панель в топе(внизу списка)
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 143
С нами: 5 лет 11 месяцев

Сообщение #365 LUR » 07.04.2024, 10:58

SergPuh.68:Как по мне из компонента вообще нужно убрать прозрачность
Ну убирать точно не надо) т.к. некоторые компоненты, к примеру EsPlaylist таки поддерживают эту фичу и без нее не получится отобразить например фоновую обложку. Это же фича опциональная, но в определенный момент необходимая.
SergPuh.68:копирование фона с панели на панель
Честно говоря, сам не особо тестировал с множеством панелей, оно просто решает задачу, когда это нужно, а так все ж не угадаешь: либо так, либо эдак. Не забывайте, копируется именно корень отдельно взятого JSplitter, по крайней мере программно это так реализовано.

Добавлено спустя 7 минут 28 секунд:
SergPuh.68:Если добавить JSplitter и не вводить его в макет то тогда он двигается над любыми панелями и компонентами без проблем не оставляя никаких следов.
Именно. На то она и гибкость использования. Просто не надо мешать разные вещи между собой и добиваться результата удобным вам способом.

Добавлено спустя 4 минуты 10 секунд:
Aum:Получается в on_mouse_move можно добавить window.Repaint
Вполне, если это нужно. Конечная производительность будет зависеть от родителя и количества дочерних панелей. Если на глаз устраивает, то не страшно. Главное поубирать все лишние перерисовки в целом.

Добавлено спустя 4 минуты 48 секунд:
SergPuh.68:тут наверно сильно зависит какая панель в топе(внизу списка)
Конечно зависит. Любая панель это черный ящик (то, как реализовал ее программист). Так что имеем то, что имеем.

Добавлено спустя 4 минуты 8 секунд:
Aum:или использовать команду SplitterLeft.Move с параметром true
Это как раз SergPuh.68 и помогло. Я специально сделал так, чтобы лишний пинок родителю не давался по умолчанию, иначе каждый раз все будет перерисовываться просто так, без смысла
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Сообщение #366 SergPuh.68 » 07.04.2024, 12:04

LUR, а компонент хранит в памяти где то результаты предыдущих действий в плане прозрачности,перерисовок,изменения размеров окон и др. Просто замечал при резком изменении размеров окна на компоненте как бы мелькают результаты прошлых действий,панель перерисовывается не равномерно...не знаю как сказать правильно,не успевает что ли.Уменя на одной панели верх перерисовывается нормально а нижняя часть панели постояно что то мелькает что я делал раньше...И как можно правильно пользоваться функцией стереть фон?
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 143
С нами: 5 лет 11 месяцев

Сообщение #367 LUR » 08.04.2024, 23:26

Ничего не хранится, за перерисовку отвечает винда. Тот случай, где псевдопрозрачность, тогда просто копия корня в рисовалке, а так не должно влиять. Просто с наворотами большего количества панелей может что-то интересное проявляться, но я все по честному сделал, из всего этого и исходим. Единственный костыль, который я сделал, это перерисовка фона тулбаров плагинов из Columns UI. ну разраб решил что им это не надо перерисовываться и я спецом туда загоняю фон из настроек колумнсов, а так не, специально ничего не трогаю.

Добавлено спустя 23 минуты 40 секунд:
SergPuh.68:И как можно правильно пользоваться функцией стереть фон?
Это вы про какую? про эту?

(read, write) boolean EraseBackground;

Ну вот эта та фича, придуманная для панелей, которые не хотят сами свой фон отрисовывать, но только для этого она и была предназначена, но честно скажу это было давно, и возможно она работает не так, как нужно, надо будет пересмотреть. А она вам нужна что-ли, или я неправильно понял?
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Сообщение #368 SergPuh.68 » 09.04.2024, 09:33

Просто сижу экспериментирую с компонентом,наверно я хочу впихнуть невпихуемое.Если макет простой и панели не пересекаются друг с другом,тогда вроде визуально всё вроде нормально,а если панели двигаются,накладываются вот тогда заметно накладки при перересовке, при изменении размеров при движении и тд.
Пробовал применять SplitterLeft.EraseBackground = true; плохая идея... или не правильно применяю
Кстати полосы прокруток из компонентов Columns UI плохо перерисовываются как мне показалось если тягать панель за левый край
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 143
С нами: 5 лет 11 месяцев

Сообщение #369 LUR » 10.04.2024, 00:54

SergPuh.68:Пробовал применять SplitterLeft.EraseBackground = true; плохая идея..
Перечитайте, что я писал, это фича только для определенных панелей, которые не отрисовывают свой фон. Это сделано разработчиками просто для увеличения производительности, потому что это как правило просто тулбары, которым место около меню.

Добавлено спустя 3 минуты 50 секунд:
SergPuh.68:вот тогда заметно накладки при перересовке, при изменении размеров при движении и тд.
Используйте где нужно перерисовку родителя тогда, ну в Move, иначе ничем помочь не смогу, собственно винда так работает. Я заморачивался с этой темой, но просто реализовать по-другому нельзя, к сожалению. Не забывайте, что мы живем в плеере, который разработчик мог реализовать как угодно, и то, что мы имеем, уже удивительно)
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Сообщение #370 Majestyk » 24.04.2024, 04:17

Как заставить прозрачность работать? Я отметил опцию 'Поддержка псевдопрозрачности' в панелях, но она все равно не работает. Нужно ли что-то добавить в коде? В данный момент единственный способ заставить прозрачность работать - добавить Panel Stack Splitter. Спасибо.

Добавлено спустя 6 часов 3 минуты:
Majestyk:Как заставить прозрачность работать? Я отметил опцию 'Поддержка псевдопрозрачности' в панелях, но она все равно не работает. Нужно ли что-то добавить в коде? В данный момент единственный способ заставить прозрачность работать - добавить Panel Stack Splitter. Спасибо.

Ничего страшного, я разобрался.
Majestyk
Репутация: 0
С нами: 1 год 3 месяца

Сообщение #371 dreamawake » 24.04.2024, 16:52

dreamawake:Hi, LUR, seems a serious bug was found that when the parent panel (used to show/hide child panels) is on focus state, if tab key is pressed, will cause foobar2000 no response. Please look at it. Thanks.

Majestyk:This is not a JSplitter bug. It's a foobar2000 bug. It's been around for along time and I don't think it's ever been reported. I have various Darkone mod themes dating back to 2015, using Panel Stack Splitter, that have this bug. I was surprised to read this, I thought only I knew about it. :smile:

Google Translate:

This is not a JSplitter error. This is the foobar2000 error. It's been a long time and I don't think it's ever been reported. I have various Darkone mod themes released in 2015 using Panel Stack Splitter that have this bug.

This bug is applicable to all panels. The following code can fix the problem:
Код: Выделить всё
window.DlgCode = 0x0004;
dreamawake
Репутация: 3
С нами: 1 год 7 месяцев

Сообщение #372 yeyo » 24.04.2024, 17:15

dreamawake:
dreamawake:Hi, LUR, seems a serious bug was found that when the parent panel (used to show/hide child panels) is on focus state, if tab key is pressed, will cause foobar2000 no response. Please look at it. Thanks.

Majestyk:This is not a JSplitter bug. It's a foobar2000 bug. It's been around for along time and I don't think it's ever been reported. I have various Darkone mod themes dating back to 2015, using Panel Stack Splitter, that have this bug. I was surprised to read this, I thought only I knew about it. :smile:

Google Translate:

This is not a JSplitter error. This is the foobar2000 error. It's been a long time and I don't think it's ever been reported. I have various Darkone mod themes released in 2015 using Panel Stack Splitter that have this bug.

This bug is applicable to all panels. The following code can fix the problem:
Код: Выделить всё
window.DlgCode = 0x0004;
It working, thanks to dreamawake for the feedback!
yeyo
Репутация: 1
С нами: 2 года 3 месяца

Сообщение #373 LUR » 25.04.2024, 19:52

Majestyk:Ничего страшного, я разобрался.
Да, там все зависит от самой панели, поддерживает ли она эту фичу.
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Сообщение #374 LUR » 05.05.2024, 05:29

Версия 3.6.1.5 [05.05.2024]

● Добавлена поддержка архитектуры x64
● Обновлен движок JS до SpiderMonkey ESR115 (115.9.1esr)
● Расширены настройки цветовой схемы редактора (см. Options->Configure..., а также примеры в Options->Presets)
● Добавлено мультиредактирование (Ctrl+клик мыши для установки следующего курсора) и мультивыделение (Ctrl+новое выделение) (добавлена настройка редактора selection.multiple = 1)
● Добавлено подсвечивание аналогичного текста при выделении (добавлена настройка редактора selection.match = 1)
● Добавлено сворачивание/разворачивание блоков кода (добавлена настройка редактора fold.show = 1), добавлены горячие клавиши для сворачивания/разворачивания всех блоков: Ctrl+Alt+PgUp/Ctrl+Alt+PgDn
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Сообщение #375 yeyo » 05.05.2024, 14:16

LUR:Версия 3.6.1.5 [05.05.2024]

● Добавлена поддержка архитектуры x64
● Обновлен движок JS до SpiderMonkey ESR115 (115.9.1esr)
● Расширены настройки цветовой схемы редактора (см. Options->Configure..., а также примеры в Options->Presets)
● Добавлено мультиредактирование (Ctrl+клик мыши для установки следующего курсора) и мультивыделение (Ctrl+новое выделение) (добавлена настройка редактора selection.multiple = 1)
● Добавлено подсвечивание аналогичного текста при выделении (добавлена настройка редактора selection.match = 1)
● Добавлено сворачивание/разворачивание блоков кода (добавлена настройка редактора fold.show = 1), добавлены горячие клавиши для сворачивания/разворачивания всех блоков: Ctrl+Alt+PgUp/Ctrl+Alt+PgDn

Thanks for adding support for x64!
yeyo
Репутация: 1
С нами: 2 года 3 месяца

Сообщение #376 dreamawake » 05.05.2024, 15:54

LUR:Версия 3.6.1.5 [05.05.2024]

● Добавлена поддержка архитектуры x64
● Обновлен движок JS до SpiderMonkey ESR115 (115.9.1esr)
● Расширены настройки цветовой схемы редактора (см. Options->Configure..., а также примеры в Options->Presets)
● Добавлено мультиредактирование (Ctrl+клик мыши для установки следующего курсора) и мультивыделение (Ctrl+новое выделение) (добавлена настройка редактора selection.multiple = 1)
● Добавлено подсвечивание аналогичного текста при выделении (добавлена настройка редактора selection.match = 1)
● Добавлено сворачивание/разворачивание блоков кода (добавлена настройка редактора fold.show = 1), добавлены горячие клавиши для сворачивания/разворачивания всех блоков: Ctrl+Alt+PgUp/Ctrl+Alt+PgDn

What a good news! Thanks!
dreamawake
Репутация: 3
С нами: 1 год 7 месяцев

Сообщение #377 yeyo » 06.05.2024, 13:08

Hi LUR, the 3.6.1.5_x64 version, seems to have compatibility issues with the script panel under SMP-samples, such as running slowly, popping up error dialogs, displaying as a blank panel, etc., is there any room for improvement?

Добавлено спустя 3 часа 49 минут:
Attached is a crash report!
Вложения
failure_00000001.rar
(45.45 КБ) Скачиваний: 93
0.png
yeyo
Репутация: 1
С нами: 2 года 3 месяца

Сообщение #378 LUR » 06.05.2024, 18:17

yeyo:the 3.6.1.5_x64 version, seems to have compatibility issues with the script panel under SMP-samples, such as running slowly, popping up error dialogs, displaying as a blank panel, etc.

I don't know what are you talking about...

Снимок экрана 2024-05-06 171357.png
Снимок экрана 2024-05-06 171302.png
Снимок экрана 2024-05-06 171434.png
Снимок экрана 2024-05-06 171623.png


Добавлено спустя 15 минут 13 секунд:
yeyo, check component integrity, reinstall it and reset foobar2000 settings, I can't help you with anything else =)
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Сообщение #379 yeyo » 07.05.2024, 05:08

Add a couple of panels under SMP-samples, then add the track with the cover and play it, then close and start foobar2000 repeatedly and the problems come out (not every time, there is a probability), these problems only occur under x64, everything works fine under x32.
yeyo
Репутация: 1
С нами: 2 года 3 месяца

Сообщение #380 LUR » 08.05.2024, 04:29

yeyo, I see problems... I will think about it. the error occurs specifically when calling a function of the script execution engine....
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 392
С нами: 12 лет

Пред.След.

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