Новости

Обновление исправляет совместимость с Freenode после обновления этой сетью версии IRCd.

Вышел второй релиз-кандидат KVIrc 4.0

Ричард Столлман дал автограф проекту и пожелал успеха в разработке.

Image:Feed.png RSS

Материал из IRC клиент KVIrc.

Перейти к: навигация, поиск

Содержание

[править] Окна и оконные идентификаторы

[править] Введение

Начиная с релиза 3.0.0, оконная структура KVirc сильно усложнилась. Более старые релизы позволяли иметь 1 подключение в окне, и команды выполнялись для каждого окна отдельно. Поиск нужного окна в таком случае был достаточно прост: его можно было опрелелить по имени (канплп или привата) т.к. не было возможности обратиться к окнам, принадлежащим другому подключению к серверу. Окна имели уникальное имя в пределах одного подключения, что гарантировано IRC протоколом и ядром KVirc.

В текущей версии уникальность названий окон не гарантируется.

[править] Сценарий

Скриптинговый движок сейчас один для всего приложения. Он может оперировать с любым количеством подключений к серверу.

* Приложение (глобальный парсер команд)

      o Фрейм X

            + Консоль M (IRC context)

                  # Окна каналов
                  # Окна приватов
                  # Другие окна этого сервера

            + Консоль N (IRC context)

                  # Окна каналов
                  # Окна приватов
                  # Другие окна этого сервера

            + Другие окна
            + ...

      o Фрейм Y

            + Консоль O (IRC context)

                  # Окна каналов
                  # Окна приватов
                  # Другие окна этого сервера

            + Консоль P (IRC context)

                  # Окна каналов
                  # Окна приватов
                  # Другие окна этого сервера

            + Другие окна
            + ...

      o ...

Обозначения вводятся для того, чтобы исключить двусмысленность.

[править] Основные представления

Каждое окно в KVIrc имеет четыре основных параметра:

  • уникальный числовой идентификатор (ID)
  • логическое имя
  • идентификатор типа
  • текст заголовка

Числовой идентификатор (ID окна) уникален для каждого приложения, и только он возвращается функцией $window. Идентификатор задаётся KVIrc`ом, когда окно создаётся, и не меняется до того момента, пока оно не будет уничтожено. Логическое имя - это свойство некоторой части окон. Оно обычно совпадает с первой частью заголовка окна. Например, для окна канала это будет название канала, для приватов это будет список целей. Для некоторых других окон логическое имя соответствует тексту заголовка. Это будет обсуждаться дальше.

Идентификатор типа описывает свойства определенного окна. Для окон каналов он будет иметь значение "channel", для окон приватов "query", для окон консолей "console" и т.д.

[править] IRC контексты

KVIrc может содержать одонвременно открытыми неограниченное число консолей (окон сервера). Каждая консоль связана с IRC контекстом.

IRC контекст это набор ресурсов и программных средств для работы с одним соединением. Каждый IRC контекст принадлежит одной консоли и наоборот.

IRC контекст может быть в подключенном или отключенном состоянии. Когда он подключен, он содержит набор окон под консолью. В основном это окна приватов и каналов. Эти окна могут существовать ТОЛЬКО если принадлежат определенному контексту.

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

Каждый контекст также имеет свой уникальный номер (смотри $context).

Since to a single IRC context may correspond only a single irc connection, when in connected state, the IRC context may be referred also as connection or connection context, and the associated IRC context Id can be referred as connection ID or connection context ID. There are classes of windows that are not bound to any IRC context: this includes user created windows, DCC windows, browsers etc. KVIrc will try to keep that windows with unique logical names.

[править] How to identify a window

So what we have until now is:

  • Each window has its own unique window ID: we will refer windows always using this identifier.
  • Each window has a set of properties including: window type, logical name.
  • Subsets of windows are bound to a single IRC context

The simplest (but also the less significant) method of looking for a window is to finding it by caption. The $window function finds the first KVIrc window matching the "caption text" and returns its window ID. This method will likely fail when there are more windows with the same caption text; for this reason several specific functions have been added to allow finding the correct window. The $console finds a console window bound to a specified IRC context. The $channel finds a channel window matching the specified name and bound to a specified IRC context. The $query finds a query window that has a specified target and is bound to a specified IRC context.

Личные инструменты
Инструменты
Наши кнопки
Размести кнопку KVirc у себя на сайте:
www.kvirc.ru - кроссплатформенный IRC клиент с богатым графическим интерфейсом и внутренним языком скриптинга
Друзья и спонсоры
  • Fireforge.net
Linux coutner