Exemple #1
0
 private void miEditPaste_Click(object sender, EventArgs e)
 {
     // вставить элемент из буфера
     if (elemClipboard != null)
     {
         elemClipboard.ID              = editorData.SchemeView.GetNextElementID();
         editorData.AddedElement       = elemClipboard;
         elemClipboard                 = (SchemeView.Element)elemClipboard.Clone();
         miSchemeCancelAddElem.Enabled = btnSchemeCancelAddElem.Enabled = true;
     }
 }
Exemple #2
0
        private void miEditCopy_Click(object sender, EventArgs e)
        {
            // копировать элемент в буфер
            SchemeView.Element elem = propGrid.SelectedObject as SchemeView.Element;

            if (elem != null)
            {
                elemClipboard       = (SchemeView.Element)elem.Clone();
                miEditPaste.Enabled = btnEditPaste.Enabled = true;
            }
        }
Exemple #3
0
        /// <summary>
        /// Выбрать элемент схемы
        /// </summary>
        public void SelectElement(string clientID, int elementID, int clickX, int clickY)
        {
            SchemeApp  schemeApp  = SchemeApp.GetSchemeApp();
            EditorData editorData = schemeApp.EditorData;

            if (schemeApp.WorkMode == SchemeApp.WorkModes.Edit && editorData.ClientID == clientID)
            {
                // выбор элемента или схемы в режиме редактирования
                SchemeView         schemeView   = editorData.SchemeView;
                SchemeView.Element addedElement = editorData.AddedElement;

                if (addedElement == null)
                {
                    SchemeView.Element elem;
                    if (elementID <= 0)
                    {
                        editorData.SelectElement(schemeView.SchemeParams);
                    }
                    else if (schemeView.ElementDict.TryGetValue(elementID, out elem))
                    {
                        editorData.SelectElement(elem);
                    }
                }
                else
                {
                    // добавление элемента в заданную позицию в режиме редактирования
                    addedElement.Location = new SchemeView.Point(clickX, clickY);
                    schemeView.ElementList.Add(addedElement);
                    schemeView.ElementDict[addedElement.ID] = addedElement;

                    // создание объекта для передачи изменений
                    SchemeView.SchemeChange change = new SchemeView.SchemeChange(SchemeView.ChangeType.ElementAdded);
                    change.ElementData = new SchemeView.ElementData(addedElement);

                    try
                    {
                        // установка изменения, которая может вызвать исключение
                        editorData.SchemeChange = change;

                        // выбор добавленного элемента
                        editorData.SelectElement(addedElement);
                        editorData.AddedElement = null;
                    }
                    catch (Exception ex)
                    {
                        WriteException(ex.Message);
                    }
                }
            }
        }
Exemple #4
0
        private void miSchemeDelElem_Click(object sender, EventArgs e)
        {
            // удаление элемента схемы
            SchemeView.Element elem = propGrid.SelectedObject as SchemeView.Element;

            if (elem != null)
            {
                // удаление элемента из представления
                editorData.SchemeView.ElementList.Remove(elem);
                editorData.SchemeView.ElementDict.Remove(elem.ID);

                // создание объекта для передачи изменений
                SchemeView.SchemeChange change = new SchemeView.SchemeChange(SchemeView.ChangeType.ElementDeleted);
                change.ElementID = elem.ID;
                editorData.TrySetSchemeChange(change);

                // очистка таблицы свойств
                propGrid.SelectedObject = null;
            }
        }
Exemple #5
0
        private void webBrowser_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            // переместить выбранный элемент при нажатии стрелок
            SchemeView.Element elem = propGrid.SelectedObject as SchemeView.Element;
            Keys keyCode            = e.KeyCode;

            if (elem != null &&
                (keyCode == Keys.Left || keyCode == Keys.Right || keyCode == Keys.Up || keyCode == Keys.Down))
            {
                // расчёт нового положения
                int x    = elem.Location.X;
                int y    = elem.Location.Y;
                int step = e.Control ? 1 : GridStep;

                if (keyCode == Keys.Left)
                {
                    elem.Location = new SchemeView.Point(x - step, y);
                }
                else if (keyCode == Keys.Right)
                {
                    elem.Location = new SchemeView.Point(x + step, y);
                }
                else if (keyCode == Keys.Up)
                {
                    elem.Location = new SchemeView.Point(x, y - step);
                }
                else if (keyCode == Keys.Down)
                {
                    elem.Location = new SchemeView.Point(x, y + step);
                }

                // установка изменения схемы
                SchemeView.SchemeChange change = new SchemeView.SchemeChange(SchemeView.ChangeType.ElementChanged);
                change.ElementData = new SchemeView.ElementData(elem);
                editorData.TrySetSchemeChange(change);
                SetFormTitleModified();
                propGrid.Refresh();
            }
        }
