コード例 #1
0
        private void btnOk_Click(object sender, EventArgs e)
        {
            // проверка введённых данных
            StringBuilder errors = new StringBuilder();
            string        errMsg;

            if (!AppUtils.ValidateInt(txtCnlNum.Text, 1, ushort.MaxValue, out errMsg))
            {
                errors.AppendLine(AppPhrases.IncorrectInCnlNum).AppendLine(errMsg);
            }
            if (txtName.Text == "")
            {
                errors.AppendLine(AppPhrases.IncorrectInCnlName).AppendLine(CommonPhrases.NonemptyRequired);
            }
            if (cbCnlType.SelectedValue == null)
            {
                errors.AppendLine(AppPhrases.IncorrectCnlType).AppendLine(CommonPhrases.NonemptyRequired);
            }
            if (txtSignal.Text != "" && !AppUtils.ValidateInt(txtSignal.Text, 1, int.MaxValue, out errMsg))
            {
                errors.AppendLine(AppPhrases.IncorrectSignal).AppendLine(errMsg);
            }
            string ctrlCnlNum = txtCtrlCnlNum.Text;

            if (ctrlCnlNum != "")
            {
                if (AppUtils.ValidateInt(ctrlCnlNum, 1, ushort.MaxValue, out errMsg))
                {
                    if (Tables.GetCtrlCnlName(int.Parse(ctrlCnlNum)) == "")
                    {
                        errors.AppendLine(AppPhrases.IncorrectCtrlCnlNum).
                        AppendLine(string.Format(AppPhrases.CtrlCnlNotExists, ctrlCnlNum));
                    }
                }
                else
                {
                    errors.AppendLine(AppPhrases.IncorrectCtrlCnlNum).AppendLine(errMsg);
                }
            }
            if (txtLimLowCrash.Text != "" && !AppUtils.ValidateDouble(txtLimLowCrash.Text, out errMsg))
            {
                errors.AppendLine(AppPhrases.IncorrectLimLowCrash).AppendLine(errMsg);
            }
            if (txtLimLow.Text != "" && !AppUtils.ValidateDouble(txtLimLow.Text, out errMsg))
            {
                errors.AppendLine(AppPhrases.IncorrectLimLow).AppendLine(errMsg);
            }
            if (txtLimHigh.Text != "" && !AppUtils.ValidateDouble(txtLimHigh.Text, out errMsg))
            {
                errors.AppendLine(AppPhrases.IncorrectLimHigh).AppendLine(errMsg);
            }
            if (txtLimHighCrash.Text != "" && !AppUtils.ValidateDouble(txtLimHighCrash.Text, out errMsg))
            {
                errors.AppendLine(AppPhrases.IncorrectLimHighCrash).AppendLine(errMsg);
            }

            errMsg = errors.ToString().TrimEnd();

            if (errMsg == "")
            {
                // передача свойств входного канала в редактируемую таблицу
                try
                {
                    DataRowView dataRow = frmTable.Table.DefaultView[row.Index];
                    dataRow["Active"]       = chkActive.Checked;
                    dataRow["CnlNum"]       = txtCnlNum.Text;
                    dataRow["Name"]         = txtName.Text;
                    dataRow["CnlTypeID"]    = cbCnlType.SelectedValue;
                    dataRow["ModifiedDT"]   = DateTime.Now;
                    dataRow["ObjNum"]       = cbObj.SelectedValue;
                    dataRow["KPNum"]        = cbKP.SelectedValue;
                    dataRow["Signal"]       = txtSignal.Text == "" ? DBNull.Value : (object)txtSignal.Text;
                    dataRow["FormulaUsed"]  = chkFormulaUsed.Checked;
                    dataRow["Formula"]      = txtFormula.Text == "" ? DBNull.Value : (object)txtFormula.Text;
                    dataRow["Averaging"]    = chkAveraging.Checked;
                    dataRow["ParamID"]      = cbParam.SelectedValue;
                    dataRow["FormatID"]     = cbFormat.SelectedValue;
                    dataRow["UnitID"]       = cbUnit.SelectedValue;
                    dataRow["CtrlCnlNum"]   = txtCtrlCnlNum.Text == "" ? DBNull.Value : (object)txtCtrlCnlNum.Text;
                    dataRow["EvEnabled"]    = chkEvEnabled.Checked;
                    dataRow["EvSound"]      = chkEvSound.Checked;
                    dataRow["EvOnChange"]   = chkEvOnChange.Checked;
                    dataRow["EvOnUndef"]    = chkEvOnUndef.Checked;
                    dataRow["LimLowCrash"]  = txtLimLowCrash.Text == "" ? DBNull.Value : (object)txtLimLowCrash.Text;
                    dataRow["LimLow"]       = txtLimLow.Text == "" ? DBNull.Value : (object)txtLimLow.Text;
                    dataRow["LimHigh"]      = txtLimHigh.Text == "" ? DBNull.Value : (object)txtLimHigh.Text;
                    dataRow["LimHighCrash"] = txtLimHighCrash.Text == "" ? DBNull.Value : (object)txtLimHighCrash.Text;
                    DialogResult            = DialogResult.OK;
                }
                catch (Exception ex)
                {
                    AppUtils.ProcError(AppPhrases.WriteInCnlPropsError + ":\r\n" + ex.Message);
                    DialogResult = DialogResult.Cancel;
                }
            }
            else
            {
                ScadaUiUtils.ShowError(errMsg);
            }
        }
