/// <summary> /// 为Recipe添加一个配置项 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btAddItem_Click(object sender, EventArgs e) { FormXCfgItemEdit fmGenItem = new FormXCfgItemEdit(); fmGenItem.SetItemAllowedTypes(new Type[] { typeof(int), typeof(double), typeof(string), typeof(bool), typeof(PointF), typeof(List <int>), typeof(List <double>), typeof(List <string>), typeof(List <bool>), typeof(List <PointF>) }); if (DialogResult.OK == fmGenItem.ShowDialog()) { string[] allItemNames = _recipe.AllItemNames(); if (null != allItemNames && allItemNames.Contains(fmGenItem.GetItemName())) { MessageBox.Show("添加数据项失败,已包含数据项:" + fmGenItem.GetItemName()); return; } _recipe.AddItem(fmGenItem.GetItemName(), fmGenItem.GetItemValue()); UcJFParamEdit pe = new UcJFParamEdit(); //if (fmGenItem.GetItemType().IsPrimitive) pe.Height = 23; pe.Width = 500; pe.IsHelpVisible = false; pe.SetParamDesribe(JFParamDescribe.Create(fmGenItem.GetItemName(), fmGenItem.GetItemType(), JFValueLimit.NonLimit, null)); //pe.SetParamType(fmGenItem.GetItemType()); pe.SetParamValue(fmGenItem.GetItemValue()); pe.IsValueReadOnly = false; //添加后状态为可编辑 tableLayoutPanel1.Controls.Add(pe); Button btDel = new Button(); btDel.Text = "删除"; btDel.Tag = fmGenItem.GetItemName(); btDel.Click += OnDelButtonClick; tableLayoutPanel1.Controls.Add(btDel); _lstItems.Add(pe); _lstDeleteItemButtons.Add(btDel); } }
void AdjustView() { if (InvokeRequired) { Invoke(new Action(AdjustView)); return; } pnInputParam.Controls.Clear(); pnOutputParam.Controls.Clear(); if (null == _method) { lbInfo.Text = " 方法未设置"; btSetSave.Enabled = false; btCancel.Enabled = false; btAction.Enabled = false; return; } lbInfo.Text = " "; _isEditting = false; btSetSave.Enabled = true; btCancel.Enabled = true; btAction.Enabled = true; string[] inputNames = _method.MethodInputNames; if (inputNames != null) { foreach (string inputName in inputNames) { UcJFParamEdit ucParam = new UcJFParamEdit(); ucParam.IsHelpVisible = false; ucParam.Height = 50; //ucParam.SetParamType(_cfg.GetItemValue(itemName).GetType());//ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName)); ucParam.SetParamDesribe(JFParamDescribe.Create(inputName, _method.GetMethodInputType(inputName), JFValueLimit.NonLimit, null)); ucParam.SetParamValue(_method.GetMethodInputValue(inputName)); pnInputParam.Controls.Add(ucParam); ucParam.IsValueReadOnly = true; } } string[] outputNames = _method.MethodOutputNames; if (null != outputNames) { foreach (string outputName in outputNames) { UcJFParamEdit ucParam = new UcJFParamEdit(); ucParam.IsHelpVisible = false; ucParam.Height = 50; //ucParam.SetParamType(_cfg.GetItemValue(itemName).GetType());//ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName)); ucParam.SetParamDesribe(JFParamDescribe.Create(outputName, _method.GetMethodOutputType(outputName), JFValueLimit.NonLimit, null)); ucParam.SetParamValue(_method.GetMethodOutputValue(outputName)); pnOutputParam.Controls.Add(ucParam); ucParam.IsValueReadOnly = false; } } }
public void AdjustRecipe2View() { if (InvokeRequired) { Invoke(new Action(AdjustRecipe2View)); return; } _lstItems.Clear(); _lstDeleteItemButtons.Clear(); tableLayoutPanel1.Controls.Clear(); EditRecipe = false; if (null == _recipe) { lbTips.Text = "Recipe未设置"; return; } lbTips.Text = "Categoty:" + _recipe.Categoty + " ID:" + _recipe.ID; string[] itemNames = _recipe.AllItemNames(); if (null == itemNames || 0 == itemNames.Length) { return; } foreach (string itemName in itemNames) { UcJFParamEdit pe = new UcJFParamEdit(); //pe.SetParamType(_recipe.GetItemValue(itemName).GetType()); pe.SetParamDesribe(JFParamDescribe.Create(itemName, _recipe.GetItemValue(itemName).GetType(), JFValueLimit.NonLimit, null)); pe.SetParamValue(_recipe.GetItemValue(itemName)); pe.IsValueReadOnly = true; pe.Height = 23; pe.Width = 500; pe.IsHelpVisible = false; tableLayoutPanel1.Controls.Add(pe); Button btDel = new Button(); btDel.Text = "删除"; btDel.Tag = itemName; btDel.Click += OnDelButtonClick; _lstItems.Add(pe); _lstDeleteItemButtons.Add(btDel); tableLayoutPanel1.Controls.Add(btDel); } EditRecipe = false; }
private void dgvTypes_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0) { return; } if (RowIndexSelected == e.RowIndex) { return; } RowIndexSelected = e.RowIndex; if (null != initor) { initor.Dispose(); initor = null; } //while (gbParams.Controls.Count > 2) // gbParams.Controls.RemoveAt(2); panelParams.Controls.Clear(); panelParams.AutoScroll = true; initor = JFHubCenter.Instance.InitorHelp.CreateInstance(dgvTypes.Rows[e.RowIndex].Cells[0].Value.ToString()); if (null == initor) { string err = string.Format("Invoke Initor's Ctor Failed!InitorHelp.CreateInstance(Type = {0}) return null", dgvTypes.Rows[e.RowIndex].Cells[0].Value.ToString()); lbTips.Text = err; //MessageBox.Show(err); return; } //int locY = tbID.Location.Y + tbID.Size.Height + 5; string[] paramNames = initor.InitParamNames; if (null == paramNames || 0 == paramNames.Length) { return; } for (int i = 0; i < paramNames.Length; i++) { string pn = paramNames[i]; JFParamDescribe pd = initor.GetInitParamDescribe(pn); UcJFParamEdit uc = new UcJFParamEdit(); //uc.Margin = new Padding(3, 10, 3, 10); panelParams.Controls.Add(uc); uc.SetParamDesribe(pd); uc.IsValueReadOnly = false; } }
/// <summary> /// 将当前所选页的工站配置更新到界面上 /// </summary> void UpdateCurrPage(bool isReload, bool enabled = false) { if (null == _station) { return; } TabPage currTP = tabControlCF1.SelectedTab; if (null == currTP) { return; } TableLayoutPanel currPanel = currTP.Controls[0] as TableLayoutPanel; JFXCfg cfg = _station.Config; if (isReload) { string category = currTP.Text; currPanel.Controls.Clear(); string[] itemNames = cfg.ItemNamesInTag(category); if (null == itemNames) { return; } foreach (string itemName in itemNames) { UcJFParamEdit ucParam = new UcJFParamEdit(); ucParam.IsHelpVisible = false; ucParam.Height = 50; ucParam.Width = 600; //ucParam.SetParamDesribe(JFParamDescribe.Create(itemName, cfg.GetItemValue(itemName).GetType(), JFValueLimit.NonLimit, null)); ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName)); currPanel.Controls.Add(ucParam); } } foreach (UcJFParamEdit ucParam in currPanel.Controls) { //object paramVal = _station.GetCfgParamValue(ucParam.GetParamDesribe().DisplayName); object paramVal = cfg.GetItemValue(ucParam.GetParamDesribe().DisplayName); ucParam.SetParamValue(paramVal); ucParam.IsValueReadOnly = !enabled; } }
void AdjustView() { timerFlush.Enabled = false; tpRealtime.Controls.Clear(); tpInitCfg.Controls.Clear(); _lstUcParam.Clear(); if (null == _method) { Label lb1 = new Label(); lb1.Text = "方法对象未设置"; tpRealtime.Controls.Add(lb1); Label lb2 = new Label(); lb2.Text = "方法对象未设置"; tpInitCfg.Controls.Add(lb1); return; } if (_method is IJFRealtimeUIProvider) { JFRealtimeUI ui = (_method as IJFRealtimeUIProvider).GetRealtimeUI(); if (null != ui) { ui.Dock = DockStyle.Fill; tpRealtime.Controls.Add(ui); timerFlush.Enabled = true; } } else { UcCommonMethodRtUi ui = new UcCommonMethodRtUi(); ui.Dock = DockStyle.Fill; ui.SetMethod(_method); tpRealtime.Controls.Add(ui); timerFlush.Enabled = true; } int locX = 3, locY = 3; if (_method is IJFConfigUIProvider)//提供参数配置界面 { Button btShowCfg = new Button(); btShowCfg.Text = "参数配置"; btShowCfg.Location = new Point(locX, locY); tpInitCfg.Controls.Add(btShowCfg); btShowCfg.Click += OnButtonClick_ShowCfgUI; locY = btShowCfg.Bottom + 2; } if (_method is IJFInitializable)//初始参数可序列化对象 { IJFInitializable initor = _method as IJFInitializable; string[] initNames = initor.InitParamNames; if (null != initNames && initNames.Length > 0) { isInitParamEditting = false; btSetSaveInit = new Button(); btSetSaveInit.Text = "编辑初始化参数"; btSetSaveInit.Location = new Point(locX, locY); btSetSaveInit.Click += OnButtonClick_InitParamSetSave; tpInitCfg.Controls.Add(btSetSaveInit); btCancelInit = new Button(); btCancelInit.Text = "取消"; btCancelInit.Location = new Point(btSetSaveInit.Right + 2, locY); btCancelInit.Click += OnButtonClick_InitParamCancel; tpInitCfg.Controls.Add(btCancelInit); btCancelInit.Enabled = false; locY = btCancelInit.Bottom + 2; for (int i = 0; i < initNames.Length; i++) { string initName = initNames[i]; JFParamDescribe pd = initor.GetInitParamDescribe(initName); UcJFParamEdit ucParam = new UcJFParamEdit(); ucParam.Width = tpInitCfg.Width - 100; ucParam.Location = new Point(locX, locY); ucParam.SetParamDesribe(pd); ucParam.SetParamValue(initor.GetInitParamValue(initName)); ucParam.IsValueReadOnly = true; _lstUcParam.Add(ucParam); tpInitCfg.Controls.Add(ucParam); ucParam.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; locY = ucParam.Bottom + 2; } InitParam2UI(); } } }
/// <summary>选择设备</summary> private void dgvDevs_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgvDevs.SelectedRows.Count == 0) { return; } btRemove.Enabled = true; RemoveAllPEs(); DataGridViewRow row = dgvDevs.SelectedRows[0]; IJFInitializable dev = JFHubCenter.Instance.InitorManager[row.Cells[0].Value.ToString()]; Type devType = dev.GetType(); if (typeof(IJFDevice_Camera).IsAssignableFrom(devType) || typeof(IJFDevice_LightController).IsAssignableFrom(devType) || typeof(IJFDevice_MotionDaq).IsAssignableFrom(devType) || typeof(IJFDevice_TrigController).IsAssignableFrom(devType) || typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType)) //提供调试界面 { btDebug.Enabled = true; if (typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType)) { chkSelfUI.Enabled = true; } else { chkSelfUI.Checked = false; chkSelfUI.Enabled = false; } } else { btDebug.Enabled = false; } if (typeof(IJFConfigUIProvider).IsAssignableFrom(devType)) { btCfg.Enabled = true; } else { btCfg.Enabled = false; } tbDevID.Text = row.Cells[0].Value.ToString(); btInit.Enabled = !dev.IsInitOK; string[] iniParamNames = dev.InitParamNames; if (null == iniParamNames) { btEditSave.Enabled = false; return; } btEditSave.Enabled = true; int locY = btInit.Location.Y + btInit.Size.Height + 5; foreach (string ipName in iniParamNames) { UcJFParamEdit pe = new UcJFParamEdit(); pe.Width = gbParams.Width - 1; pe.Location = new Point(4, locY); pe.SetParamDesribe(dev.GetInitParamDescribe(ipName)); locY += pe.Height; pe.SetParamValue(dev.GetInitParamValue(ipName)); pe.IsValueReadOnly = true; gbParams.Controls.Add(pe); } }
/// <summary>添加新设备</summary> private void btAdd_Click(object sender, EventArgs e) { FormCreateInitor fm = new FormCreateInitor(); fm.Text = "创建" + InitorCaption + "对象"; fm.MatchType = InitorType; if (DialogResult.OK == fm.ShowDialog()) { IJFInitializable newDevice = fm.Initor; string devID = fm.ID; JFHubCenter.Instance.InitorManager.Add(devID, newDevice); DataGridViewRow row = new DataGridViewRow(); DataGridViewTextBoxCell cellID = new DataGridViewTextBoxCell(); cellID.Value = devID; row.Cells.Add(cellID); DataGridViewTextBoxCell cellModel = new DataGridViewTextBoxCell(); cellModel.Value = JFinitializerHelper.DispalyTypeName(newDevice.GetType()); row.Cells.Add(cellModel); DataGridViewTextBoxCell cellType = new DataGridViewTextBoxCell(); cellType.Value = newDevice.GetType().Name; row.Cells.Add(cellType); dgvDevs.Rows.Add(row); newDevice.Initialize(); if (!newDevice.IsInitOK) { btInit.Enabled = true; row.DefaultCellStyle.ForeColor = Color.Red; } else { btInit.Enabled = false; } /// 更新参数到界面 dgvDevs.Rows[dgvDevs.Rows.Count - 1].Selected = true; RemoveAllPEs(); string[] iniParamNames = newDevice.InitParamNames; if (null == iniParamNames) { btEditSave.Enabled = false; return; } btEditSave.Enabled = true; int locY = btInit.Location.Y + btInit.Size.Height + 5; foreach (string ipName in iniParamNames) { UcJFParamEdit pe = new UcJFParamEdit(); pe.Width = gbParams.Width - 1; pe.Location = new Point(4, locY); pe.SetParamDesribe(newDevice.GetInitParamDescribe(ipName)); locY += pe.Height; pe.SetParamValue(newDevice.GetInitParamValue(ipName)); pe.IsValueReadOnly = true; gbParams.Controls.Add(pe); } Type devType = newDevice.GetType(); if (typeof(IJFDevice_Camera).IsAssignableFrom(devType) || typeof(IJFDevice_LightController).IsAssignableFrom(devType) || typeof(IJFDevice_MotionDaq).IsAssignableFrom(devType) || typeof(IJFDevice_TrigController).IsAssignableFrom(devType) || typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType)) //提供调试界面 { btDebug.Enabled = true; if (typeof(IJFRealtimeUIProvider).IsAssignableFrom(devType)) { chkSelfUI.Enabled = true; } else { chkSelfUI.Checked = false; chkSelfUI.Enabled = false; } } else { btDebug.Enabled = false; } if (typeof(IJFConfigUIProvider).IsAssignableFrom(devType)) { btCfg.Enabled = true; } else { btCfg.Enabled = false; } } }
void AdjustStationView() { if (InvokeRequired) { Invoke(new Action(AdjustStationView)); return; } tabControlCF1.TabPages.Clear(); isEditting = false; btEditSave.Text = "编辑"; btCancel.Enabled = false; if (null == _station) { lbInfo.Text = "工站未设置!"; btEditSave.Enabled = false; return; } lbInfo.Text = "工站:" + _station.Name; JFXCfg cfg = _station.Config; string[] categorys = cfg.AllTags; if (null == categorys || categorys.Length < 2) //只有一个无名称Tag,由于保存私有配置 { lbInfo.Text += " 无定制化参数"; btEditSave.Enabled = false; return; } btEditSave.Enabled = true; foreach (string category in categorys) { if (string.IsNullOrEmpty(category)) { continue; } TabPage tp = new TabPage(category); tabControlCF1.TabPages.Add(tp); string[] itemNames = cfg.ItemNamesInTag(category); if (null == itemNames) { continue; } TableLayoutPanel panel = new TableLayoutPanel(); panel.ColumnCount = 1; panel.AutoScroll = true; panel.Dock = DockStyle.Fill; tp.Controls.Add(panel); foreach (string itemName in itemNames) { UcJFParamEdit ucParam = new UcJFParamEdit(); ucParam.IsHelpVisible = false; ucParam.Height = 23; ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName)); ucParam.SetParamValue(_station.GetCfgParamValue(itemName)); ucParam.IsValueReadOnly = false; panel.Controls.Add(ucParam); ucParam.IsValueReadOnly = true; } } //if (tabControlCF1.TabCount > 0) // tabControlCF1.SelectedIndex = 0; }
void AdjustStationView() { if (InvokeRequired) { Invoke(new Action(AdjustStationView)); return; } tabControlCF1.TabPages.Clear(); isEditting = false; btEditSave.Text = "编辑"; btCancel.Enabled = false; if (null == _station) { lbInfo.Text = "工站未设置!"; btEditSave.Enabled = false; return; } JFXCfg cfg = _station.Config; lbInfo.Text = "工站:" + _station.Name + " 文件路径:" + cfg.FilePath; string[] namedCategorys = cfg.AllTags; //if(null == categorys || categorys.Length < 2) //只有一个无名称Tag,由于保存私有配置 //{ // lbInfo.Text += " 无定制化参数"; // btEditSave.Enabled = false; // return; //} List <string> categorys = new List <string>(); if (!AllowedShowUnnameTag) { if (null == categorys || categorys.Count < 2) //只有一个无名称Tag,由于保存私有配置 { lbInfo.Text += " 无定制化参数"; btEditSave.Enabled = false; return; } } else { categorys.Add(""); } if (namedCategorys != null) { categorys.AddRange(namedCategorys); } btEditSave.Enabled = true; foreach (string category in categorys) { if (string.IsNullOrEmpty(category)) { continue; } TabPage tp = new TabPage(category); tabControlCF1.TabPages.Add(tp); string[] itemNames = cfg.ItemNamesInTag(category); if (null == itemNames) { continue; } TableLayoutPanel panel = new TableLayoutPanel(); //panel.RowStyles[0] = new RowStyle(SizeType.Absolute, 55); panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 55)); panel.ColumnCount = 1; panel.AutoScroll = true; panel.Dock = DockStyle.Fill; tp.Controls.Add(panel); for (int i = 0; i < itemNames.Length; i++)//foreach (string itemName in itemNames) { string itemName = itemNames[i]; UcJFParamEdit ucParam = new UcJFParamEdit(); ucParam.IsHelpVisible = false; ucParam.Height = 50; ucParam.Width = 600;//panel.Width*2/3; //ucParam.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right ; ucParam.SetParamDesribe(_station.GetCfgParamDescribe(itemName)); //ucParam.SetParamDesribe(JFParamDescribe.Create(itemName, cfg.GetItemValue(itemName).GetType(), JFValueLimit.NonLimit, null)); ucParam.SetParamValue(cfg.GetItemValue(itemName)); ucParam.IsValueReadOnly = false; panel.Controls.Add(ucParam); ucParam.IsValueReadOnly = true; //panel.RowStyles[i].SizeType = SizeType.Absolute; //panel.RowStyles[i].Height = 55; } } //if (tabControlCF1.TabCount > 0) // tabControlCF1.SelectedIndex = 0; }