Exemple #6
0
        private void FrmMain_Load(object sender, EventArgs e)
        {
            // определение директории исполняемого файла приложения
            exeDir = ScadaUtils.NormalDir(Path.GetDirectoryName(Application.ExecutablePath));

            // локализация приложения
            string langDir = exeDir + "lang\\";
            string errMsg;

            if (Localization.LoadingRequired(langDir, "ScadaData"))
            {
                if (Localization.LoadDictionaries(langDir, "ScadaData", out errMsg))
                {
                    CommonPhrases.Init();
                }
                else
                {
                    ScadaUtils.ShowError(errMsg);
                }
            }

            if (Localization.LoadingRequired(langDir, "ScadaSchemeEditor"))
            {
                if (Localization.LoadDictionaries(langDir, "ScadaSchemeEditor", out errMsg))
                {
                    Localization.TranslateForm(this, "Scada.Scheme.Editor.FrmMain");
                    SchemePhrases.InitStatic();
                    openFileDialog.Filter = saveFileDialog.Filter = SchemePhrases.FileFilter;
                }
                else
                {
                    ScadaUtils.ShowError(errMsg);
                }
            }

            // инициализация данных
            SchemeApp schemeApp = SchemeApp.InitSchemeApp(SchemeApp.WorkModes.Edit);

            schemeUrl  = exeDir + "web\\ScadaScheme.html?editMode=true";
            editorData = schemeApp.EditorData;
            editorData.SelectElement = SelectElement;
            editorData.SetFormTitle  = SetFormTitle;
            log            = schemeApp.Log;
            elemClipboard  = null;
            schemeSvcHost  = null;
            domainSvcHost  = null;
            schemeExThread = null;

            // проверка запуска второй копии программы
            try
            {
                bool createdNew;
                mutex = new Mutex(true, "ScadaSchemeEditorMutex", out createdNew);

                if (!createdNew)
                {
                    ScadaUtils.ShowInfo("SCADA-Редактор схем уже запущен.\nВторая копия будет закрыта.");
                    Close();
                    return;
                }
            }
            catch (Exception ex)
            {
                log.WriteAction("Ошибка при проверке запуска второй копии программы: " + ex.Message,
                                Log.ActTypes.Exception);
            }

            // запуск WCF-служб
            if (StartWCF())
            {
                // создание и запуск потока для обмена данными со схемой
                schemeExThread = new Thread(SchemeExchange);
                schemeExThread.Start();

                // настройка элементов управления
                miEditCut.Enabled             = btnEditCut.Enabled = false;
                miEditCopy.Enabled            = btnEditCopy.Enabled = false;
                miEditPaste.Enabled           = btnEditPaste.Enabled = false;
                miSchemeCancelAddElem.Enabled = btnSchemeCancelAddElem.Enabled = false;
                miSchemeDelElem.Enabled       = btnSchemeDelElem.Enabled = false;

                // создание новой схемы
                miFileNew_Click(null, null);
            }
            else
            {
                // блокировка элементов управления
                foreach (ToolStripItem item in miFile.DropDown.Items)
                {
                    item.Enabled = item == miFileExit;
                }
                foreach (ToolStripItem item in miEdit.DropDown.Items)
                {
                    item.Enabled = false;
                }
                foreach (ToolStripItem item in miScheme.DropDown.Items)
                {
                    item.Enabled = false;
                }
                foreach (ToolStripItem item in toolMain.Items)
                {
                    item.Enabled = false;
                }
            }
        }