コード例 #2
0
 private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
 {
     appData.ErrLog.WriteException(e.Exception, CommonPhrases.UnhandledException);
     ScadaUiUtils.ShowError(CommonPhrases.UnhandledException + ":" + Environment.NewLine + e.Exception.Message);
 }
コード例 #3
0
        /// <summary>
        /// Импорт линий связи и КП
        /// </summary>
        public static DialogResult Import(DataTable tblCommLine, DataTable tblKP, Log errLog, out FrmImport frmImport)
        {
            frmImport = null;

            try
            {
                if (tblCommLine.DefaultView.Count == 0)
                {
                    ScadaUiUtils.ShowInfo(AppPhrases.NoImportData);
                    return(DialogResult.Cancel);
                }
                else
                {
                    // заполнение дерева импортируемых данных: линий связи и КП
                    frmImport = new FrmImport();
                    TreeView treeView = frmImport.TreeView;

                    try
                    {
                        treeView.BeginUpdate();
                        treeView.Nodes.Clear();

                        tblCommLine.DefaultView.Sort = "CommLineNum";
                        tblKP.DefaultView.Sort       = "CommLineNum, KPNum";
                        int kpCnt = tblKP.DefaultView.Count;
                        int kpInd = 0;

                        foreach (DataRowView rowLine in tblCommLine.DefaultView)
                        {
                            int      lineNum  = (int)rowLine["CommLineNum"];
                            TreeNode nodeLine = new TreeNode(Settings.CommLine.GetCaption(lineNum, rowLine["Name"]));
                            nodeLine.Tag = rowLine;
                            treeView.Nodes.Add(nodeLine);

                            DataRowView rowKP     = kpInd < kpCnt ? tblKP.DefaultView[kpInd] : null;
                            int         kpLineNum = rowKP == null ? -1 : (int)rowKP["CommLineNum"];

                            while (0 <= kpLineNum && kpLineNum <= lineNum)
                            {
                                if (kpLineNum == lineNum)
                                {
                                    TreeNode nodeKP =
                                        new TreeNode(Settings.KP.GetCaption((int)rowKP["KPNum"], rowKP["Name"]));
                                    nodeKP.Tag = rowKP;
                                    nodeLine.Nodes.Add(nodeKP);
                                }

                                kpInd++;
                                rowKP     = kpInd < kpCnt ? tblKP.DefaultView[kpInd] : null;
                                kpLineNum = rowKP == null ? -1 : (int)rowKP["CommLineNum"];
                            }
                        }
                    }
                    finally
                    {
                        treeView.EndUpdate();
                    }

                    // отображение формы импорта
                    return(frmImport.ShowDialog());
                }
            }
            catch (Exception ex)
            {
                string errMsg = AppPhrases.PrepareImportFormError1 + ":\r\n" + ex.Message;
                errLog.WriteAction(errMsg);
                ScadaUiUtils.ShowError(errMsg);

                return(DialogResult.Abort);
            }
        }
コード例 #4
0
 private void dataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
 {
     ScadaUiUtils.ShowError(CommonPhrases.GridDataError + ":\r\n" + e.Exception.Message);
     e.ThrowException = false;
 }
コード例 #5
0
 /// <summary>
 /// Writes the error to the log and displays a error message.
 /// </summary>
 private void ProcError(string message)
 {
     errLog.WriteError(message);
     ScadaUiUtils.ShowError(message);
 }
コード例 #6
0
ファイル: Program.cs プロジェクト: firebitsbr/scada-36
 public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
 {
     ScadaUiUtils.ShowError(e.Exception.Message);
 }
