WoW LibWindow-1.1 аддон Dragonflight/Wrath of the Lich King Classic 2024 скачать
logo
wow addon LibWindow-1.1

LibWindow-1.1

Версия игры: 9.1.0
Всего загрузок: 260,402
Обновлено: Jun 29, 2021
Создано: Nov 13, 2008
Скачать LibWindow-1.1Скачать Предыдущие версии

Предыдущие версии

Название Размер Обновлено Версия игры Загрузок
r23-90100 release 4.70 KB Jun 29, 2021 9.1.0 0 скачать LibWindow-1.1 r23-90100 releaseСкачать
r15-70000 release 4.66 KB Jul 19, 2016 7.0.3 26,868 скачать LibWindow-1.1 r15-70000 releaseСкачать
r12 release 4.64 KB Oct 14, 2014 6.0.2 17,662 скачать LibWindow-1.1 r12 releaseСкачать
r11-50200 release 4.65 KB Mar 10, 2013 5.2.0 20,921 скачать LibWindow-1.1 r11-50200 releaseСкачать
r10-50001 release 4.64 KB Sep 11, 2012 5.0.4 16,597 скачать LibWindow-1.1 r10-50001 releaseСкачать
r9 release 4.67 KB May 26, 2012 4.3.4 13,411 скачать LibWindow-1.1 r9 releaseСкачать
r13-60100 beta 4.69 KB Feb 24, 2015 6.1.0 2,820 скачать LibWindow-1.1 r13-60100 betaСкачать
r6-40100 beta 4.70 KB May 5, 2011 4.1.0 70,074 скачать LibWindow-1.1 r6-40100 betaСкачать
r3 beta 4.61 KB Jan 20, 2009 3.0.3 86,115 скачать LibWindow-1.1 r3 betaСкачать
r22-alpha alpha 4.70 KB Jun 29, 2021 9.1.0 0 скачать LibWindow-1.1 r22-alpha alphaСкачать
r19-alpha alpha 4.62 KB Oct 13, 2020 9.0.1 395 скачать LibWindow-1.1 r19-alpha alphaСкачать
r18-alpha alpha 4.60 KB Sep 7, 2019 7.3.5 511 скачать LibWindow-1.1 r18-alpha alphaСкачать
r17-alpha alpha 4.23 KB Aug 29, 2017 7.3.0 1,242 скачать LibWindow-1.1 r17-alpha alphaСкачать
r15 alpha 4.61 KB Jul 19, 2016 7.0.3 83 скачать LibWindow-1.1 r15 alphaСкачать
r13 alpha 4.64 KB Feb 24, 2015 6.1.0 58 скачать LibWindow-1.1 r13 alphaСкачать
r8 alpha 4.63 KB May 26, 2012 4.1.0 79 скачать LibWindow-1.1 r8 alphaСкачать
r6 alpha 4.65 KB May 5, 2011 4.1.0 138 скачать LibWindow-1.1 r6 alphaСкачать
r5 alpha 4.68 KB Dec 15, 2009 3.3.0 3,087 скачать LibWindow-1.1 r5 alphaСкачать
r4 alpha 4.62 KB Sep 1, 2009 3.2.0 223 скачать LibWindow-1.1 r4 alphaСкачать
r2 alpha 4.52 KB Nov 13, 2008 3.0.3 118 скачать LibWindow-1.1 r2 alphaСкачать

Скриншоты

Описание

Хочешь карту со своим ником? Discount 10%Оформить ❤️

WindowLib-это небольшая библиотека, которая заботится о стандартном «оконном» поведении, используемом в основных фреймах многих дополнений, и пытается сделать это более разумным способом, чем нашел бы время для этого средний автор дополнений.

  • Сохранение и восстановление позиций: WindowLib выберет точку подключения в зависимости от того, в каком секторе экрана находится рамка: вверху слева? внизу справа? в центре?
  • Перетаскивание окна ручки
  • Масштабирование колесика мыши
  • Только мышь-включение окна при удержании клавиши Alt

Зачем беспокоиться?

Потому что пользователи меняют масштаб своего пользовательского интерфейса. Потому что пользователям нравится копировать настройки своих дополнений с одного компьютера на другой (например, настольный компьютер или ноутбук?).

How scaling and positioning works with different approaches

Если вы абсолютно не хотите использовать LibWindow, пожалуйста, используйте его стратегию в своем коде:

  • Сохраните позицию в шкале родителя, а не в собственной шкале эффективности кадра. Это предотвращает перекрытия и пробелы при изменении масштаба.
  • Вычислите ближайший угол экрана и сохраните его относительно ближайшего угла вашего кадра, т. е. снизу вверх, сверху вниз. Это предотвращает исчезновение вещей с экрана.

Пример кода

lwin = LibStub("LibWindow-1.1")
 
myframe = Создатьфрейм ("Фрейм") 

lwin.RegisterConfig(мойфрейм , self.db.профиль)
lwin.Восстановление(myframe) -- также восстанавливает масштаб
lwin.возможностьрасширения (мой фрейм)
lwin.EnableMouseOnAlt(мой фрейм)
lwin.EnableMouseWheelZoom(мой кадр)

