Предложения по плагинной системе

Больше
15 года 9 мес. назад #41 от Toxa
любые - это настройки крысы или изменение инфы контактов?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 9 мес. назад - 15 года 9 мес. назад #42 от Rapid D
Мда, не думал что возникнут проблеммы с этим :)
var
 data1:Pointer;
begin
case _byte_at(data,5) of
  ...
 PE_PROPERTIES_CHANGED:
     begin
       data1 := callStr(AnsiChar(PM_GET)+ AnsiChar(PG_PREF_VALUE)+ _istring(параметр, например 'use-old-xstatus'));
       vType := _byte_at(data1, 4);
       vValue := _istring_at(data1, 5);
       Дальше в зависимости от типа разбираем значение.
       параметр может быть как "своего" типа (в данном примере bool), так и blob - т.е. нераспознаного. Это нужно учесть!
     end;
Возникает событие в основном, когда изменяются какие-либо параметры.
Для типа ET_String - в vValue будет UTF8 вид строки.
Для даты(ET_Date) формат:
Def_DateFormat = 'DD.MM.YYYY';
Для времени (ET_Time):
Def_DateTimeFormat = 'DD.MM.YYYY HH:NN:SS';
Для boolean(ET_Bool):
yesno:array [boolean] of AnsiString=('No','Yes')


Теперь думаю как бы получше сделать сохранение настроек плагинов.
Думаю в 1108 это уже появится. В db5 :)
Последнее редактирование: 15 года 9 мес. назад пользователем Rapid D.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 7 мес. назад - 15 года 7 мес. назад #43 от elron
Можно ли сделать чтоб плагин мог отправлять картинки между крысками?!

Уже есть целых 3 (три) штуки. Кто читает Путеводитель по Плагинам для R&Q внимательно, находит обязательно. ;)
Последнее редактирование: 15 года 7 мес. назад пользователем dek.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #44 от Toxa
а кто-нибудь пытался адаптировать плагинное API под Delphi 2009/2001? т.е сделать и его юникодовым.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #45 от Mikanoshi
Toxa писал(а):

а кто-нибудь пытался адаптировать плагинное API под Delphi 2009/2001? т.е сделать и его юникодовым.

У меня есть для 2009 апи, но там всё в AnsiString))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #46 от Toxa
а нельзя на него поглядеть для дальнейшего копания/перевода в юникод?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #47 от Vinum
Toxa, держи :)

Вложение API2009.rar не найдено

Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад - 15 года 4 нед. назад #48 от Toxa
спасибо.
Последнее редактирование: 15 года 4 нед. назад пользователем Toxa.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 4 нед. назад #49 от Toxa
поправьте меня, если я ошибаюсь: строки в плагин передаются в виде AnsiString?
планируется ли передача строк в виде UnicodeString?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
14 года 10 мес. назад #50 от xvoct
подскажите есть ли beep plugin под win 7, либо как заставить работать существующий?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
14 года 9 мес. назад #51 от CowBrat
Появилась мысль для плагина:
вроде как, чаще всего сообщения отправляются одно-двум-трем контактам: подруга, друг-по-переписке ...
И очень часто сообщение состоит просто из ссылки. Так вот, сделать плагин, который при нажатии хоткея, например Ctrl+Shift+1 отсылал бы содержимое буфера определенному контакту, настроенному на 1.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
14 года 5 мес. назад - 14 года 5 мес. назад #52 от cy6
Очень не хватает возможности добавлять пункты меню нормальным путем в плагинном API.

У плагина есть следующие возможности взаимодействия с пользователем через интерфейс RnQ:
1) Окно "Настройки" в разделе "Настройки/плагины".
Годится только для какого то редкого тюнинга, труднодоступно (долго добираться до него). Чаще всего используется для AboutBox.
2) Создание кнопок (в специальной панели, обычно невидимой) и табов в чате. Лично меня такие табы (кнопки не в счет) только раздражают.
3) В самих исходниках обнаружены еще команды добавки пунктов меню в меню контакта. В API они не документированы, что не страшно, в принципе.

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