コード例 #7
0
 public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
 {
     AppData.ErrLog.WriteException(e.Exception, CommonPhrases.UnhandledException);
     ScadaUiUtils.ShowError(CommonPhrases.UnhandledException + ":\r\n" + e.Exception.Message);
 }
コード例 #8
0
ファイル: FrmMain.cs プロジェクト: lake2010/scada
        private void FrmMain_Load(object sender, EventArgs e)
        {
#if DEBUG
            System.Diagnostics.Debugger.Launch();
#endif

            // инициализация общих данных приложения
            appData.Init(Path.GetDirectoryName(Application.ExecutablePath), this);

            // локализация
            LocalizeForm();
            LocalizeAttributes();

            // проверка существования второй копии приложения
            if (SecondInstanceExists())
            {
                ScadaUiUtils.ShowInfo(AppPhrases.CloseSecondInstance);
                Close();
                log.WriteAction(Localization.UseRussian ?
                                "Вторая копия Редактора схем закрыта." :
                                "The second instance of Scheme Editor has been closed.");
                return;
            }

            // загрузка настроек приложения
            string errMsg;
            if (!settings.Load(appData.AppDirs.ConfigDir + Settings.DefFileName, out errMsg))
            {
                log.WriteError(errMsg);
                ScadaUiUtils.ShowError(errMsg);
            }

            // загрузка компонентов
            appData.LoadComponents();

            // настройка элментов управления
            lvCompTypes.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
            lblStatus.Text = "";
            FillComponentTypes();

            // создание новой схемы
            InitScheme();

            // загрузка состояния формы
            FormState formState = new FormState();
            if (formState.Load(appData.AppDirs.ConfigDir + FormState.DefFileName, out errMsg))
            {
                ImageEditor.ImageDir       = formState.ImageDir;
                ofdScheme.InitialDirectory = formState.SchemeDir;
            }
            else
            {
                log.WriteError(errMsg);
                ScadaUiUtils.ShowError(errMsg);
            }
            formState.Apply(this);
            UpdateFormStateDTO();

            // запуск механизма редактора схем
            if (appData.StartEditor())
            {
                // открытие браузера со страницей редактора
                OpenBrowser();
            }
            else
            {
                ScadaUiUtils.ShowInfo(string.Format(AppPhrases.FailedToStartEditor, log.FileName));
                Close();
            }
        }
コード例 #9
0
ファイル: FrmMain.cs プロジェクト: zuoyangithub/scada
        /// <summary>
        /// Loads a scheme template if possible.
        /// </summary>
        private void LoadSchemeTemplate(bool showMsg)
        {
            // display empty data
            changing = true;
            cbTitleComponent.DataSource = null;
            bsBindings.DataSource       = null;

            if (string.IsNullOrEmpty(interfaceDir))
            {
                if (showMsg)
                {
                    ScadaUiUtils.ShowWarning(AppPhrases.UnableLoadTemplate);
                }
            }
            else
            {
                string templateFileName = Path.Combine(interfaceDir, txtTemplateFileName.Text);

                if (File.Exists(templateFileName))
                {
                    if (SchemeParser.Parse(templateFileName, out List <ComponentItem> components,
                                           out List <ComponentBindingItem> newComponentBindings, out string errMsg))
                    {
                        // merge bindings
                        foreach (ComponentBindingItem bindingItem in newComponentBindings)
                        {
                            if (templateBindings.ComponentBindings.TryGetValue(bindingItem.CompID,
                                                                               out ComponentBinding binding))
                            {
                                bindingItem.InCnlNum   = binding.InCnlNum;
                                bindingItem.CtrlCnlNum = binding.CtrlCnlNum;
                            }
                        }

                        templateBindings.ComponentBindings.Clear();
                        newComponentBindings.ForEach(x => { templateBindings.ComponentBindings[x.CompID] = x; });

                        // fill the component combo box
                        components.Sort();
                        cbTitleComponent.ValueMember   = "ID";
                        cbTitleComponent.DisplayMember = "DisplayName";
                        cbTitleComponent.DataSource    = components;
                        cbTitleComponent.SelectedValue = templateBindings.TitleCompID;

                        // display bindings
                        bsBindings.DataSource = templateBindings.ComponentBindings.Values;

                        if (showMsg)
                        {
                            ScadaUiUtils.ShowInfo(AppPhrases.TemplateLoaded);
                        }
                    }
                    else
                    {
                        bsBindings.DataSource = null;
                        ScadaUiUtils.ShowError(errMsg);
                    }
                }
                else if (showMsg)
                {
                    ScadaUiUtils.ShowWarning(string.Format(AppPhrases.TemplateNotFound, templateFileName));
                }
            }

            changing = false;
        }
