예제 #1
0
        /// <summary>
        /// 주어진 VST 플러그인의 편집기 창을 엽니다.
        /// 창이 열려있지 않은 경우에는 새로운 창 인스턴스가 생성되고,
        /// 이미 열려있는 경우에는 기존의 창을 활성화합니다.
        /// </summary>
        /// <param name="plugin">VST 플러그인</param>
        public void OpenEditor(Vst.Plugin plugin)
        {
            if (_table.TryGetValue(plugin, out PluginEditorWindow window))
            {
                // 이미 열려있는 창을 활성화
                window.Activate();
            }
            else
            {
                // 새로운 창 인스턴스 생성 후 열기
                PluginEditorWindow newWindow = new PluginEditorWindow(plugin);
                newWindow.Closed += PluginWindow_Closed;
                _table.Add(plugin, newWindow);

                newWindow.Show();
            }
        }
예제 #2
0
        /// <summary>
        /// 주어진 VST 플러그인의 편집기 창을 엽니다.
        /// 창이 열려있지 않은 경우에는 새로운 창 인스턴스가 생성되고,
        /// 이미 열려있는 경우에는 기존의 창을 활성화합니다.
        /// </summary>
        /// <param name="plugin">VST 플러그인</param>
        public void OpenEditor(Vst.PluginBase plugin)
        {
            if (_table.TryGetValue(plugin, out PluginEditorWindow window))
            {
                // 이미 열려있는 창을 활성화
                window.Activate();
            }
            else
            {
                // 새로운 창 인스턴스 생성 후 열기
                PluginEditorWindow newWindow = new PluginEditorWindow(plugin);
                newWindow.Closed += PluginWindow_Closed;
                plugin.Disposed  += OnPluginDisposed;

                if (_table.Count == 0)
                {
                    System.Diagnostics.Debug.WriteLine("PluginEditorManager::OpenEditor Starting the timer.");
                    _timer.Start();
                }

                _table.Add(plugin, newWindow);
                newWindow.Show();
            }
        }