/// <summary> /// Initializes and displays a modal dialog. /// </summary> public RegisteredDotNetOpcServer ShowDialog(RegisteredDotNetOpcServer registeredServer) { Initialize(); m_registeredServer = registeredServer; if (registeredServer != null) { // select the .NET server. bool found = false; for (int ii = 0; ii < DotNetServerCB.Items.Count; ii++) { DotNetOpcServer server = DotNetServerCB.Items[ii] as DotNetOpcServer; if (server.CLSID == registeredServer.ServerCLSID) { DotNetServerCB.SelectedIndex = ii; found = true; break; } } if (!found) { DotNetServerCB.SelectedIndex = DotNetServerCB.Items.Add(new DotNetOpcServer(registeredServer.ServerCLSID)); } // select the wrapper process. found = false; for (int ii = 0; ii < WrapperCB.Items.Count; ii++) { DotNetOpcServerWrapper wrapper = WrapperCB.Items[ii] as DotNetOpcServerWrapper; if (wrapper.CLSID == registeredServer.WrapperCLSID) { WrapperCB.SelectedIndex = ii; found = true; break; } } if (!found) { WrapperCB.SelectedIndex = WrapperCB.Items.Add(new DotNetOpcServerWrapper(registeredServer.WrapperCLSID)); } // set the remaining parameters. ClsidTB.Text = registeredServer.CLSID.ToString(); ProgIdTB.Text = registeredServer.ProgId; DescriptionTB.Text = registeredServer.Description; ParametersCTRL.Initialize(registeredServer); } if (DotNetServerCB.SelectedIndex == -1 && DotNetServerCB.Items.Count > 0) { DotNetServerCB.SelectedIndex = 0; } if (WrapperCB.SelectedIndex == -1 && WrapperCB.Items.Count > 0) { WrapperCB.SelectedIndex = 0; } ShowDialog(); if (DialogResult != DialogResult.OK) { return(null); } return(m_registeredServer); }
/// <summary> /// Initializes the controls. /// </summary> private void Initialize() { DotNetServerCB.Items.Clear(); List <DotNetOpcServer> servers = DotNetOpcServer.EnumServers(); foreach (DotNetOpcServer server in servers) { DotNetServerCB.Items.Add(server); } DotNetServerCB.SelectedIndex = -1; WrapperCB.Items.Clear(); List <DotNetOpcServerWrapper> wrappers = DotNetOpcServerWrapper.EnumWrappers(); foreach (DotNetOpcServerWrapper wrapper in wrappers) { WrapperCB.Items.Add(wrapper); } ParametersCTRL.Initialize(null); }
private void OkBTN_Click(object sender, EventArgs e) { try { RegisteredDotNetOpcServer server = new RegisteredDotNetOpcServer(); // set the .NET server. if (DotNetServerCB.SelectedIndex == -1) { throw new ApplicationException("No .NET OPC server selected."); } server.ServerCLSID = ((DotNetOpcServer)DotNetServerCB.SelectedItem).CLSID; // set the wrapper. if (WrapperCB.SelectedIndex == -1) { throw new ApplicationException("No wrapper process selected."); } server.WrapperCLSID = ((DotNetOpcServerWrapper)WrapperCB.SelectedItem).CLSID; // set the clsid. if (String.IsNullOrEmpty(ClsidTB.Text)) { server.AssignCLSID(Guid.NewGuid()); } else { server.AssignCLSID(new Guid(ClsidTB.Text)); } // set the prog id. if (String.IsNullOrEmpty(ProgIdTB.Text)) { server.AssignProgId(((DotNetOpcServer)DotNetServerCB.SelectedItem).ProgId + ".Wrapped"); } else { server.AssignProgId(ProgIdTB.Text); } // save the decryption. server.Description = DescriptionTB.Text; // save the parameters. Dictionary <string, string> parameters = ParametersCTRL.GetParameters(); if (parameters != null) { foreach (KeyValuePair <string, string> entry in parameters) { server.Parameters[entry.Key] = entry.Value; } } // remove existing registration. if (m_registeredServer != null) { m_registeredServer.Unregister(); } // update registry. server.Register(); m_registeredServer = server; // close dialog. DialogResult = DialogResult.OK; } catch (Exception exception) { GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception); } }