コード例 #10
0
ファイル: FrmMain.cs プロジェクト: lzbgt/scada-1
        private void FrmMain_Load(object sender, EventArgs e)
        {
            // локализация приложения
            string langDir = AppData.ExeDir + "Lang\\";
            string errMsg;

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

            if (Localization.LoadingRequired(langDir, "ScadaAdmin"))
            {
                if (Localization.LoadDictionaries(langDir, "ScadaAdmin", out errMsg))
                {
                    Translator.TranslateForm(this, "ScadaAdmin.FrmMain", null, contextExpolorer, contextInCnls);
                    AppPhrases.Init();
                    winControl.MessageText     = AppPhrases.SelectTable;
                    winControl.SaveReqCaption  = AppPhrases.SaveReqCaption;
                    winControl.SaveReqQuestion = AppPhrases.SaveReqQuestion;
                    winControl.SaveReqYes      = AppPhrases.SaveReqYes;
                    winControl.SaveReqNo       = AppPhrases.SaveReqNo;
                    winControl.SaveReqCancel   = AppPhrases.SaveReqCancel;
                }
                else
                {
                    ScadaUiUtils.ShowError(errMsg);
                }
            }

            // инициализация дерева проводника
            InitTreeView();

            // установка начального состояния разрешений элементов
            SetItemsEnabledOnConnect();
            SetItemsEnabledOnWindowAction();

            // загрузка состояния формы
            settings = new Settings();
            settings.LoadFormState();
            if (settings.FormSt.IsEmpty)
            {
                WindowState = FormWindowState.Maximized;
            }
            else
            {
                Left          = settings.FormSt.Left;
                Top           = settings.FormSt.Top;
                Width         = settings.FormSt.Width;
                Height        = settings.FormSt.Height;
                WindowState   = settings.FormSt.Maximized ? FormWindowState.Maximized : FormWindowState.Normal;
                pnlLeft.Width = settings.FormSt.ExplorerWidth;
            }
        }
コード例 #11
0
        /// <summary>
        /// Browses the server node.
        /// </summary>
        private void BrowseServerNode(TreeNode treeNode)
        {
            try
            {
                tvServer.BeginUpdate();
                bool fillNodeRequired             = false;
                TreeNodeCollection nodeCollection = null;
                ServerNodeTag      serverNodeTag  = null;
                NodeId             nodeId         = null;

                if (treeNode == null)
                {
                    fillNodeRequired = true;
                    nodeCollection   = tvServer.Nodes;
                    serverNodeTag    = null;
                    nodeId           = ObjectIds.ObjectsFolder;
                }
                else if (treeNode.Tag is ServerNodeTag nodeTag)
                {
                    fillNodeRequired = !nodeTag.IsFilled;
                    nodeCollection   = treeNode.Nodes;
                    serverNodeTag    = nodeTag;
                    nodeId           = nodeTag.OpcNodeId;
                }

                if (fillNodeRequired && nodeId != null && opcSession != null)
                {
                    Browser browser = new Browser(opcSession)
                    {
                        BrowseDirection = BrowseDirection.Forward,
                        NodeClassMask   = (int)NodeClass.Variable | (int)NodeClass.Object | (int)NodeClass.Method,
                        ReferenceTypeId = ReferenceTypeIds.HierarchicalReferences
                    };

                    ReferenceDescriptionCollection browseResults = browser.Browse(nodeId);
                    nodeCollection.Clear();

                    foreach (ReferenceDescription rd in browseResults)
                    {
                        TreeNode childNode = TreeViewUtils.CreateNode(rd.DisplayName, SelectImageKey(rd.NodeClass));
                        childNode.Tag = new ServerNodeTag(rd, opcSession.NamespaceUris);

                        // allow to expand any node
                        TreeNode emptyNode = TreeViewUtils.CreateNode(KpPhrases.EmptyNode, "empty.png");
                        childNode.Nodes.Add(emptyNode);

                        nodeCollection.Add(childNode);
                    }

                    if (serverNodeTag != null)
                    {
                        serverNodeTag.IsFilled = true;
                    }
                }
            }
            catch (Exception ex)
            {
                ScadaUiUtils.ShowError(KpPhrases.BrowseServerError + ":" + Environment.NewLine + ex.Message);
            }
            finally
            {
                tvServer.EndUpdate();
            }
        }