Пару дней возилась с добавлением пункта в меню, но с этим есть очевидные проблемы из-за сверхзамудренного способа реализации всплывающих меню (и не только меню) в Delphi. :S
Оказывается, Delphi создает кучу пустых (0,0,0,0) окон для всяких нужд, а именно, для создания отдельной оконной процедуры. И окна эти одинаковы для всплывающих меню и других объектов. Отличить их нет никакой возможности, кроме как по приходу характерных для всплывающих меню сообщений. Это хоть и сложно, но реализуемо.
Настоящая беда кроется в методах Classes.AllocateHWnd и Classes.DeallocateHWnd.
А именно в MakeObjectInstance и FreeObjectInstance.
Особенно в этом коде:
procedure DeallocateHWnd(Wnd: HWND);
var
  Instance: Pointer;
begin
  Instance := Pointer(GetWindowLong(Wnd, GWL_WNDPROC));
  DestroyWindow(Wnd);
  if Instance <> @DefWindowProc then FreeObjectInstance(Instance);
end;
Таким образом, при перехвате оконной процедуры, получаем исключение при FreeObjectInstance, так как строчка GetWindowLong стоит почему то ДО DestroyWindow. А лишь DestroyWindow посылает извещение об уничтожения окна, давая возможность восстанавливать исходное состояние "до перехвата".
Последнее редактирование: 14 года 5 мес. назад пользователем cy6.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
14 года 5 мес. назад #53 от Rapid D
Как-то я не понял, что вы хотите добавлять?
Что ещё есть в КЛ, кроме меню контактов? :)

В планах у меня была панелька в КЛ с кнопками от плагинов, примерно как в чате.
Но как-то она отодвинулась по надобности на дальний план...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
14 года 5 мес. назад #54 от cy6
Rapid D писал(а):

Как-то я не понял, что вы хотите добавлять?
Что ещё есть в КЛ, кроме меню контактов? :)

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
14 года 3 мес. назад #55 от cy6
При прорисовке диалоговых элементов плагина сразу встает вопрос о доступе к параметрам текущей темы. Кроме PG_THEME_PIC, которая позволяет получать картинки из темы, я больше ничего в API и коде RnQ 1100 не нашла. Может смотрела невнимательно, или их действительно нет? :unsure:

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

Доступ к самому файлу основных настроек темы, минуя саму крысу, разумеется возможен. Но это чревато для плагина дублированием кода, отвечающего за zip распаковку.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
13 года 6 мес. назад - 13 года 6 мес. назад #56 от cy6
Плагин никак не оповещается о изменении темы, есть только команда PC_RELOAD_THEME, обновить текущую тему из плагина.
Не хватает событий PE_THEME_CHANGED, PE_THEME_RELOADED.

Не хватает возможности добавить в список capability, собственный GUID плагина, один или несколько. Команды типа PC_ADD_CAPABILITY <GUID>.
Очень нужен, например, для определения поддержки удаленного RnQ тех же возможностей, что и локальный (грубо говоря, установлен ли плагин нужной версии на удаленной системе).
Также, для поддержки сторонних доп. статусов, что менее важно.
Плюс, нужна и команда типа PG_LIST_CAPABILITIES для получения своих локальных капсов и других контактов.
Последнее редактирование: 13 года 6 мес. назад пользователем cy6.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
13 года 5 мес. назад #57 от cy6
В плагинном API не хватает возможности получить название текущей темы, PG_THEME_CURRENT.
Либо команды получения пароля на аккаунт, типа PG_PROFILE_PASSWORD, чтобы можно было вытащить название выбранной темы из запаролированного zip "db5", чтобы для раскраски в нужной теме не спрашивать его второй раз у пользователя. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: bassvazoozaDelphukdekRapid D
Время создания страницы: 0.579 секунд
Работает на Kunena форум