• C# Miranda xjuick Господа тестирующие 0.0.4, могёте обновиться?..
    Я там никаких новых фич не добавлял, зато постарался всячески облегчить "первый запуск".
    В идеале теперь в конфиг лазить не нужно, чтобы посмотреть дефолтное поведение плагина, без разницы что у вас: TabSRMM/SRMM/Sciver.

    Можете удалить конфиг (предварительно сохранив, если меняли там что-то) и попробовать поставить плагин так, будто бы первый раз его видите. Т.е. банально скопировать в папку "plugins", а после запустите и скажите — прокатило ли. :)

Replies (52)

  • @xa0c, И вряд ли будет.
  • @xa0c, Ага, работает. Вроде стабильно. Scriver.

    Конфиг удалял. Сам пересоздался без проблем.
  • @nibb13, Ну, я имею ввиду: так типа проще и наглядней должно было получиться. Не нужно вспоминать как аккаунт жабера называли, можно переключаться с табсрмм на скривер/срмм без правки конфига. Типа теперь про конфиг можно даже вообще забыть, если кнопки на тулбаре устраивают, если пункты в меню никакие удалять/добавлять не хотите.
  • @xa0c, При попытке отцепить трэд в отдельное окно как-то криво отцепляет. Говорит "GetContactInfo() -> Null ID [???]" и создаёт Unknown Contact. При его удалении Hyphen выкидывает эксепшн:
    === Exception dump ===
    System.NullReferenceException: Object reference not set to an instance of an object.
    at xJuick.Fork.ContactManager.MirandaDatabase_ContactDeleted(Object sender, MirandaContactEventArgs e)
    at Virtuoso.Miranda.Plugins.Infrastructure.EventPublisher.WeakInvokeChain[TEventArgs](MirandaEventHandler`1 handler, Object sender, TEventArgs eventArgs)
    at Virtuoso.Miranda.Plugins.Infrastructure.MirandaDatabase.RaiseContactEvent(MirandaEventHandler`1 handler, UIntPtr wParam)
    at Virtuoso.Miranda.Plugins.Infrastructure.MirandaDatabase.<add_ContactDeleted>b__4(UIntPtr wParam, IntPtr lParam)
    at Virtuoso.Miranda.Plugins.Infrastructure.HookDescriptor.SafeCallbackStub(UIntPtr wParam, IntPtr lParam)

    Опять Scriver? :)
  • @nibb13, Это всегда так было (пробовал с предыдущими 0.0.4?) или с сегодняшней версией только?
  • @xa0c, С сегодняшней. Предыдущая (время билда — 21:48, 11.02.2010) работает хорошо. Только при autofork падает.

    Вообще, кстати, предлагаю к версии дописывать номер билда. Удобней же будет. :)
  • @nibb13, Да я думаю 0.0.4 последней будет. Так что поздно уже номера билдов дописывать. :)
    ...вот про падения на autofork молчать-то не надо было %)
    Сейчас переключусь на Scriver, попробую поотделять окна...
  • @xa0c, У меня не было времени его серьёзно потестить. Один раз упала на autofork — отключил — работает. А сегодня уже новая версия...
  • @xa0c, А тег какой стоит? :)
  • @nibb13, Что-то не получается у меня на Scriver его уронить. Если у тебя она стабильно падает на отделении любого треда, могу попробовать в трай-кэч тот кусок взять, скажешь что за эксепшен.
  • @xa0c, Исходник же открыт! :)
  • @xa0c, Я против!!!!11111
    (Сорсы итак в публичном SVN :))
  • @xa0c, Ты про последнюю версию или про падение на авто-отделении?
  • @nibb13, Про последнюю.
  • @xa0c, Хмм, ну, тоже вариант...
    Кстати, может от версии Scriver'а зависит? У меня — 2.8.1.1 Вроде как, довольно старая. Не слежу за его обновлениями.
  • @nibb13, У меня эта же. Ещё и миранда 0.8.10 вдобавок. Сейчас перекомпиляю тебе.
  • @xa0c, спросил при запуске какой протокол использую. но дал выбрать только jabber (у меня протокол называется juick). и что то вообще работать перестал. либо я забыл где то что то еще подкрутить =)
  • @DeeZ, Гм. Там перебираются все контакты, у контактов, у которых jid == juick@juick.com берётся имя протокола и добавляется в тот выпадающий список. Задумывалось так О-о
  • @xa0c, ну видимо он взял внутреннее имя, а не протокол (которое лля заполнения не обязательное но там у меня джабер). не пойму почему в конфиге джидом указан jubo ? меняю на джуйк — пишет что то про ZERO и говорит что плагин отключен
  • @DeeZ, В конфиге juick больше не указывается. jubo там в разделе "additional contacts" — дополнительные контакты, в которых должен работать плагин.
    ...а по поводу имени протокола... Хмм... Миранда 0.8? 0.9? Возможно, в 0.9 они поменяли интерфейс.
  • @xa0c, я зашел. удалил ак — плагин ахуев ругнулся =)
  • @xa0c, 09
  • @DeeZ, Хмм... Значит, мне надо будет 0.9 поставить, попробовать...
  • @DeeZ, создал новый ак (после удаления предыдцщего). пустой еще. ростер не загрузл.миранда упала (думаю плагин пытался что то подцепить потому что больше плагинов нет. все по минимуму). после перезапуска плагин ругнулся что найдено 0 протоколов с жуйком.
  • @xa0c, Не... Там как раз касательно протоколов тонкий момент:
    MS_PROTO_ENUMPROTOS :PAnsiChar = 'Proto/EnumProtos'; // MIRANDA_VER >= $800
    MS_PROTO_ENUMACCOUNTS:PAnsiChar = 'Proto/EnumAccounts'; // MIRANDA_VER >= $800
    MS_PROTO_ENUMPROTOCOLS:PAnsiChar = 'Proto/EnumProtocols';// MIRANDA_VER < $800
    MS_PROTO_ENUMPROTOS возвращает бэйс имена на 0.8, MS_PROTO_ENUMPROTOCOLS возвращает именно те имена, которые интернал, которые нужны плагину. Но тоже на 0.8. Как оно на 0.9 — ещё не смотрел.
  • @DeeZ, Вот что должно попадать в выпадающий список, который при первом старте мой плагин показывает: img85.imageshack.us (справа)
  • @DeeZ, P.S. Поставил 0.9.5 миранду + 3.х TabSRMM, скопировал свой профиль, плагин, запустил — протоколы показались корректно. Т.е. различий в API нет.
  • @xa0c, я создавал всегда новый провиль. пустой. с пустым профилем сразу лучше не ложить плагнин. он начинает угаться, выдавать ошибки (про ноль протоколов потом еще какой то окно выскакивает с ошибками). вобщем пугающая плагина активность. типа зачем я тут, тут никого нет. аа! конечным пользователям может быть неприятно :) пусть он лучше в лог пишет все это, а не донимает юзера тыканием в ОК )
  • @xa0c, да. показыввается внутреннее имя ) уже понял.
  • @DeeZ, Блин. Создал новый профиль, попробовал. Всё равно ошибок при работе не пишет: показывает окно с нулём протоколов (чего, в принцепе быть не должно), затем окно "0 протоколов найдено", затем окно "Плагин будет отключён" и эксепшен "Unable to hook event". Последний эксепшен можно пофиксить. Более никаких эксепшенов не заметил: окно чата открылось без плагина, после перезапуска снова увидел окно выбора протоколов, выбрал протокол, плагин заработал.
    ЧЯДНТ? тТ
  • @xa0c, Ну вот об этих трех и говорю. попробуй создать нотокол. опять ругнется. попробуй подключиться — опять ругнется.пока не перезапустишь миранду.
  • @DeeZ, Так, децл поподробней: создать протокол в какой момент? Когда их 0 и плагин уже сказал, что нашёл 0? Или когда их не 0, ты запустил миранду, но ещё не открывал окно жуйки, или ...?
    Подключиться куда? И в какой момент?

    ...п.с. в принципе, я могу добавить проверку: если протоколов (любых) вообще ноль, то ничего не показывать, просто тихи и смиренно помирать до следущего запуска.
  • @xa0c, скинул все плагины в одну папку. запустил миранду. она предложился создать профиль. соглашаемся. миранда стартует. получаем окна твоего плагина.
    заходим в аккаунты. создаем. вот тут у меня по моему что то вылезло... (возможно ощибаюсь). пробуем подкллючиться. получаем ошибку. перезапускаем миранду. плагин спрашивает в каком протоколе следаить? (кстати надо ли это спрашивать если протокол найден всего 1. вариантов то все равно нет. если не определил остальыне то и следить не будет. и выбрать их не даст. а если не нашел донимает тем что ничего не найдено). жмем ок. т.к. вариантов то нет :) подключаемся. (вот тут у меня ничего не заработало. уже забыл что надо сделать что бы он стал работать. по моему куда то еще залесть что то изменить. по крайней мере лезу в настройки ставлю твой шаблон из скинов). отключаюсь. удаляю этот ак. — опять какая то ошибка. создаю новый ак тут же — опять ошибка и миранда падает. =) вот примерно что я сегодня поимел
  • @DeeZ, Ща буду пытаться повторять.
    Да, описаный выше "автоматизм" для IE не совсем применим. Если менеджером чата стоит не IE, то придётся в настройках миранды его ставить (чой-то я сам уже почти пересел с IE на tabsrmm), и указывать мой (свой, редактированый) шаблон.
    Но всё равно неясно: если у тебя был поставлен не IE и не Hpp, значит обычный ричэдит (tabsrmm хоть?), а следовательно плагин должен был заработать в нём сразу.

    ...про 1 протокол — мысль, да. Но что делать, если ты указал протоколом "123", а я такой не нашёл, нашёл другой (и только один) "1234". Тоже по-тихому подменять? :)
    Емнип, в этом "списке" не учитываются "отключённые в аккаунтах" протоколы (чем я часто во время тестов пользуюсь). Т.е., если ты сознательно отключил "123", то я не получу контактов этого протокола, а следовательно не найду и жуйк.
  • @xa0c, зачем а) ? почему если он всего 1 давать выбор? выбирать то не из чего ))
  • @xa0c, то есть я про а) и 6.
  • @DeeZ, Блин. Шустро отвечаешь, не дал исправить.
    6 — объяснял выше. Если аккаунт временно отключён, а в настройках плагина указан. Т.е., чтоб юзер соображал что происходит.
  • @xa0c, да не надо юзеру лишних окон. отключил я его не просто так, а потому что хочу, и следовательно хочу забыть пока про этот протокол (у меня например 2 таких есть). и я не хочу при каждом зпуске миранды жать "ок", потому что какой то плагин сообщает, что он есть, но не работает. ну не работат — и ладно, я то тут прчием? лучше лог пиши.
  • @DeeZ, а за день запускаю приранду раз 4-5. поверь я твой плагин после такого невзлюблю :)
  • @xa0c, Йо-майо. Что я за сообщения тут наудалял? %)
    В общем, для логов. Коммент №46:
    Потыкал...
    1. Миранда запускается, предлагает создать профиль
    2. Создаю профиль, само открывается окно создания аккаунтов.
    3. Создаю аккаунт, коннекчусь
    4. Тыкаю на жуйк, чтобы открыть чат: появляется окно с нулём протоколов. (о_О)
    5. Тыкаю "ОК" (Выбора-то нет ©)
    6. Ошибок нет, но плагин не работает.
    7. Перезапускаю миранду: плагин всё так же не работает.
    8. Удаляю конфиг, презапускаю миранду, плагин пишет "Cant find TabSRMM's Buttons API" (не табсрмм стоял менеджером чатов), затем отображает окно с единственным протоколом, выбираю
    9. Всё работает.
    10. Ошибок с 1 по 10 пункт не было (unable to hook пофиксил).
    11. Всё верно описАл?

    Коммент №47 (исправленный):
    Так. В общем, попилил. Теперь логика такая:
    1. Создаётся новый профиль, плагин в этот момент видит, что протоколов 0 и по-тихому выгружается
    2. Юзер продолжает работать с мирандой, создаёт новый аккаунт жабера.
    3. Юзер загружает ростер
    3.5 Опционально: он может включить модуль для отображения чата тот, который больше устраивает: tabsrmm/srmm/scriver
    4. Юзер рестартует миранду
    5. Плагин загружается, смотрит, что кол-во протоколов != 0, что кол-во аккаунтов != 0, ищет жуйк.
    6. Если находит (пусть даже и всего у одного аккаунта) — показывает окно выбора аккаунта.
    7. После нажатия на "ОК" можно работать.

    Дополнения:
    а) если кол-во протоколов != 0, и кол-во аккаунтов != 0, но жуйк не найден, то получим сообщение "found zero protocols with juick".
    б) scriver, оказывается, в дефолт-настройке отображает сверху какое-то дикое окно с ником. оно тоже RichEdit20W. Офигенно, но даже галка в настройках "не показывать инфо-панель" не уничтожила это окно. Т.е. оно скрылось, но всё так же существует. Надо подумать.

    ...ммм что скажете? :)
  • @DeeZ, Если ты просто перезапускаешь её, то в чём проблема? Просто не нужно за день 4-5 раз включать-выключать протокол, который в плагине настроил.
    Если протоколов найдено 2 и они не совпадают с тем, что в конфиге, то тут всё ясно: нужно показать окно с выбором.
    Попробуй взгялнуть с другой стороны: вот я найду 1 протокол с жуйкой, он не совпадает с конфигом, ты предлагаешь "втихую" перезаписАть конфиг, указав там найденый протокол как "рабочий". Юзер в жуйке этого аккаунта внезапно будет видеть аватары и кнопочки, а при возврате старого (основного) аккаунта не увидит в это старом аккаунте ничего, ибо в конфиге будет сохранён предыдущий.
  • @xa0c, то есть только при первой загрузке плагина, если он не нашел ничего — он скажет. после перезагрузки миранды он уже искать не будет и сообщене не выдаст?
    по поводу конфига — я думаю все таки есть жуйк 1, то выбор надо предоставлять только когда отличается от конфига. к тому же в любом случае выбор из 1 пункта, который все равно этот конфиг изменит :)
    идеально это ручное добавление хоть 100 акков. причем из окна настроек самой миранды. там же можно показывать статус плагина (работает нет, не нашел ничего, нашел но не понял). там же можно его выключать (простой галочкой). в последнем случае выключать можно из плагинов. но там непонятно что искать. какой из 4х длл нужно выключать :))
  • @DeeZ, Не-не. Главная фича: я могу отключить в миранде аккаунт с жуйком (который юзал плагин), при перезапуске получить окно с выбором из одного аккаунта (второго, тоже с жуйком, но не того, что в конфиге) и нажать отмену, что выгрузит мой плагин без изменения конфига.
    Нажав отмену и поработав с этим "вторым аккаунтом" я включу старый акк взад, перезапущу миранду и буду работать как и раньше: никаких окон не покажется.

    Если акканутов 0 или контактов 0, то он ничего не скажет.
    Если аккаунтов не 0, и контактов не 0, а найденый(е) аккаунт(ы) не совпадают с конфигом — предоставит выбор из того что нашёл.

    Про настройки я уже много раз повторял: в данный момент из дотнета это нереально.
    Плагин в списке плагинов миранды отображается "xJuick.NET" (в самом конце списка). Правда, не пробовал галочку снимать %)
  • @xa0c, то есть если я не включу тот, что прописан в конфиге — отмену придется жать при каждом запуске миранды?
  • @DeeZ, ...или-таки перезаписАть конфиг новым аккаунтом, да.
    Ты не согласен, что лучше уведомить юзера о том, отныне и навсегда (до изменения конфига) он перенастроится на другой аккаунт?
  • @xa0c, я думаю что мне может понадобиться отключить тот что из конфига, и не получать поэтому кучу лишних вопросов. думаю лучше либо молча переписать (если выбирать не из чего. и остался только 1). либо выключиться. а вот когад я второй включу — спросить. о! нашел второй, меняем? ну как так...
  • @DeeZ, Во. Мысль с определением доп. аккаунта хорошая.
    а) Если аккаунтов было два, а стал один — тихо перепишем
    б) Когда включат второй (который был до пункта "а") аккаунт, изменится количество аккаунтов, показываем окошко
    в) Если пункт "б" одновременно с отключением аккаунта из пункта "а", то аккаунт изменился, но т.к. он всего один, тоопять же тихо переписываем.

    ...только вот геморно это реализовывать. Нужно где-то список хранить.
  • @xa0c, нужно хранить только сколько было аков в прошлый раз. если изменилось (было 1 стало 2, или было 2 стало 3) то принмать решение что делать. если было 2 стало 1. переписать. если было 2 и стало 2 — ничего. если было 1 стало 2 — значит что то включили. задатьвопрос.
  • @DeeZ, ..."если было 2 и стало 2 — ничего". Нужно к этому добавить "и один из этих двух в конфиге прописан, иначе — выбор".
    В общем, идея хорошая. Я подумаю. А пока что оставлю то, что в #545987/53 описАл. :)
  • @xa0c, Версию с описанными выше допилами выложил: coding.xa0c.net