コード例 #12
0
        /// <summary>
        /// Отобразить форму настроек приложения
        /// </summary>
        public static void Show(TableView.Item item, DataTable tblInCnl, DataTable tblCtrlCnl,
                                DataTable tblObj, DataTable tblKP)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (tblInCnl == null)
            {
                throw new ArgumentNullException("tblInCnl");
            }
            if (tblCtrlCnl == null)
            {
                throw new ArgumentNullException("tblCtrlCnl");
            }
            if (tblObj == null)
            {
                throw new ArgumentNullException("tblObj");
            }
            if (tblKP == null)
            {
                throw new ArgumentNullException("tblKP");
            }

            // создание и перевод формы
            FrmItemInfo frmItemInfo = new FrmItemInfo();

            Translator.TranslateForm(frmItemInfo, "ScadaTableEditor.FrmItemInfo");

            // получение информации о входном канале
            if (item.CnlNum > 0)
            {
                string cnlNumStr = item.CnlNum.ToString();
                frmItemInfo.txtInCnlNum.Text = cnlNumStr;

                try
                {
                    DataView view = new DataView(tblInCnl);
                    view.RowFilter = "CnlNum = " + cnlNumStr;

                    if (view.Count > 0)
                    {
                        DataRowView rowView = view[0];
                        frmItemInfo.txtInCnlName.Text = (string)rowView["Name"];

                        int objNum = (int)rowView["ObjNum"];
                        if (objNum > 0)
                        {
                            frmItemInfo.txtInCnlObjNum.Text  = objNum.ToString();
                            frmItemInfo.txtInCnlObjName.Text = GetObjName(objNum, tblObj);
                        }

                        int kpNum = (int)rowView["KPNum"];
                        if (kpNum > 0)
                        {
                            frmItemInfo.txtInCnlKPNum.Text  = kpNum.ToString();
                            frmItemInfo.txtInCnlKPName.Text = GetKPName(kpNum, tblKP);
                        }
                    }
                }
                catch (Exception ex)
                {
                    ScadaUiUtils.ShowError(AppPhrases.GetInCnlError + ":\n" + ex.Message);
                }
            }

            // получение информации о канале управления
            if (item.CtrlCnlNum > 0)
            {
                string ctrlCnlNumStr = item.CtrlCnlNum.ToString();
                frmItemInfo.txtCtrlCnlNum.Text = ctrlCnlNumStr;

                try
                {
                    DataView view = new DataView(tblCtrlCnl);
                    view.RowFilter = "CtrlCnlNum = " + ctrlCnlNumStr;

                    if (view.Count > 0)
                    {
                        DataRowView rowView = view[0];
                        frmItemInfo.txtCtrlCnlName.Text = (string)rowView["Name"];

                        int objNum = (int)rowView["ObjNum"];
                        if (objNum > 0)
                        {
                            frmItemInfo.txtCtrlCnlObjNum.Text  = objNum.ToString();
                            frmItemInfo.txtCtrlCnlObjName.Text = GetObjName(objNum, tblObj);
                        }

                        int kpNum = (int)rowView["KPNum"];
                        if (kpNum > 0)
                        {
                            frmItemInfo.txtCtrlCnlKPNum.Text  = kpNum.ToString();
                            frmItemInfo.txtCtrlCnlKPName.Text = GetKPName(kpNum, tblKP);
                        }
                    }
                }
                catch (Exception ex)
                {
                    ScadaUiUtils.ShowError(AppPhrases.GetCtrlCnlError + ":\n" + ex.Message);
                }
            }

            // отображение формы
            frmItemInfo.ShowDialog();
        }
コード例 #13
0
 /// <summary>
 /// Writes the error to the log and displays a error message.
 /// </summary>
 public void ProcError(string message)
 {
     ErrLog.WriteError(message);
     ScadaUiUtils.ShowError(message);
 }
