private void createScreenshotViews(string pathToTemplate) { XElement xmlDoc = XElement.Load(@pathToTemplate); if (xmlDoc.Element(VIEWCATEGORY_LAYOUTVIEW) == null) { return; } IEnumerable <XElement> uiElement = from el in xmlDoc.Element(VIEWCATEGORY_LAYOUTVIEW).Elements("Screenshot") select el; if (uiElement == null || !uiElement.Any()) { return; } ATemplateUi generalUiInstance = new TemplateNode(strategyMgr, grantTrees, treeOperation); foreach (XElement element in uiElement) { TemplateScreenshotObject templateObject = xmlUiScreenshotToTemplateUiScreenshot(element); GeneralProperties prop = new GeneralProperties(); prop.controlTypeFiltered = templateObject.connectedFilteredNodeControltype; List <Object> nodes = treeOperation.searchNodes.getNodesByProperties(grantTrees.filteredTree, prop); generalUiInstance.createUiScreenshotFromTemplate(templateObject, nodes); } }
private TemplateUiObject CastScreenshotObject(TemplateScreenshotObject screenshotObject) { TemplateUiObject castedSO = new TemplateUiObject(); castedSO.viewName = screenshotObject.viewName; castedSO.Screens = screenshotObject.Screens; castedSO.osm = screenshotObject.osm; return(castedSO); }
/// <summary> /// Erstellt ausgehend von einem Template einen Knoten im Braille-Baum sowie dessen Beziehung /// </summary> /// <param name="screenshotObject">gibt die Eigenschaften für den Screenshot-Knoten an</param> /// <param name="nodes">gibt eine Liste aller Knoten des gefilterten Baums an von denen der Screenshot erstellt werden soll</param> public void createUiScreenshotFromTemplate(TemplateScreenshotObject screenshotObject, List <Object> nodes) { List <String> viewCategories = Settings.getPossibleTypesOfViews(); if (viewCategories == null || viewCategories.Count > 2) { throw new Exception("Die ViewCategorien wurden in den Settings nicht (ausreichend) angegeben!"); } //TODO: verschiedene Screens beachten //TODO: Baumbeziehung setzen foreach (Object node in nodes) { // viewCategories[1] = LayoutView createUiElementFromTemplate(node, CastScreenshotObject(screenshotObject)); } }
/// <summary> /// Converts a <see cref="XElement"/> of a screenshot to a <see cref="TemplateScreenshotObject"/> /// </summary> /// <param name="xmlElement">a <see cref="XElement"/> from the template file (XML)</param> /// <returns>the TemplateScreenshotObject</returns> private TemplateScreenshotObject xmlUiScreenshotToTemplateUiScreenshot(XElement xmlElement) { TemplateScreenshotObject templetObject = new TemplateScreenshotObject(); Int32 result; result = 0; templetObject.osm = new OSMElements.OSMElement(); templetObject.osm.properties.controlTypeFiltered = "Screenshot"; XElement position = xmlElement.Element("Position"); bool isConvertHeight = Int32.TryParse(position.Element("Height").Value, out result); Rect rect = new Rect(); rect.Height = isConvertHeight ? result : strategyMgr.getSpecifiedDisplayStrategy().getActiveDevice().height; bool isConvertWidth = Int32.TryParse(position.Element("Width").Value, out result); rect.Width = isConvertWidth ? result : strategyMgr.getSpecifiedDisplayStrategy().getActiveDevice().width; bool isConvert = Int32.TryParse(position.Element("StartX").Value, out result); rect.X = isConvert ? result : (strategyMgr.getSpecifiedDisplayStrategy().getActiveDevice().width - rect.Width); isConvert = Int32.TryParse(position.Element("StartY").Value, out result); rect.Y = isConvert ? result : (strategyMgr.getSpecifiedDisplayStrategy().getActiveDevice().height - rect.Height); if (!isConvertHeight) { rect.Height -= rect.Y; } if (!isConvertWidth) { rect.Width -= rect.X; } templetObject.osm.properties.boundingRectangleFiltered = rect; if (!xmlElement.Element("Screens").IsEmpty) { XElement screens = xmlElement.Element("Screens"); templetObject.Screens = new List <string>(); foreach (XElement s in screens.Elements("Screen")) { templetObject.Screens.Add(s.Value); } } if (!xmlElement.Element("ConnectedFilteredNode").IsEmpty) { templetObject.connectedFilteredNodeControltype = xmlElement.Element("ConnectedFilteredNode").Value; } Double zoom = 0; if (!xmlElement.Element("Zoom").IsEmpty) { try { Double resultZoom = XmlConvert.ToDouble(xmlElement.Element("Zoom").Value); zoom = resultZoom < 0 ? 0 : (resultZoom > 3 ? 3 : resultZoom); } catch (ArgumentNullException e) { Debug.WriteLine("Exception at casting the zoom value: {0}", e); } catch (FormatException e) { Debug.WriteLine("Exception at casting the zoom value: {0}", e); } catch (OverflowException e) { Debug.WriteLine("Exception at casting the zoom value: {0}}", e); } } templetObject.osm.brailleRepresentation.zoom = zoom; int contrast = 0; if (!xmlElement.Element("Contrast").IsEmpty) { int resultcontrast; if (Int32.TryParse(xmlElement.Element("Contrast").Value, out resultcontrast)) { contrast = resultcontrast < 0 ? 0 : (resultcontrast > 255 ? 255 : resultcontrast); } } templetObject.osm.brailleRepresentation.contrast = contrast; templetObject.osm.brailleRepresentation.typeOfView = VIEWCATEGORY_LAYOUTVIEW; // braille.isScrollbarShow = Convert.ToBoolean(xmlElement.Element("ShowScrollbar").Value); templetObject. viewName = templetObject.Screens != null ? templetObject.Screens[0] : "all"; //TODO: besserer Name return(templetObject); }