Beispiel #1
0
 public ScriptController(IScriptRunner runner, ScriptRunMode mode = ScriptRunMode.OneShot)
 {
     runner_ = runner;
     runner_.StatusChanged   += Runner_StatusChanged;
     runner_.MessageAppended += Runner_MessageAppended;
     runner_.CommentUpdated  += Runner_CommentUpdated;
     Mode = mode;
 }
Beispiel #2
0
        public static ScriptController Register(string script_path, ScriptRunMode mode)
        {
            if (script_path == null)
            {
                return(null);
            }

            /* ファイルが存在しなければ無視 */
            if (!File.Exists(script_path))
            {
                return(null);
            }

            var controller   = (ScriptFileController)null;
            var add_state    = false;
            var update_state = false;

            lock (controller_list_sync_) {
                /* 登録リストから検索 */
                controller = controller_list_.Find(script => script.ScriptPath == script_path);

                /* 未登録の場合は新規登録 */
                if (controller == null)
                {
                    controller = new ScriptFileController(script_path);
                    controller_list_.Add(controller);
                    add_state = true;
                }
            }

            /* モード変更 */
            if ((controller != null) && (controller.Mode != mode))
            {
                controller.Mode = mode;
                update_state    = true;
            }

            /* イベント */
            if (add_state)
            {
                ControllerListUpdated?.Invoke();
            }
            else if (update_state)
            {
                ControllerStatusUpdated?.Invoke(controller);
            }

            return(controller);
        }