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 КБ) Просмотров: 118834


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

4.PNG


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

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


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

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


Сообщение #401 LUR » 03.10.2024, 20:16

dreamawake:var SP = window.GetPanel('xxxx');
I can't see your panel naming cause I can't import test themes.
Especially if you just put your test them in a profile with a name theme.fth, they are just empty without any panels

Снимок экрана 2024-10-03 191616.png


What is xxxx ? If no panel with this name you'll get this error.

Добавлено спустя 6 минут 56 секунд:
Снимок экрана 2024-10-03 192309.png
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 389
С нами: 11 лет 11 месяцев

Сообщение #402 dreamawake » 03.10.2024, 20:36

I can't see your panel naming cause I can't import test themes.
What is xxxx ? If no panel with this name you'll get this error.

Layouts already in your Quick Setup lists, see highlighted below.

2024-10-03 191616.png


Both two layouts have two splitter panels -- one parent one child.
xxx stand for the child panel name in the layout, one layout is "JSPlitter", another layout is "JSPlitter2". The names are in accordance with the panels.

2024-10-04_002929.jpg


2024-10-04_003029.jpg
dreamawake
Репутация: 3
С нами: 1 год 6 месяцев

Сообщение #403 LUR » 03.10.2024, 20:41

When changing the main layout, the old script tries to execute one else, and only then the new JSplitter settings from another theme are loaded, including the script. If you do Reload, everything is fine. I have to think if I can fix this (although it's not a critical bug). In Columns UI this doesn't happen when importing a theme.

Добавлено спустя 7 часов 57 минут:
Версия 3.6.1.9 [04.10.2024]

● При импорте темы DUI, включающей в состав себя панель JSplitter, дополнительно выполнялся скрипт из текущей темы, что приводило к сообщениям об ошике при обращении скрипта к несуществующим более панелям
● Обновлен движок редактора кода до Scintilla 5.5.2
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 389
С нами: 11 лет 11 месяцев

Сообщение #404 dreamawake » 04.10.2024, 19:33

Hi, LUR, thanks for your update. Glad that crash will not occur upon switch, but the problem is settled 50% only, because the elements of the origin layout and the new loaded layout are not swapped properly, they will "mixed" together and causing crash for further operation.
I attached two new simple layouts (A & B) with different appearance for your testing, please look at it and you will catch the "mixing".

test themes A&B.zip
(1.72 КБ) Скачиваний: 30


Thank u again.
dreamawake
Репутация: 3
С нами: 1 год 6 месяцев

Сообщение #405 LUR » 04.10.2024, 19:46

dreamawake, I can't import your themes. empty layout without a single panel.

Снимок экрана 2024-10-04 184616.png
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 389
С нами: 11 лет 11 месяцев

Сообщение #406 dreamawake » 04.10.2024, 19:53

These two layouts are as below. I have confirmed again. Please see if you need to be restart foobar2000 upon switch (this is the exact problem).

A layout:
A.jpg


B layout:
B.jpg


mixed upon switch:
mix.jpg
dreamawake
Репутация: 3
С нами: 1 год 6 месяцев

Сообщение #407 LUR » 05.10.2024, 00:56

dreamawake, yes, because the root panel script was not executed as previously implemented =) After reload it's ok. Script of new layout was loaded but not executed. It turns out that DUI does not create a new window if it is already created, so the root window is not updated. I figured out how to fix this in next update.

Добавлено спустя 1 час 4 минуты:
Версия 3.6.1.10 [05.10.2024]

● При переключении тем DUI, включающих в состав себя панель JSplitter, не выполнялось обновление корневого окна.
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 389
С нами: 11 лет 11 месяцев

Сообщение #408 dreamawake » 05.10.2024, 06:54

It works well now. Thank u.
dreamawake
Репутация: 3
С нами: 1 год 6 месяцев

Сообщение #409 marc2003 » 10.10.2024, 17:27

About this crash on exit... it's because you're calling Scintilla_ReleaseResources from DllMain>DLL_PROCESS_DETACH.

This was fine in original JSP/SMP using the default technology but crashes since you now seem to be using Technology::DirectWrite.

So call Scintilla_ReleaseResources from initquit::on_quit or use this macro...

FB2K_RUN_ON_QUIT(Scintilla_ReleaseResources);
marc2003
Репутация: 6
С нами: 6 лет 7 месяцев