Документация по API

.RegisterConfig(фрейм, хранилище[, имена])

 локальный lwin = LibStub("LibWindow-1.1")
 
 lwin.RegisterConfig(мойфрейм , self.db.профиль)

Этот вызов инициализирует фрейм для использования с LibWindow и сообщает ему, где хранятся данные конфигурации. При необходимости вы можете указать точные имена переменных, которые будут сохранены.

Обратите внимание, что если ваш аддон поддерживает профили (т. Е. изменение данных конфигурации в реальном времени), вам нужно будет создать новый .RegisterConfig (), а затем .RestorePosition() при изменении профиля.

Аргументы

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

Ручное именование переменных

Необязательным последним аргументом функции является таблица, содержащая сопоставления имен и/или префикс для всех имен переменных.

Пример использования — вручную укажите все имена переменных:

 имена = {
   x = "posx",
   y = "пози",
   масштаб = "размер",
   точка = "Где прикрепить",
 }

Пример использования — просто префикс большинства имен, но жестко закодированный

 имена = {
   префикс = "myframe", -- имена становятся, например, "myframex", "myframey"
   точка = "клеевой каркас",
 }

.Положение сохранения(кадр)

Вычисляет, в каком квадранте находится кадр, и сохраняет его положение относительно правого угла.

 мойкадр :SetScript("OnDragStop", lwin.Сохранение)

Вам не нужно вызывать это самостоятельно, если вы использовали :MakeDraggable() в кадре.

.Реставрация(каркас)

Восстанавливает положение и масштаб по данным конфигурации.

 lwin.Восстановление(мой кадр)

.setScale(рамка, масштаб)

Устанавливает масштаб кадра ( конечно, не заставляя его двигаться) и сохраняет его.

 lwin.setScale(myframe, myscale)

.Поддается растягиванию(рамка)

Добавляет обработчики перетаскивания в рамку и делает ее подвижной. Информация о местоположении автоматически сохраняется в соответствии с :RegisterConfig().

 lwin.настраиваемый(мой фрейм)
  • Вы, конечно, можете также справиться с перетаскиванием самостоятельно, и в этом случае вы вместо этого звоните .Сохранение положения(кадра) при перетаскивании.
  • Если хотите, вы можете позвонить вручную .OnDragStart(рамка) и .OnDragStop(фрейм), который выполняет необходимые вызовы API для вас + вызов .Положение сохранения(кадр).

.EnableMouseOnAlt(мой фрейм)

Только мышь-включает окно, пока удерживается [Alt]. Это позволяет пользователям нормально просматривать окно.

 lwin.EnableMouseOnAlt(мой фрейм)

.Включение масштабирования(myframe)

Добавляет обработчики колесика мыши в рамку, автоматически увеличивая/уменьшая масштаб на 10% за такт и вызов колеса .Установите масштаб(myframe) для вас.

 lwin.Включениемасштабирования (мой кадр)

Вы также можете позвонить вручную .На колесе(кадр,реж.). Это было бы интересно, если, например, ваш аддон уже использует колесо мыши для чего-то. Я рекомендую использовать ctrl в качестве клавиши — модификатора для масштабирования-он уже используется другими дополнениями.

Записи

О логике позиционирования

WindowLib выберет точку подключения в зависимости от того, в каком квадранте экрана находится рамка: вверху слева? внизу справа? в центре?

  • Это означает, что рамки НЕ обязательно остаются точно на месте при изменении размера пользовательского интерфейса
  • Это ХОРОШАЯ ВЕЩЬ! Намного лучше, чем статическое позиционирование (т. е. кадр:getLeft() * кадр:GetEffectiveScale() — что не очень хорошо работает!)
  • Два кадра, расположенные рядом друг с другом при изменении размера пользовательского интерфейса, будут «продолжать» сидеть рядом друг с другом при таком относительном расположении. (Например: Подумайте о том, как ваши сумки сидят рядом друг с другом, независимо от масштаба пользовательского интерфейса!)

Добавление LibWindow в существующий аддон

Скорее всего, данные о расположении окон будут сохранены в вашей базе данных с тех пор, как это было раньше. Эти данные, скорее всего, потребуется преобразовать, прежде чем LibWindow будет хорошо с ними справляться.

LibWindow запоминает позицию в шкале родителя. НО: большинство дополнений переводятся в глобальный масштаб и сохраняют это. Это несовместимо, если ваш UIParent не имеет масштаба 1.0.

Пример старого кода:

 функция MyAddon:сохранение положения(кадра)
   локальный p = self.db.профиль
   p.x = кадр:getLeft() / кадр:GetEffectiveScale()
   p.y = рамка:getTop() / рамка:GetEffectiveScale()

Пример кода для исправления масштаба для использования в LibWindow:

 функция MyAddon:OnProfileEnable()
   локальный p = self.db.профиль
   если нет p.libwindowed, то
     p.x = p.x / UIParent:getScale()
     p.y = p.y / UIParent:getScale()
     p.libwindowed = истина
   конец
   - теперь можно смело звонить .Восстановление()
Поделиться:

Комментарии

Добавить комментарий