Exemple #7
0
 private void miEditPaste_Click(object sender, EventArgs e)
 {
     // вставить элемент из буфера
     if (elemClipboard != null)
     {
         elemClipboard.ID = editorData.SchemeView.GetNextElementID();
         editorData.AddedElement = elemClipboard;
         elemClipboard = (SchemeView.Element)elemClipboard.Clone();
         miSchemeCancelAddElem.Enabled = btnSchemeCancelAddElem.Enabled = true;
     }
 }
Exemple #8
0
        private void miEditCopy_Click(object sender, EventArgs e)
        {
            // копировать элемент в буфер
            SchemeView.Element elem = propGrid.SelectedObject as SchemeView.Element;

            if (elem != null)
            {
                elemClipboard = (SchemeView.Element)elem.Clone();
                miEditPaste.Enabled = btnEditPaste.Enabled = true;
            }
        }
Exemple #9
0
        private void FrmMain_Load(object sender, EventArgs e)
        {
            // определение директории исполняемого файла приложения
            exeDir = ScadaUtils.NormalDir(Path.GetDirectoryName(Application.ExecutablePath));

            // локализация приложения
            if (!Localization.UseRussian)
            {
                string langDir = exeDir + "lang\\";
                string errMsg;

                if (Localization.LoadDictionaries(langDir, "ScadaData", out errMsg))
                    CommonPhrases.Init();
                else
                    ScadaUtils.ShowError(errMsg);

                if (Localization.LoadDictionaries(langDir, "ScadaSchemeEditor", out errMsg))
                {
                    Localization.TranslateForm(this, "Scada.Scheme.Editor.FrmMain");
                    SchemePhrases.InitStatic();
                    openFileDialog.Filter = saveFileDialog.Filter = SchemePhrases.FileFilter;
                }
                else
                {
                    ScadaUtils.ShowError(errMsg);
                }
            }

            // инициализация данных
            SchemeApp schemeApp = SchemeApp.InitSchemeApp(SchemeApp.WorkModes.Edit);
            schemeUrl = exeDir + "web\\ScadaScheme.html?editMode=true";
            editorData = schemeApp.EditorData;
            editorData.SelectElement = SelectElement;
            editorData.SetFormTitle = SetFormTitle;
            log = schemeApp.Log;
            elemClipboard = null;
            schemeSvcHost = null;
            domainSvcHost = null;
            schemeExThread = null;

            // проверка запуска второй копии программы
            try
            {
                bool createdNew;
                mutex = new Mutex(true, "ScadaSchemeEditorMutex", out createdNew);

                if (!createdNew)
                {
                    ScadaUtils.ShowInfo("SCADA-Редактор схем уже запущен.\nВторая копия будет закрыта.");
                    Close();
                    return;
                }
            }
            catch (Exception ex)
            {
                log.WriteAction("Ошибка при проверке запуска второй копии программы: " + ex.Message,
                    Log.ActTypes.Exception);
            }

            // запуск WCF-служб
            if (StartWCF())
            {
                // создание и запуск потока для обмена данными со схемой
                schemeExThread = new Thread(SchemeExchange);
                schemeExThread.Start();

                // настройка элементов управления
                miEditCut.Enabled = btnEditCut.Enabled = false;
                miEditCopy.Enabled = btnEditCopy.Enabled = false;
                miEditPaste.Enabled = btnEditPaste.Enabled = false;
                miSchemeCancelAddElem.Enabled = btnSchemeCancelAddElem.Enabled = false;
                miSchemeDelElem.Enabled = btnSchemeDelElem.Enabled = false;

                // создание новой схемы
                miFileNew_Click(null, null);
            }
            else
            {
                // блокировка элементов управления
                foreach (ToolStripItem item in miFile.DropDown.Items)
                    item.Enabled = item == miFileExit;
                foreach (ToolStripItem item in miEdit.DropDown.Items)
                    item.Enabled = false;
                foreach (ToolStripItem item in miScheme.DropDown.Items)
                    item.Enabled = false;
                foreach (ToolStripItem item in toolMain.Items)
                    item.Enabled = false;
            }
        }