コード例 #14
0
ファイル: FrmMain.cs プロジェクト: lzbgt/scada-1
        private void btnDelete_Click(object sender, EventArgs e)
        {
            // удаление набора или представления
            if (selViewSet == null && selViewInfo == null)
            {
                ScadaUiUtils.ShowError(AppPhrases.ChooseViewToDelete);
            }
            else
            {
                if (selViewInfo == null)
                {
                    // удаление набора таблиц
                    int ind = viewSettings.ViewSetList.IndexOf(selViewSet);
                    viewSettings.ViewSetList.RemoveAt(ind);
                    tvTableSets.Nodes.RemoveAt(ind);

                    // определение выбранного набора таблиц
                    if (--ind < 0)
                    {
                        ind = 0;
                    }

                    if (ind < viewSettings.ViewSetList.Count)
                    {
                        selViewSet = viewSettings.ViewSetList[ind];
                        tvTableSets.SelectedNode = tvTableSets.Nodes[ind];
                    }
                    else
                    {
                        selViewSet = null;
                        tvTableSets.SelectedNode = null;

                        txtName.Text          = "";
                        txtName.Enabled       = false;
                        lblDir.Visible        = true;
                        lblFile.Visible       = false;
                        txtDirOrFile.Text     = "";
                        txtDirOrFile.Enabled  = false;
                        btnSelectView.Visible = false;
                    }
                }
                else
                {
                    // удаление представления
                    int tableInd = selViewSet.Items.IndexOf(selViewInfo);
                    selViewSet.Items.RemoveAt(tableInd);
                    int      tableSetInd  = viewSettings.ViewSetList.IndexOf(selViewSet);
                    TreeNode nodeTableSet = tvTableSets.Nodes[tableSetInd];
                    nodeTableSet.Nodes.RemoveAt(tableInd);

                    // определение выбранного представления
                    if (--tableInd < 0)
                    {
                        tableInd = 0;
                    }

                    if (tableInd < selViewSet.Count)
                    {
                        selViewInfo = selViewSet[tableInd];
                        tvTableSets.SelectedNode = nodeTableSet.Nodes[tableInd];
                    }
                    else
                    {
                        selViewInfo = null;
                        tvTableSets.SelectedNode = nodeTableSet;
                    }
                }

                viewSets_Changed();
            }
        }
コード例 #15
0
ファイル: AppUtils.cs プロジェクト: firebitsbr/scada-36
 /// <summary>
 /// Обработать ошибку, записав информацию в журнал и отобразив сообщение
 /// </summary>
 public static void ProcError(string message)
 {
     AppData.ErrLog.WriteAction(message, Log.ActTypes.Exception);
     ScadaUiUtils.ShowError(message);
 }
