Re[5]: Кто хочет записаться в добровольцы?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 09.12.02 19:49
Оценка:
Здравствуйте, godwizard, Вы писали:

G>Ну не скажи...


Скажу.

G>Если как у вас делать, т.е. на dll, то вся функциональность сохраниться.


Какие у нас dll? Нет у нас никакх таких dll, у нас сборки одни.

G>ну насчет этого погорячился наверно


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

using System;
using System.Text;
using System.Collections;
using System.ComponentModel;

using RSDN.Janus;
using RSDN.Janus.Plugins;

namespace RSDN.Janus.StdPlugs
{
        /// <summary>
        /// Summary description for CitationPlugin.
        /// </summary>
    //Этот атрибут - все что нужно для того чтобы янус нашел его и загрузил в свои коллекции
        [JanusPlugin("Цитирование", 
                        Description = "Вставляет случайную цитату из набора заданных")]
    //Реализация интерфейса ITaglinePlugin - признак того, что это плагин таглайна
    //Реализация IConfigurablePlugin - признак того что плагин имеет настройки
        public class CitationPlugin : ITaglinePlugin, IConfigurablePlugin
        {
                public CitationPlugin()
                {
                }

                public string TagId
                {
                        get
                        {
                                return "citation";
                        }
                }

                public string GetTagString()
                {
                        if((config.Citations == null) || (config.Citations.Length < 1))
                                return "<no any citation>";
                        Random rnd = new Random();
                        string s;
                        if(config.QueryType == CitationQueryType.Случайно)
                        {
                                int cp = rnd.Next(config.Citations.Length);
                                s = config.Citations[cp];
                        }
                        else
                        {
                                if(config.lastPosition >= config.Citations.Length)
                                        config.lastPosition = 0;
                                s = config.Citations[config.lastPosition];
                        }
                        return s;
                }

                private CitationPluginConfig config = new CitationPluginConfig();
                public object Config
                {
                        get {return config;}
                        set {config = (CitationPluginConfig)value;}
                }
        }

        public enum CitationQueryType
        {
                Случайно,
                Поочереди
        }

    //Произвольный класс с настройками. Все публичные поля и свойства будут сериализованы в файл конфигурации,
    //а при старте автоматически десериализованы
        public class CitationPluginConfig
        {
                [DisplayName("Имя макроса"),
                                Description("Имя макроса, которое нужно указывать в строке таглайна"),
                                Category("Общие")]
                public string TagId
                {
                        get {return "@@citation";}
                }

                [DisplayName("Версия плагина"),
                                Description("Версия плагина"),
                                Category("Общие")]
                public string Version
                {
                        get {return "1.0 alpha 1";}
                }

                private string[] citations;
                [DisplayName("Цитаты"),
                                Description("Список цитат"),
                                Category("Цитаты")]
                public string[] Citations
                {
                        get {return citations;}
                        set {citations = value;}
                }

                public int lastPosition = 0;
                private CitationQueryType queryType;
                [DisplayName("Тип выборки"),
                                Description("Тип выборки цитат"),
                                Category("Цитаты")]
                public CitationQueryType QueryType
                {
                        get {return queryType;}
                        set {queryType = value;}
                }
        }

}
... << RSDN@Home 1.0 beta 2 (np: тихо) >>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.