private void cmdAddAdapter_Click(object sender, EventArgs e) { cmdAddAdapter.Enabled = false; dlgOpenAdapterDll.InitialDirectory = Application.StartupPath; if (DialogResult.OK == dlgOpenAdapterDll.ShowDialog()) { if (AdapterManager.TryToAdd(dlgOpenAdapterDll.FileName)) { RefreshAdapters(); } } cmdAddAdapter.Enabled = true; }
private void cmdRemoveAdapter_Click(object sender, EventArgs e) { if (0 == lvAdapters.SelectedItems.Count) { return; } AdapterManager.AdapterType tAdapterType = lvAdapters.SelectedItems[0].Tag as AdapterManager.AdapterType; if (null == tAdapterType) { return; } if (AdapterManager.UnregisterAdapterDatatype(tAdapterType)) { RefreshAdapters(); } }
public override Boolean Import(XmlDocument xmlDocument, XmlNode xmlRootNode, ref AdapterList BMObject, int nIndex) { if ((null == xmlDocument) || (null == xmlRootNode)) { return(false); } try { //! get root node XmlNode AdapterTypesNode = null; //! find groups from root node if (xmlRootNode.Name != XMLRootName) { AdapterTypesNode = xmlRootNode.SelectSingleNode(XMLRootName); } else { AdapterTypesNode = xmlRootNode; } if (null == AdapterTypesNode) { if (0 == xmlRootNode.ChildNodes.Count) { return(false); } //! search for node "Groups" in each childnode foreach (XmlNode xmlChildren in xmlRootNode.ChildNodes) { if (Import(xmlDocument, xmlChildren, ref BMObject, nIndex)) { return(true); } } return(false); } //! get parameter group set with index number XmlNodeList xmlParameterAgentList = AdapterTypesNode.SelectNodes(XMLObjectName); if (null == xmlParameterAgentList) { return(false); } if (xmlParameterAgentList.Count <= nIndex) { return(false); } //! get specified setting entrance XmlNodeList xmlAdapterTypes = xmlParameterAgentList[nIndex].SelectNodes("AdapterType"); if (null == xmlAdapterTypes) { //! nothing to import return(true); } //! import each node foreach (XmlNode tNode in xmlAdapterTypes) { //! get assmebly string if (null == tNode.SelectSingleNode("Assembly")) { continue; } String tAssembly = tNode.SelectSingleNode("Assembly").InnerText; if (null == tAssembly) { continue; } if ("" == tAssembly.Trim()) { continue; } //! get type if (null == tNode.SelectSingleNode("Type")) { continue; } String tAdapterType = tNode.SelectSingleNode("Type").InnerText; if (null == tAdapterType) { continue; } if ("" == tAdapterType.Trim()) { continue; } //! read version String tVersion = tNode.SelectSingleNode("Version").InnerText; try { //! load assmebly Assembly ass = Assembly.LoadFrom(System.IO.Path.Combine(Application.StartupPath, tAssembly)); if (null == ass) { continue; } //! load class Object newAdapter = ass.CreateInstance("ESnail.Device.Adapters.AdapterLoader"); if (null == newAdapter) { continue; } //! load method MethodInfo tMethod = ass.GetType("ESnail.Device.Adapters.AdapterLoader").GetMethod("Create"); if (tMethod == null) { continue; } //! load adapter Adapter tAdapter = tMethod.Invoke(newAdapter, new Object[] { null, null }) as Adapter; if (null == tAdapter) { continue; } if (null == tAdapter.Type) { continue; } else if ("" == tAdapter.Type.Trim()) { continue; } else if (tAdapter.Type.Trim().ToUpper() != tAdapterType.Trim().ToUpper()) { continue; } if (tAdapter.Version != tVersion) { continue; } //! register adapter AdapterManager.RegisterAdapterDatatype(tAdapter, tAssembly); } catch (Exception Err) { Err.ToString(); continue; } } BMObject = new AdapterList(AdapterManager.AdapterTypes); } catch (Exception Err) { m_Exception = Err; return(false); } return(true); }