private static Type GetControlType(XmlNode controlNode) { //XmlNode typeText = controlNode.SelectSingleNodeFast("type/text()"); XmlNode typeText = controlNode.SelectByNameFromChildren("type"); // this does the same without requiring full XPATH and doc parsing if (typeText == null || typeText.InnerText == "") { return null; } string xmlTypeName = typeText.InnerText; switch (xmlTypeName) { case ("image"): return typeof (GUIImage); case ("imagelist"): return typeof (GUIImageList); case ("slider"): return typeof (GUISliderControl); case ("fadelabel"): return typeof (GUIFadeLabel); case ("label"): return typeof (GUILabelControl); case ("button"): return typeof (GUIButtonControl); case ("updownbutton"): return typeof (GUIUpDownButton); case ("button3part"): return typeof (GUIButton3PartControl); case ("statusbar"): return typeof (GUIStatusbarControl); case ("progress"): return typeof (GUIProgressControl); case ("tvprogress"): return typeof (GUITVProgressControl); case ("hscrollbar"): return typeof (GUIHorizontalScrollbar); case ("vscrollbar"): return typeof (GUIVerticalScrollbar); case ("textbox"): return typeof (GUITextControl); case ("textboxscrollup"): return typeof (GUITextScrollUpControl); case ("thumbnailpanel"): return typeof (GUIThumbnailPanel); case ("spincontrol"): return typeof (GUISpinControl); case ("spinbutton"): return typeof (GUISpinButton); case ("menubutton"): return typeof(GUIMenuButton); case ("checkmark"): return typeof (GUICheckMarkControl); case ("checkbutton"): return typeof (GUICheckButton); case ("selectbutton"): return typeof (GUISelectButtonControl); case ("listcontrol"): return typeof (GUIListControl); case ("updownlistcontrol"): return typeof (GUIUpDownListControl); case ("checklistcontrol"): return typeof (GUICheckListControl); case ("group"): return typeof (GUIGroup); case ("videowindow"): return typeof (GUIVideoControl); case ("facadeview"): return typeof (GUIFacadeControl); case ("filmstrip"): return typeof (GUIFilmstripControl); case ("sortbutton"): return typeof (GUISortButtonControl); case ("volumebar"): return typeof (GUIVolumeBar); case ("multiimage"): return typeof (GUIMultiImage); case ("animation"): return typeof (GUIAnimation); case ("playlistbutton"): return typeof (GUIPlayListButtonControl); case ("playlistcontrol"): return typeof (GUIPlayListItemListControl); case ("gridcontrol"): return typeof (GUIGridControl); case ("actiongroup"): return typeof (GUIActionGroup); case ("menu"): return typeof (GUIMenuControl); case ("standardKeyboard"): return typeof (GUIStandardKeyboard); case ("coverflow"): return typeof (GUICoverFlow); default: Type t = (Type)m_hashCustomControls[xmlTypeName]; if (t == null) { Log.Info("ERROR: unknown control:<{0}>", xmlTypeName); return null; } return t; } }