Сообщение #410 LUR » 11.10.2024, 18:53

marc2003:you now seem to be using Technology::DirectWrite
Yes, you're right.

marc2003:So call Scintilla_ReleaseResources from initquit::on_quit or use this macro...
Thank you, will do that.
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 389
С нами: 11 лет 11 месяцев

Сообщение #411 dreamawake » 26.10.2024, 04:50

Hi, Lua, will there is a fix update soon? Could you please also fix the bug regarding to panel index?
After the panel switched, the active panel will be automatically moved to the last one, it causes the panel index is not constant that function GetPanelByIndex(index) will be useless.

if panel D is active:
# name hide
1 A yes
2 B yes
3 C yes
4 D No

if switch to C panel (C is activated):
# name hide
1 A yes
2 B yes
3 D yes
4 C No
dreamawake
Репутация: 3
С нами: 1 год 6 месяцев

Сообщение #412 LUR » 26.10.2024, 08:28

dreamawake, it's not a bug it's a feature) someone got me hooked on this idea in this thread and I bought into it - it was a long time ago and I don't remember why I decided to do this
active panels change their order. but in fact I always address them by name, it's more convenient.

disclaimer in thread header:

Добавлено спустя 4 минуты 44 секунды:
Снимок экрана 2024-10-26 073210.png


translation:
ATTENTION! The order of the panels in the splitter depends on the depth of their visual arrangement. The topmost window will be the last in the list. If you activate any panel with the mouse, it will move to the end of the list. Keep this in mind when using the GetPanelByIndex function (see below). To prevent accidental movement through the list, you can lock the panel (see below).
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 389
С нами: 11 лет 11 месяцев

Сообщение #413 dreamawake » 26.10.2024, 19:42

OK. Then I will keep using GetPanelByName for panel handling.
dreamawake
Репутация: 3
С нами: 1 год 6 месяцев

Сообщение #414 regor » 28.10.2024, 22:32

English (bugfix report)
Спойлер
Hi,
first thank you so much for offering a SMPx64 version. Much needed! I have tried before building the component without luck, would be great to have a working repo for SMP

There seems to be some problems with current version:
1. Packages are not loaded properly
https://hydrogenaud.io/index.php/topic,126743.msg1053097.html#msg1053097
https://hydrogenaud.io/index.php/topic,126743.msg1052989.html#msg1052989
https://hydrogenaud.io/index.php/topic,126743.msg1052207.html#msg1052207
Final test:
https://hydrogenaud.io/index.php/topic,126743.msg1053124.html#msg1053124
Dev tip:
https://hydrogenaud.io/index.php/topic,126743.msg1053132.html#msg1053132