コード例 #16
0
ファイル: FrmMain.cs プロジェクト: lzbgt/scada-1
        private void btnSelectView_Click(object sender, EventArgs e)
        {
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                // определение наименования, имени файла и типа представления
                string fname = openFileDialog.FileName;
                string ext   = Path.GetExtension(fname);

                string viewFile    = "";
                string viewTitle   = "";
                int    viewTypeInd = 0;

                if (ext == ".tbl" || ext == ".ofm" || ext == ".sch" || ext == ".fcs")
                {
                    string dir = selViewSet == null ? "" : ScadaUtils.NormalDir(selViewSet.Directory);
                    int    pos = dir == "" ? -1 : fname.IndexOf(dir);
                    viewFile = pos >= 0 ? fname.Substring(pos + dir.Length) : Path.GetFileName(fname);

                    if (ext == ".sch")
                    {
                        viewTypeInd = 1;
                    }
                    else if (ext == ".fcs")
                    {
                        viewTypeInd = 2;
                    }

                    try
                    {
                        using (StreamReader reader = new StreamReader(fname, Encoding.Default))
                        {
                            if (ext == ".ofm")
                            {
                                string line = reader.ReadLine();
                                pos       = line.IndexOf(": ");
                                viewTitle = pos >= 0 ? line.Substring(pos + 2) : line;
                            }
                            else
                            {
                                reader.ReadLine();
                                string line = reader.ReadLine();
                                pos = line.IndexOf("title=\"");
                                if (pos >= 0)
                                {
                                    int quotPos = line.LastIndexOf("\"");
                                    viewTitle = line.Substring(pos + 7, quotPos - pos - 7);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        ScadaUiUtils.ShowError(AppPhrases.ParseViewTitleError + ":\n" + ex.Message);
                    }
                }
                else if (ext == ".aspx" || ext == ".htm" || ext == ".html")
                {
                    int pos = webAppDir == "" ? -1 : fname.IndexOf(webAppDir);
                    viewFile    = pos >= 0 ? fname.Substring(pos + webAppDir.Length).Replace('\\', '/') : fname;
                    viewTypeInd = 3;
                }

                txtDirOrFile.Text    = viewFile;
                txtName.Text         = viewTitle;
                cbType.SelectedIndex = viewTypeInd;
            }
        }
コード例 #17
0
        private void btnClone_Click(object sender, EventArgs e)
        {
            // getting the type of data being cloned
            bool cloneInCnls = rbInCnls.Checked;

            try {
                // getting cloned channels
                string fieldName = cloneInCnls ? "CnlNum" : "CtrlCnlNum";
                var    table     = cloneInCnls ? Tables.GetInCnlTable() : Tables.GetCtrlCnlTable();
                table.DefaultView.RowFilter = numStartNum.Text + " <= " + fieldName + " and " +
                                              fieldName + " <= " + numFinalNum.Text;

                var rows = new List <DataRow>(); // cloning strings
                for (var i = 0; i < table.DefaultView.Count; i++)
                {
                    rows.Add(table.DefaultView[i].Row);
                }

                // cloning
                int  shift         = Convert.ToInt32(numNewStartNum.Value - numStartNum.Value);
                var  newObjNum     = cbObj.SelectedValue;
                var  newKPNum      = cbKP.SelectedValue;
                bool objNumChanged = newObjNum == DBNull.Value || (int)newObjNum > 0;
                bool kpNumChanged  = newKPNum == DBNull.Value || (int)newKPNum > 0;

                foreach (var row in rows)
                {
                    var newRow = table.NewRow();
                    newRow.ItemArray = row.ItemArray;
                    newRow[0]        = (int)newRow[0] + shift;

                    if (objNumChanged)
                    {
                        newRow["ObjNum"] = newObjNum;
                    }
                    if (kpNumChanged)
                    {
                        newRow["KPNum"] = newKPNum;
                    }

                    table.Rows.Add(newRow);
                }

                // storing information in the database
                var updRows = 0;
                try {
                    var adapter = table.ExtendedProperties["DataAdapter"] as SqlCeDataAdapter;
                    adapter.ContinueUpdateOnError = false;
                    updRows = adapter.Update(table);

                    string infoMsg =
                        (cloneInCnls ? AppPhrases.CloneInCnlsCompleted : AppPhrases.CloneCtrlCnlsCompleted) + "\r\n" +
                        string.Format(AppPhrases.AddedCnlsCount, updRows);
                    ScadaUiUtils.ShowInfo(updRows > 0 ? infoMsg + AppPhrases.RefreshRequired : infoMsg);
                } catch (Exception ex) {
                    // determining the number of the channel on which the error occurred
                    int cnlNum = -1;
                    if (table.HasErrors)
                    {
                        try {
                            cnlNum = (int)table.GetErrors()[0][fieldName] - shift;
                        } catch {
                            // ignored
                        }
                    }

                    // generating and displaying an error message
                    string errMsg =
                        (cloneInCnls ? AppPhrases.CloneInCnlsError : AppPhrases.CloneCtrlCnlsError) + ".\r\n" +
                        string.Format(AppPhrases.AddedCnlsCount, updRows) + "\r\n" +
                        (cnlNum < 0 ? CommonPhrases.ErrorWithColon : string.Format(AppPhrases.CloneCnlError, cnlNum)) +
                        "\r\n" + Tables.TranslateErrorMessage(ex.Message, table);

                    AppData.ErrLog.WriteAction(errMsg, Log.ActTypes.Exception);
                    ScadaUiUtils.ShowError(updRows > 0 ? errMsg + AppPhrases.RefreshRequired : errMsg);
                }
            } catch (Exception ex) {
                AppUtils.ProcError((cloneInCnls ? AppPhrases.CloneInCnlsError : AppPhrases.CloneCtrlCnlsError) +
                                   ":\r\n" + ex.Message);
            }
        }
コード例 #18
0
        private void treeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            // получение изменений после завершения редактирования узла
            if (e.Label != null /*редактирование отменено*/)
            {
                AddressBook.AddressBookItem bookItem = e.Node.Tag as AddressBook.AddressBookItem;

                if (bookItem != null)
                {
                    string oldVal = bookItem.Value;
                    string newVal = e.Label;

                    if (newVal == "")
                    {
                        e.CancelEdit = true;
                        ScadaUiUtils.ShowError(AbPhrases.EmptyValueNotAllowed);
                        e.Node.BeginEdit();
                    }
                    else if (!oldVal.Equals(newVal, StringComparison.Ordinal))
                    {
                        // установка нового значения
                        bookItem.Value = newVal;

                        // определение нового индекса узла, чтобы сохранить упорядоченность, и проверка значения
                        IList  list   = bookItem.Parent.Children;
                        int    curInd = e.Node.Index;
                        int    newInd = curInd;
                        bool   duplicated;
                        string errMsg = "";

                        if (bookItem is AddressBook.ContactGroup)
                        {
                            newInd = FindInsertIndex <AddressBook.ContactGroup>(
                                (List <AddressBook.ContactGroup>)list, curInd, out duplicated);
                            if (duplicated)
                            {
                                errMsg = AbPhrases.ContactGroupExists;
                            }
                        }
                        else if (bookItem is AddressBook.Contact)
                        {
                            newInd = FindInsertIndex <AddressBook.Contact>(
                                (List <AddressBook.Contact>)list, curInd, out duplicated);
                            if (duplicated)
                            {
                                errMsg = AbPhrases.ContactExists;
                            }
                        }
                        else if (bookItem is AddressBook.ContactRecord)
                        {
                            newInd = FindInsertIndex <AddressBook.ContactRecord>(
                                (List <AddressBook.ContactRecord>)list, curInd, out duplicated);

                            if (bookItem is AddressBook.PhoneNumber)
                            {
                                if (duplicated)
                                {
                                    errMsg = AbPhrases.PhoneNumberExists;
                                }
                            }
                            else
                            {
                                if (duplicated)
                                {
                                    errMsg = AbPhrases.EmailExists;
                                }
                                if (!CheckEmail(newVal))
                                {
                                    errMsg = AbPhrases.IncorrectEmail;
                                }
                            }
                        }

                        if (errMsg != "")
                        {
                            // возврат старого значения
                            bookItem.Value = newVal;
                            e.CancelEdit   = true;
                            ScadaUiUtils.ShowError(errMsg);
                            e.Node.BeginEdit();
                        }
                        else if (newInd != curInd)
                        {
                            // перемещение узла, чтобы сохранить упорядоченность
                            BeginInvoke(new Action(() => { treeView.MoveSelectedNode(newInd); }));
                        }

                        Modified = true;
                    }
                }
            }
        }
コード例 #19
0
        private void treeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            // receiving changes after the node has been edited
            if (e.Label != null /*editing canceled*/)
            {
                var bookItem = e.Node.Tag as AddressBook.AddressBookItem;

                if (bookItem != null)
                {
                    string oldVal = bookItem.Value;
                    string newVal = e.Label;

                    if (newVal == "")
                    {
                        e.CancelEdit = true;
                        ScadaUiUtils.ShowError(AbPhrases.EmptyValueNotAllowed);
                        e.Node.BeginEdit();
                    }
                    else if (!oldVal.Equals(newVal, StringComparison.Ordinal))
                    {
                        // setting a new value
                        bookItem.Value = newVal;

                        // defining a new node index to keep order, and checking the value
                        IList list   = bookItem.Parent.Children;
                        int   curInd = e.Node.Index;
                        int   newInd = curInd;
                        bool  duplicated;
                        var   errMsg = "";

                        if (bookItem is AddressBook.ContactGroup)
                        {
                            newInd = FindInsertIndex <AddressBook.ContactGroup>(
                                (List <AddressBook.ContactGroup>)list, curInd, out duplicated);
                            if (duplicated)
                            {
                                errMsg = AbPhrases.ContactGroupExists;
                            }
                        }
                        else if (bookItem is AddressBook.Contact)
                        {
                            newInd = FindInsertIndex <AddressBook.Contact>(
                                (List <AddressBook.Contact>)list, curInd, out duplicated);
                            if (duplicated)
                            {
                                errMsg = AbPhrases.ContactExists;
                            }
                        }
                        else if (bookItem is AddressBook.ContactRecord)
                        {
                            newInd = FindInsertIndex <AddressBook.ContactRecord>(
                                (List <AddressBook.ContactRecord>)list, curInd, out duplicated);

                            if (bookItem is AddressBook.PhoneNumber)
                            {
                                if (duplicated)
                                {
                                    errMsg = AbPhrases.PhoneNumberExists;
                                }
                            }
                            else
                            {
                                if (duplicated)
                                {
                                    errMsg = AbPhrases.EmailExists;
                                }
                                if (!CheckEmail(newVal))
                                {
                                    errMsg = AbPhrases.IncorrectEmail;
                                }
                            }
                        }

                        if (errMsg != "")
                        {
                            // returning the old value
                            bookItem.Value = newVal;
                            e.CancelEdit   = true;
                            ScadaUiUtils.ShowError(errMsg);
                            e.Node.BeginEdit();
                        }
                        else if (newInd != curInd)
                        {
                            // moving the node to keep order
                            BeginInvoke(new Action(() => { treeView.MoveSelectedNode(newInd); }));
                        }

                        Modified = true;
                    }
                }
            }
        }