示例#1
0
        public override IEnumerable<Kbtter4Plugin> Load(Kbtter instance, IList<string> filenames)
        {
            var files = filenames.Where(p => p.EndsWith(".py"));
            var ret = new List<Kbtter4IronPythonPlugin>();

            engine = Python.CreateEngine();

            var context = HostingHelpers.GetLanguageContext(engine) as PythonContext;
            var path = context.GetSearchPaths();
            path.Add(Environment.CurrentDirectory + "\\");
            engine.SetSearchPaths(path);

            engine.Runtime.LoadAssembly(typeof(Status).Assembly);

            foreach (var i in files)
            {
                try
                {
                    var scope = engine.CreateScope();
                    scope.SetVariable("Kbtter4", new Kbtter4PluginProvider(instance));
                    var src = engine.CreateScriptSourceFromFile(i);
                    var code = src.Compile();
                    code.Execute(scope);
                    var p = new Kbtter4IronPythonPlugin(scope,instance);
                    ret.Add(p);
                }
                catch (Exception e)
                {
                    instance.LogError(String.Format("プラグイン読み込み中にエラーが発生しました : {0}\n{1}", i, e.Message));

                }
            }

            return ret;
        }
示例#2
0
 public void Initialize()
 {
     kbtter   = Kbtter.Instance;
     listener = new PropertyChangedEventListener(kbtter);
     CompositeDisposable.Add(listener);
     RegisterHandlers();
     kbtter.Initialize();
     setting = Kbtter3Extension.LoadJson <Kbtter3Setting>(App.ConfigurationFileName);
     TimelineStatuses.CollectionChanged += (s, e) =>
     {
         DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
         {
             if (TimelineStatuses.Count > setting.MainWindow.StatusesShowMax)
             {
                 TimelineStatuses.RemoveAt(setting.MainWindow.StatusesShowMax);
             }
         }));
     };
     TimelineNotifications.CollectionChanged += (s, e) =>
     {
         DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
         {
             if (TimelineNotifications.Count > setting.MainWindow.NotificationsShowMax)
             {
                 TimelineNotifications.RemoveAt(setting.MainWindow.NotificationsShowMax);
             }
         }));
     };
 }
示例#3
0
 public override void Initialize(Kbtter kbtter)
 {
     this.kbtter = kbtter;
     luas        = new List <Lua>();
     ep          = new Kbtter3PluginHandlerRegisterableEventProvider {
         Instance = kbtter
     };
 }
示例#4
0
 protected override void Dispose(bool disposing)
 {
     base.Dispose(disposing);
     mainw  = null;
     kbtter = null;
     user   = null;
     ShowingStatuses.Clear();
     ShowingFavorites.Clear();
     ShowingFriends.Clear();
     ShowingFollowers.Clear();
 }
示例#5
0
 public Task <IEnumerable <TwitterStatus> > GetHomeTimelineStatusesByRest()
 {
     return(Task <IEnumerable <TwitterStatus> > .Run(() =>
     {
         if (_tlstarted)
         {
             return null;
         }
         _tlstarted = true;
         var t = Kbtter.GetHomeTimelineStatuses(TimelineStartupLoadStatusCount);
         _stcache.AddRange(t);
         return t;
     }));
 }
示例#6
0
        public override IEnumerable<Kbtter4Plugin> Load(Kbtter instance, IList<string> filenames)
        {
            var list = new List<Kbtter4LuaPlugin>();
            var files = filenames.Where(p => p.EndsWith(".lua"));
            foreach (var i in files)
            {
                try
                {
                    Lua l = new Lua();
                    l.LoadCLRPackage();
                    l["Kbtter4"] = new Kbtter4PluginProvider(instance);
                    l.DoFile(i);
                    list.Add(new Kbtter4LuaPlugin(l,instance));
                }
                catch (Exception e)
                {
                    instance.LogError("Luaプラグイン読み込み中にエラーが発生しました : " + e.Message);
                }
            }

            return list;
        }
示例#7
0
 public Kbtter4PluginProvider(Kbtter ins)
 {
     Instance = ins;
 }
示例#8
0
 public abstract IEnumerable<Kbtter4Plugin> Load(Kbtter instance, IList<string> filenames);
示例#9
0
 public override void Initialize(Kbtter kbtter)
 {
     ep = new Kbtter3PluginEventProvider {
         Instance = kbtter
     };
 }
示例#10
0
 public Kbtter4LuaPlugin(Lua l,Kbtter k)
 {
     ins = k;
     lua = l;
 }
示例#11
0
 /// <summary>
 /// ローダー自身を初期化します。
 /// </summary>
 /// <param name="kbtter">Kbtter3 Modelのインスタンス</param>
 public abstract void Initialize(Kbtter kbtter);
示例#12
0
 public Kbtter4IronPythonPlugin(ScriptScope code,Kbtter k)
 {
     ins = k;
     this.scope = code;
 }
示例#13
0
 /// <summary>
 /// ローダー自身を初期化します。
 /// </summary>
 /// <param name="kbtter">Kbtter3 Modelのインスタンス</param>
 public abstract void Initialize(Kbtter kbtter);
示例#14
0
 public override void Initialize(Kbtter kbtter)
 {
     this.kbtter = kbtter;
     luas = new List<Lua>();
     ep = new Kbtter3PluginHandlerRegisterableEventProvider { Instance = kbtter };
 }
示例#15
0
 public override void Initialize(Kbtter kbtter)
 {
     ep = new Kbtter3PluginEventProvider { Instance = kbtter };
 }