2. One of the changes on the engine broke working code on previous SMP versions:
https://hydrogenaud.io/index.php/topic,126743.msg1051999.html#msg1051999
Not sure how you want to handle it, but that should polyfill it. (or just give a warn on the docs, it's a pretty obscure and useless thing)

Have to test other things, not sure if you implemented these fixes:
https://hydrogenaud.io/index.php/topic,116669.msg1026243.html#msg1026243

Finally, are you open to SMP bugfixes or improvements? Right now the only development on SMP is done by you. There are some remaining important bugs, like ActiveX objects connecting to internet crashing foobar2000 on panel reload/shutdown. Can give more details if needed. In particular 'WinHttp.WinHttpRequest.5.1' or 'Microsoft.XMLHTTP' and their variants.
https://hydrogenaud.io/index.php/topic,121047.msg1044579.html#msg1044579
https://hydrogenaud.io/index.php/topic,121047.msg1044677.html#msg1044677

Also some changes to current features (which hopefully should be easy to implement), like the limit of heap size at advanced preferences. On x64 there should not be a hard limit imposed (which would allow the plugin to work on huge libraries with complex scripts).
Изображение
And please, the limit of 60s on the slow script warning. Allowing a 0 or -1 to disable it and much higher values too. This one alone has provoked a lot of script reports when tagging huge libraries on batch using scripts and similar things.

Both preferences are hard limited to those values, and you can not increase it (or disable the second one).

Thank you so much.

Ru Google translate
Спойлер
Привет,
во-первых, большое спасибо за то, что предложили версию SMPx64. Очень нужно! Я пытался до сборки компонента, но безуспешно, было бы здорово иметь работающий репозиторий для SMP

Кажется, есть некоторые проблемы с текущей версией:
1. Пакеты не загружаются должным образом
https://hydrogenaud.io/index.php/topic,126743.msg1053097.html#msg1053097
https://hydrogenaud.io/index.php/topic,126743.msg1052989.html#msg1052989
https://hydrogenaud.io/index.php/topic,126743.msg1052207.html#msg1052207
Финальный тест:
https://hydrogenaud.io/index.php/topic,126743.msg1053124.html#msg1053124
Dev совет:
https://hydrogenaud.io/index.php/topic,126743.msg1053132.html#msg1053132

2. Одно из изменений в движке сломало рабочий код в предыдущих версиях SMP:
https://hydrogenaud.io/index.php/topic,126743.msg1051999.html#msg1051999
Не уверен, как вы хотите с этим справиться, но это должно полифиллить его. (или просто выдать предупреждение в документации, это довольно непонятная и бесполезная вещь)

Нужно протестировать другие вещи, не уверен, реализовали ли вы эти исправления:
https://hydrogenaud.io/index.php/topic,116669.msg1026243.html#msg1026243

Наконец, вы открыты для исправлений ошибок или улучшений SMP? Прямо сейчас единственная разработка SMP выполняется вами. Остались некоторые важные ошибки, например, объекты ActiveX, подключающиеся к Интернету, которые приводят к сбою foobar2000 при перезагрузке/выключении панели. При необходимости могу предоставить более подробную информацию. В частности, 'WinHttp.WinHttpRequest.5.1' или 'Microsoft.XMLHTTP' и их варианты.
https://hydrogenaud.io/index.php/topic,121047.msg1044579.html#msg1044579
https://hydrogenaud.io/index.php/topic,121047.msg1044677.html#msg1044677

Также некоторые изменения в текущих функциях (которые, как мы надеемся, будет легко реализовать), например, ограничение размера кучи в расширенных настройках. На x64 не должно быть жесткого ограничения (которое позволило бы плагину работать с огромными библиотеками со сложными скриптами).
Изображение
И, пожалуйста, ограничение в 60 секунд для предупреждения о медленном скрипте. Разрешение 0 или -1 для его отключения и гораздо более высоких значений тоже. Это одно вызвало множество отчетов о скриптах при пометке огромных библиотек в пакетном режиме с использованием скриптов и подобных вещей.

Оба параметра жестко ограничены этими значениями, и вы не можете увеличить его (или отключить второй).

Большое спасибо.
regor
Репутация: 0
С нами: 14 дней 19 часов

Сообщение #415 regor » 29.10.2024, 21:09

Also Samples must be updated, since last.fm and Allmusic ones don't work anymore due to web and API changes. See this:
https://hydrogenaud.io/index.php/topic,126743.msg1053063.html#msg1053063

I would recommend you to replace the current samples provided by the component with those I uploaded at this thread. See changelog.
https://hydrogenaud.io/index.php/topic,126743.msg1053179.html#msg1053179

Changed files:
Спойлер
[js] (entire folder)
allmusic review.js
last.fm bio.js
last.fm similar artists + user charts + recent tracks.js

Также необходимо обновить сэмплы, так как last.fm и Allmusic больше не работают из-за изменений в вебе и API. Смотрите это:
https://hydrogenaud.io/index.php/topic,126743.msg1053063.html#msg1053063

Я бы рекомендовал вам заменить текущие сэмплы, предоставляемые компонентом, на те, которые я загрузил в этой теме. Смотрите журнал изменений.
https://hydrogenaud.io/index.php/topic,126743.msg1053179.html#msg1053179
regor
Репутация: 0
С нами: 14 дней 19 часов

Сообщение #416 LUR » 30.10.2024, 06:13

regor, I'll look later, no time, but thanks for sharing and being interested

I haven't made improvements to the component for a long time, so don't expect much from me, considering that all the scripts included in it are not my authorship, but those of JScriptPanel and SMP developers. They somehow collaborated, and on my part it was writing a splitter with API support from the player author (DUI) and CUI and made it available for coding in JS.

Since the author of JScript Panel has closed the code and does not share it, the component is based on the latest developer version of SMP, but there is no releases by the author yet, so there is nothing to update and it is shipped by me as is.

I only occasionally fix bugs in my component, not the scripts themselves.

Добавлено спустя 48 минут 17 секунд:
regor:1. Packages are not loaded properly
Hm... Biography-vversion1.4.2.mod.1.zip, can't reproduce the bug
Снимок экрана 2024-10-30 055420.png


Добавлено спустя 25 минут 49 секунд:
regor:2. One of the changes on the engine broke working code on previous SMP versions:
Not sure how you want to handle it, but that should polyfill it. (or just give a warn on the docs, it's a pretty obscure and useless thing)

For all the changes in the engine it's like the authors of SpiderMonkey (Firefox JS engine)

Добавлено спустя 5 минут 18 секунд:
regor:Finally, are you open to SMP bugfixes or improvements? Right now the only development on SMP is done by you.
No. I am not an SMP developer and never was. I developed this add-on on top, but in imrovements of SMP touched compilation of x64 JS engine and fixes for SMP building for this architecture and update Scintilla code editor engine with access to alternative settings

Добавлено спустя 16 минут 57 секунд:
regor:I would recommend you to replace the current samples provided by the component with those I uploaded at this thread. See changelog.
Ok, will do this

As marc2k3 (JSP author) rightly said, scripts included in SMP are better not to be used seriously (I didn't use them). maybe they should be excluded from JSplitter as harmful. again, it's not my task to write samples, I had absolutely no regard for their quality and just included them as samples from the authors, marc2k3 does it only and keeps them up to date in his component

Добавлено спустя 29 минут 6 секунд:
Some points from your long post I'll look separately later, and make modifications
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 389
С нами: 11 лет 11 месяцев

Сообщение #417 SergPuh.68 » 31.10.2024, 17:58

var isShowGroups = fb.IsMainMenuCommandChecked("View/Playlist view/Show groups");
var isShowArtwork = fb.IsMainMenuCommandChecked("View/Playlist view/Show artwork");

В версии 3.6.1 метод работает а в последней нет, что то поменялось или это какая то ошибка?
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 143
С нами: 5 лет 9 месяцев

Сообщение #418 regor » 31.10.2024, 20:34

I'm also having a problem with the same method:
https://github.com/phw/foo_listenbrainz2/issues/22

But not sure if it's related to that component in particular or this.

Добавлено спустя 6 минут 45 секунд:
Since the author of JScript Panel has closed the code and does not share it, the component is based on the latest developer version of SMP, but there is no releases by the author yet, so there is nothing to update and it is shipped by me as is.

I only occasionally fix bugs in my component, not the scripts themselves
Obviously all my suggestions about SMP, were meant for your script and version. Also not suggesting to change anything on the scripts, I can help with that providing updated samples though.

Hm... Biography-vversion1.4.2.mod.1.zip, can't reproduce the bug
If you check the latest links about that bug, it seems related to some kind of UTF8 bug parsing of your component when the path contains non compatible chars.
https://hydrogenaud.io/index.php/topic,126743.msg1053132.html#msg1053132
Here it's pointed that japanese chars on the path give problems (but they worked in SMP).
https://hydrogenaud.io/index.php/topic,126743.msg1053147.html#msg1053147

For all the changes in the engine it's like the authors of SpiderMonkey (Firefox JS engine)
But since SMP latest version does not use the new engine, only your component, that's why I suggest you to add the warning in your docs.

No. I am not an SMP developer and never was. I developed this add-on on top, but in imrovements of SMP touched compilation of x64 JS engine and fixes for SMP building for this architecture and update Scintilla code editor engine with access to alternative settings
I understand, that's why I asked if you are open to more bugfixes. Also some people would appreciate part of the UI-hacks features too, since they are not available at x64. I saw you added some methods to control foobar2000 window width and height for ex.

As marc2k3 (JSP author) rightly said, scripts included in SMP are better not to be used seriously (I didn't use them). maybe they should be excluded from JSplitter as harmful. again, it's not my task to write samples, I had absolutely no regard for their quality and just included them as samples from the authors, marc2k3 does it only and keeps them up to date in his component
I can help with the samples updating some of them and even provided more new samples.
regor
Репутация: 0
С нами: 14 дней 19 часов

Сообщение #419 SergPuh.68 » 31.10.2024, 21:21

Удивительно но
var isAlwaysonTop = fb.IsMainMenuCommandChecked("View/Always on Top");
в последней версии компонента работает :think:
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 143
С нами: 5 лет 9 месяцев

Сообщение #420 regor » 31.10.2024, 21:36

It seems it works with some entries but not others...
regor
Репутация: 0
С нами: 14 дней 19 часов

Пред.След.

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