protected override XNode HandleOutputPath(XNode current)
        {
            XElement propertyGroup = _projectFile.NewPropertyGroup(Condition.TagNotDefined(SOLUTION_DIR_TAG)
                                                                   , _projectFile.NewProperty(INTERMEDIATE_OUTPUT_TAG, CurrentSettings.ProjectIntermediateFolder, !ADD_IS_DEFINED));

            current.AddAfterSelf(propertyGroup);
            propertyGroup = _projectFile.NewPropertyGroup(Condition.TagDefined(SOLUTION_DIR_TAG)
                                                          , _projectFile.NewProperty(INTERMEDIATE_OUTPUT_TAG, CurrentSettings.SolutionIntermediateFolder, !ADD_IS_DEFINED));
            current.AddAfterSelf(propertyGroup);
            return(propertyGroup);
        }
Пример #2
0
        public void Normalize()
        {
            RemoveUnwantedNodes();
            RemoveGeneratedNodes();
            XElement commonPropertyGroup = _projectFile.PropertyGroups().First();
            XNode    start      = commonPropertyGroup;
            XComment regionMark = BuildGeneratedRegionMark();

            start.AddAfterSelf(regionMark);
            start = WithinRegion(regionMark);
            start.AddAfterSelf(regionMark);
        }
Пример #3
0
        private XElement copySegmentElements(XElement startNode, XElement lastNode)
        {
            // make a new "root" node
            XElement newRoot = new XElement("newroot");


            // copy the input element as the first child of new root
            XElement firstCopyChild = XUtils.WordProcessingMLUtils.CustomCopyElement_ver2(startNode);

            //XUtils.WordProcessingMLUtils.DebugWriteXElementSiblings(firstCopyChild, "DebugTreeCopy.xml");

            newRoot.Add(firstCopyChild);

            XNode copyRunner  = firstCopyChild;
            XNode nextSibling = startNode.NextNode; // nextSibling starts at top child's sibling

            XElement nextSiblingCopyXElem = null;
            XNode    nextSiblingCopyXNode = null;

            do
            {
                if (nextSibling == null)
                {
                    continue;
                }

                if (nextSibling.NodeType != XmlNodeType.Element)
                {
                    nextSiblingCopyXNode = XUtils.WordProcessingMLUtils.getXNodeCopy(nextSibling);
                    copyRunner.AddAfterSelf(nextSiblingCopyXNode);
                }
                else
                {
                    nextSiblingCopyXElem = XUtils.WordProcessingMLUtils.
                                           CustomCopyElement_ver2((XElement)nextSibling);
                    copyRunner.AddAfterSelf(nextSiblingCopyXElem);
                }

                if (nextSibling == lastNode)
                {
                    break;
                }
                copyRunner  = copyRunner.NextNode;  // adjust copy runner
                nextSibling = nextSibling.NextNode; // adjust original runner
            }while (nextSibling != null);

            return(newRoot);
        }
Пример #4
0
        static public void export()
        {
            bool k = false;

            try
            {
                var   bank = new XDocument(new XElement("order", new XElement("name ", new XText("goodsname"), new XAttribute("number", "000"))));
                XNode r    = bank.FirstNode;
                for (int i = 0; i < 10; i++)
                {
                    if (!listflag[i])
                    {
                        for (int j = 1; j < list[i].det.nums; j++)
                        {
                            XElement child = new XElement(list[i].client, new XText(list[i].det.goodslist[j]), new XAttribute("number", list[i].det.num[j]));
                            r.AddAfterSelf(child);
                        }
                    }
                }
                StreamWriter w = new StreamWriter(new FileStream(@"d:\bank.xml", FileMode.Create), encoding.utf8);
                bank.Save(w);
                k = (w != null);
            }
            catch (System.CannotUnloadAppDomainException)
            {
                Console.WriteLine("file opening failed");
            }
            Assert.IsNotNull(k);
        }
Пример #5
0
                public void ExecuteXDocumentVariation()
                {
                    XNode[]             toAdd        = Variation.Params[0] as XNode[];
                    XNode               contextNode  = Variation.Params[1] as XNode;
                    IEnumerable <XNode> toAddList    = toAdd.OfType <XNode>();
                    XDocument           xDoc         = new XDocument(contextNode);
                    XDocument           xDocOriginal = new XDocument(xDoc);

                    using (UndoManager undo = new UndoManager(xDoc))
                    {
                        undo.Group();
                        using (EventsHelper docHelper = new EventsHelper(xDoc))
                        {
                            using (EventsHelper nodeHelper = new EventsHelper(contextNode))
                            {
                                contextNode.AddAfterSelf(toAdd);
                                TestLog.Compare(toAddList.SequenceEqual(contextNode.NodesAfterSelf(), XNode.EqualityComparer), "Nodes not added correctly!");
                                nodeHelper.Verify(0);
                            }
                            docHelper.Verify(XObjectChange.Add, toAdd);
                        }
                        undo.Undo();
                        TestLog.Compare(XNode.DeepEquals(xDoc, xDocOriginal), "Undo did not work!");
                    }
                }
Пример #6
0
                public void ExecuteXElementVariation()
                {
                    XNode[]             toAdd         = Variation.Params[0] as XNode[];
                    XNode               contextNode   = Variation.Params[1] as XNode;
                    IEnumerable <XNode> toAddList     = toAdd.OfType <XNode>();
                    XElement            xElem         = new XElement("root", contextNode);
                    XElement            xElemOriginal = new XElement(xElem);

                    using (UndoManager undo = new UndoManager(xElem))
                    {
                        undo.Group();
                        using (EventsHelper elemHelper = new EventsHelper(xElem))
                        {
                            using (EventsHelper nodeHelper = new EventsHelper(contextNode))
                            {
                                contextNode.AddAfterSelf(toAdd);
                                TestLog.Compare(toAddList.SequenceEqual(contextNode.NodesAfterSelf(), XNode.EqualityComparer), "Nodes not added correctly!");
                                nodeHelper.Verify(0);
                            }
                            elemHelper.Verify(XObjectChange.Add, toAdd);
                        }
                        undo.Undo();
                        TestLog.Compare(xElem.Nodes().SequenceEqual(xElemOriginal.Nodes(), XNode.EqualityComparer), "Undo did not work!");
                        TestLog.Compare(xElem.Attributes().EqualsAllAttributes(xElemOriginal.Attributes(), Helpers.MyAttributeComparer), "Undo did not work!");
                    }
                }
Пример #7
0
        public static void AddAfterSelfIndented(this XNode self, XElement addedElement)
        {
            string selfIndent;

            if (TryGetElementIndent(self, out selfIndent))
            {
                IndentDescendantNodes(addedElement, selfIndent);
                var newLineAndIndent = new XText("\n" + selfIndent);
                self.AddAfterSelf(newLineAndIndent);
                newLineAndIndent.AddAfterSelf(addedElement);
            }
            else
            {
                // Ignore indent
                self.AddAfterSelf(addedElement);
            }
        }
Пример #8
0
        ////////////////////////////以下函数操作管理车辆XML文件的增删改//////////////////////////////////
        //添加车辆
        public bool AppendRobotInfo(List <RobotInfo> list)
        {
            Dictionary <string, RobotInfo> varDict = Collection.ToList().ToDictionary(key => key.EndPoint, value => value);

            XDocument XDoc      = XDocument.Load("RobotInfo.xml");
            XElement  rootNode  = XDoc.Element("RobotInfo");
            XNode     xLastNode = rootNode.LastNode;

            bool retval = false;

            foreach (RobotInfo info in list)
            {
                if (varDict.ContainsKey(info.EndPoint))
                {
                    continue;
                }

                info.NetId = -(ItemCount++);
                Collection.Add(info);
                try
                {
                    XElement   xEle  = new XElement("item");
                    XAttribute xAttr = new XAttribute("name", info.Id.ToString());
                    xEle.Add(xAttr);
                    var endpoint = info.EndPoint.ToString().Split(':');
                    if (endpoint.Length != 2)
                    {
                        continue;
                    }

                    xAttr = new XAttribute("ip", endpoint[0]);
                    xEle.Add(xAttr);
                    xAttr = new XAttribute("port", endpoint[1]);
                    xEle.Add(xAttr);
                    xAttr = new XAttribute("fts", info.Fts.ToString());
                    xEle.Add(xAttr);

                    if (xLastNode != null)
                    {
                        xLastNode.AddAfterSelf(xEle);
                        xLastNode = xEle;
                    }
                    else
                    {
                        rootNode.AddFirst(xEle);
                        xLastNode = rootNode;
                    }
                    retval = true;
                }
                catch (Exception)
                {
                    return(false);
                }
            }
            XDoc.Save("RobotInfo.xml");
            return(retval);
        }
Пример #9
0
        private XNode HandleImports(XNode start)
        {
            string   sharedProperties = CurrentSettings.CommonPropsFile;
            XElement imports          = _projectFile.NewImport(sharedProperties,
                                                               Condition.And(Condition.TagDefined(SOLUTION_DIR_TAG),
                                                                             Condition.Exists(sharedProperties)));

            start.AddAfterSelf(imports);
            return(imports);
        }
Пример #10
0
                //[Variation(Priority = 1, Desc = "XElement - Working on the text nodes 1.")]
                public void WorkOnTextNodes1()
                {
                    XElement elem = new XElement("A", "text2");
                    XNode    n    = elem.FirstNode;

                    using (UndoManager undo = new UndoManager(elem))
                    {
                        undo.Group();
                        using (EventsHelper eHelper = new EventsHelper(elem))
                        {
                            n.AddAfterSelf("text0");
                            TestLog.Compare(elem.Value, "text2text0", "Did not concat text nodes correctly");
                            n.AddAfterSelf("text1");
                            TestLog.Compare(elem.Value, "text2text0text1", "Did not concat text nodes correctly");
                            eHelper.Verify(new XObjectChange[] { XObjectChange.Value, XObjectChange.Value });
                        }
                        undo.Undo();
                        TestLog.Compare(elem.Value, "text2", "Undo did not work");
                    }
                }
Пример #11
0
        //[Variation(Priority = 1, Desc = "Working on the text nodes 1.")]
        public void WorkOnTextNodes1()
        {
            runWithEvents = (bool)Params[0];
            var   elem = new XElement("A", new XElement("B"), "text0", new XElement("C"));
            XNode n    = elem.FirstNode.NextNode;

            if (runWithEvents)
            {
                eHelper = new EventsHelper(elem);
            }
            n.AddAfterSelf("text1");
            n.AddAfterSelf("text2");
            if (runWithEvents)
            {
                eHelper.Verify(new[] { XObjectChange.Value, XObjectChange.Value });
            }

            TestLog.Compare(elem.Nodes().Count(), 3, "elem.Nodes().Count(), 3");
            TestLog.Compare((n as XText).Value, "text0text1text2", "(n as XText).Value, text0text1text2");
        }
Пример #12
0
        public void XElementWorkOnTextNodes1()
        {
            XElement elem = new XElement("A", "text2");
            XNode    n    = elem.FirstNode;

            using (UndoManager undo = new UndoManager(elem))
            {
                undo.Group();
                using (EventsHelper eHelper = new EventsHelper(elem))
                {
                    n.AddAfterSelf("text0");
                    Assert.Equal("text2text0", elem.Value);
                    n.AddAfterSelf("text1");
                    Assert.Equal("text2text0text1", elem.Value);
                    eHelper.Verify(new XObjectChange[] { XObjectChange.Value, XObjectChange.Value });
                }
                undo.Undo();
                Assert.Equal("text2", elem.Value);
            }
        }
Пример #13
0
        protected virtual XNode HandleProperties(XNode current)
        {
            XElement propertyGroup = _projectFile.NewPropertyGroup();

            HandlePlatformProperty(propertyGroup);
            if (!propertyGroup.IsEmpty)
            {
                current.AddAfterSelf(propertyGroup);
                current = propertyGroup;
            }
            return(current);
        }
Пример #14
0
        /// <summary>
        /// An XDocument extension method that creates and attaches a new <see cref="XElement"/> for
        /// serializing the specified object of type <typeparamref name="T"/>.
        /// </summary>
        /// <typeparam name="T">Generic type parameter.</typeparam>
        /// <param name="xdoc">The <see cref="XDocument"/> to act on.</param>
        /// <param name="obj">The object of type <typeparamref name="T"/>.</param>
        /// <param name="parent">(Optional) The parent <see cref="XNode"/> node.</param>
        /// <returns>
        /// A new XElement.
        /// </returns>
        public static XElement AttachNewElement <T>(this XDocument xdoc, T obj, XNode parent = null)
        {
            var xelem = new XElement(typeof(T).Name);

            if (parent == null)
            {
                xdoc.Add(xelem);
            }
            else
            {
                parent.AddAfterSelf(xelem);
            }
            return(xelem);
        }
        public bool Visit(XNode node)
        {
            if (node.NodeType == XmlNodeType.Element)
            {
                node.AddBeforeSelf(new XText("\n"));

                if (node.NodesAfterSelf().All(x => x.NodeType == XmlNodeType.Text))
                {
                    node.AddAfterSelf(new XText("\n"));
                }
            }

            return(false);
        }
        /// <summary>
        /// Moves the element down.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <exception cref="System.ArgumentException">Nowhere to move element to!</exception>
        public static void MoveElementDown(this XElement element)
        {
            // Walk backwards until we find an element - ignore text nodes
            XNode nextNode = element.NextNode;

            while (nextNode != null && !(nextNode is XElement))
            {
                nextNode = nextNode.NextNode;
            }
            if (nextNode == null)
            {
                throw new ArgumentException("Nowhere to move element to!");
            }
            element.Remove();
            nextNode.AddAfterSelf(element);
        }
Пример #17
0
        /// <summary>
        ///     Ensures the whitespace separation for the first child element added to a node.
        /// </summary>
        /// <param name="element"></param>
        private void EnsureFirstNodeWhitespaceSeparation(XNode element)
        {
#if DEBUG
            if (element.Parent != null)
            {
                Debug.Assert(element.Parent.Elements().Count() == 1, "Unexpected count of elements!");
            }
            else
            {
                // if first.Parent is null, then this is the root element in a document
                Debug.Assert(element.Document.Root == element, "element had null parent, but is not the root element of the document");
            }
#endif

            var precedingNewLine = new XText(Environment.NewLine + new string(' ', GetIndentLevel() * 2));
            var trailingNewLine  = new XText(Environment.NewLine + new string(' ', Parent.GetIndentLevel() * 2));
            element.AddBeforeSelf(precedingNewLine);
            element.AddAfterSelf(trailingNewLine);
        }
Пример #18
0
        public static XElement MoveAfter(this XElement element, XNode target)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            if (element != target)
            {
                if (element.Parent != null)
                {
                    element.Remove();
                }

                if (target.Parent != null)
                {
                    target.AddAfterSelf(element);
                }
            }

            return(element);
        }
Пример #19
0
        private void buttonAddSource_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter          = "Scalable Vector Graphics(*.svg)|*.svg"; // |All files(*.*)|*.*
            openFileDialog.CheckFileExists = true;
            if (openFileDialog.ShowDialog() == true)
            {
                string path  = openFileDialog.FileName;
                string alias = String.Empty;

                var aliasDialog = new AliasWindow(path);
                if (aliasDialog.ShowDialog() == true)
                {
                    alias = aliasDialog.ResponseText;
                }
                else
                {
                    return;
                }

                XDocument xdoc = XDocument.Load(sourcesXml);

                List <string> aliases = new List <string>();
                foreach (XElement xe in xdoc.Element("sources").Elements("source"))
                {
                    aliases.Add(xe.Attribute("alias").Value);
                }
                if (aliases.Contains(alias))
                {
                    MessageBox.Show(
                        "A source with the name \"" + alias + "\" is already on the list. The selected source will not be added.",
                        "Error",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error,
                        MessageBoxResult.OK,
                        MessageBoxOptions.DefaultDesktopOnly);
                    return;
                }

                XNode    xLastSource = xdoc.Element("sources").LastNode;
                XElement newxe       = new XElement("source");
                newxe.SetAttributeValue("alias", alias);
                newxe.SetAttributeValue("path", path);
                newxe.SetAttributeValue("enabled", true);
                if (xLastSource == null)
                {
                    xdoc.Element("sources").Add(newxe);
                }
                else
                {
                    xLastSource.AddAfterSelf(newxe);
                }

                savePath             = new DirectoryInfo(System.IO.Path.GetDirectoryName(path)).Parent.FullName;
                textBoxSavePath.Text = savePath;
                xdoc.Element("sources").SetAttributeValue("defaultSavePath", savePath);

                xdoc.Save(sourcesXml);
                listBoxSources.ItemsSource = getListBoxItemsSourceFromXmlFile(xdoc);
            }
        }
Пример #20
0
 public void Insert(XNode node)
 {
     _insertPoint.AddAfterSelf(node);
     _insertPoint = _insertPoint.NextNode;
 }
Пример #21
0
        public XDocument GetInvoice(int shopperID, int orderID)
        {
            shopper   = rep.GetShopper(shopperID);
            order     = rep.GetShopperOrder(shopper.id, orderID);
            requestID = rep.GetQuickBooksOrder(order.id).RequestID;

            var lineItems = rep.GetInventoryItems(order.cartID);

            foreach (var item in lineItems)
            {
                var shopInventory = rep.GetShopInventoryItems(shopper.clientID).Where(i => i.Name == item.InventoryName);
                var exists        = shopInventory.Any();
                if (!exists)
                {
                    itemsExist           = false;
                    missingInventoryItem = item.InventoryName;
                }
                item.InventoryName = shopInventory.SingleOrDefault().QuickbooksInventoryID != null?shopInventory.SingleOrDefault().QuickbooksInventory.FullName : item.InventoryName;
            }
            if (itemsExist)
            {
                doc = new XDocument(
                    new XDeclaration("1.0", "utf-8", null),
                    new XProcessingInstruction("qbxml", "version=\"6.0\""),
                    new XElement("QBXML",
                                 new XElement("QBXMLMsgsRq", new XAttribute("onError", "stopOnError"),
                                              new XElement("InvoiceAddRq",
                                                           new XAttribute("requestID", requestID),
                                                           new XElement("InvoiceAdd",
                                                                        new XElement("CustomerRef",
                                                                                     new XElement("FullName", Name)),
                                                                        new XElement("TxnDate", String.Format("{0:yyyy-MM-dd}", DateTime.Now)),
                                                                        new XElement("BillAddress",
                                                                                     new XElement("Addr1", FirstName + " " + LastName),
                                                                                     new XElement("Addr2", BillAddress1),
                                                                                     new XElement("Addr3", BillAddress2),
                                                                                     new XElement("City", BillCity),
                                                                                     new XElement("State", BillState),
                                                                                     new XElement("PostalCode", BillPostalCode),
                                                                                     new XElement("Country", BillCountry)),
                                                                        new XElement("ShipAddress",
                                                                                     new XElement("Addr1", S_firstname + " " + S_lastname),
                                                                                     new XElement("Addr2", ShipAddress1),
                                                                                     new XElement("Addr3", ShipAddress2),
                                                                                     new XElement("City", ShipCity),
                                                                                     new XElement("State", ShipState),
                                                                                     new XElement("PostalCode", ShipPostalCode),
                                                                                     new XElement("Country", ShipCountry)),
                                                                        new XElement("ItemSalesTaxRef")
                                                                        )
                                                           )
                                              )
                                 )
                    );
                var customerNode = doc.LastNode.Document.Descendants().Where(n => n.Name == "CustomerRef").SingleOrDefault();
                var salesTaxNode = doc.LastNode.Document.Descendants().Where(n => n.Name == "ItemSalesTaxRef").SingleOrDefault();
                if (order.orderTax != null && order.orderTax > 0)
                {
                    salesTaxNode.Add(new XElement("FullName", TaxFullName));
                }
                foreach (var item in lineItems)
                {
                    (lastLineItemNode == null ? salesTaxNode : lastLineItemNode).AddAfterSelf(
                        new XElement("InvoiceLineAdd",
                                     new XElement("ItemRef",
                                                  new XElement("FullName", item.InventoryName)),
                                     new XElement("Desc", item.Desc),
                                     new XElement("Quantity", item.Quantity == null ? 1 : item.Quantity),
                                     new XElement("Rate", ((decimal)item.Rate).ToString("N2")),
                                     new XElement("Amount", ((decimal)item.Amount).ToString("N2"))
                                     )
                        );
                }
                if (ClassRef != null && ClassRef != String.Empty)
                {
                    customerNode.AddAfterSelf(
                        new XElement("ClassRef",
                                     new XElement("FullName", ClassRef)
                                     )
                        );
                }
                if (TemplateRef != null && TemplateRef != String.Empty)
                {
                    var element = doc.LastNode.Document.Descendants().Where(n => n.Name == "ClassRef").SingleOrDefault() == null ? customerNode : doc.LastNode.Document.Descendants().Where(n => n.Name == "ClassRef").SingleOrDefault();
                    element.AddAfterSelf(
                        new XElement("TemplateRef",
                                     new XElement("FullName", TemplateRef)
                                     )
                        );
                }

                lastLineItemNode.AddAfterSelf(
                    new XElement("InvoiceLineAdd",
                                 new XElement("ItemRef",
                                              new XElement("FullName", ShippingFullName)),
                                 new XElement("Desc", "Shipping"),
                                 new XElement("Amount", Shipping)
                                 )
                    );
            }
            else             //Query Quickbooks to see if the inventory Item Exists
            {
                doc = Inventory.ItemQuery(requestID, missingInventoryItem);
            }
            return(doc);
        }
Пример #22
0
        /// <summary>
        /// Copy all the elements in A that are not in B to B.
        /// </summary>
        /// <param name="A"></param>
        /// <param name="B"></param>
        public static void CopyTo(this XElement A, XElement B)
        {
            XNode lastB = null, nodeA = null, nodeB = null;

            Action Copy_A_To_B = () =>
            {
                if (null == lastB)
                {
                    B.AddFirst(nodeA);
                }
                else
                {
                    lastB.AddAfterSelf(nodeA);
                }
            };

            var listA = A.Nodes().ToList();
            var listB = B.Nodes().ToList();
            int a, b;

            for (a = 0, b = 0; a < listA.Count && b < listB.Count; a++, b++)
            {
                nodeA = listA[a];
                nodeB = listB[b];

                XElement xA = nodeA as XElement,
                         xB = nodeB as XElement;

                XText tA = nodeA as XText,
                      tB = nodeB as XText;

                if (null != xA && null != xB)
                {
                    if (xA.Name.LocalName == xB.Name.LocalName)
                    {
                        CopyTo(xA, xB);
                    }
                    else
                    {
                        Copy_A_To_B();
                        CopyTo(A, B); // Restart this iteration for various reasons such as
                        // the next nodeA might be the same as current nodeB
                        return;
                    }
                }
                else if (null != xA)
                {
                    Copy_A_To_B();
                }
                else if (null != tA && null != tB)
                {
                    if (tA.Value != tB.Value)
                    {
                        tB.Value = tA.Value;
                    }
                }
                else if (null != tA)
                {
                    Copy_A_To_B();
                }

                lastB = nodeB;
            }
            for (; a < listA.Count; a++)
            {
                nodeA = listA[a];
                Copy_A_To_B();
                if (null == lastB)
                {
                    lastB = B.FirstNode;
                }
                else
                {
                    lastB = lastB.NextNode;
                }
            }
        }
Пример #23
0
        static void MergeChildNodes(XElement dst, XElement src)
        {
            var dstNodes = WorkList.Create(dst);
            var srcNodes = WorkList.Create(src);

            // First skip all _identical_ nodes
            // (doesn't actually merge anything, just removes identical nodes from work list)
            MergeNodesBothDirections(
                dstNodes,
                srcNodes,
                DeepEquals);

            // First merge all where name matches
            MergeNodesBothDirections(
                dstNodes,
                srcNodes,
                (dstNode, srcNode) =>
            {
                if (dstNode.NodeType != srcNode.NodeType)
                {
                    return(false);
                }
                if (dstNode.NodeType == XmlNodeType.Element)
                {
                    if (((XElement)dstNode).Name != ((XElement)srcNode).Name)
                    {
                        return(false);
                    }
                }
                Merge(dstNode, srcNode);
                return(true);
            });

            // Then merge all where only node type matches
            MergeNodesBothDirections(
                dstNodes,
                srcNodes,
                (dstNode, srcNode) =>
            {
                if (dstNode.NodeType != srcNode.NodeType)
                {
                    return(false);
                }
                Merge(dstNode, srcNode);
                return(true);
            });

            while (!dstNodes.IsEmpty)
            {
                var node = dstNodes.Pop(Position.Tail);
                node.Remove();
            }

            XNode dstInsertPoint = null;

            while (!srcNodes.IsEmpty)
            {
                // We need to know where to insert this.
                var srcNode = srcNodes.Pop(Position.Head);
                var dstNode = CloneNode(srcNode);
                if (dstInsertPoint == null)
                {
                    var srcIndex = srcNode.NodeIndex();
                    if (srcIndex == 0)
                    {
                        dst.AddFirst(dstNode);
                    }
                    else
                    {
                        dstInsertPoint = dst.FirstNode;
                        // Insert point will be element before srcNode index
                        for (int dstIndex = 0; dstIndex < (srcIndex - 1); dstIndex++)
                        {
                            dstInsertPoint = dstInsertPoint.NextNode;
                        }
                        dstInsertPoint.AddAfterSelf(dstNode);
                    }
                }
                else
                {
                    dstInsertPoint.AddAfterSelf(dstNode);
                }

                dstInsertPoint = dstNode;
            }
        }
Пример #24
0
        private static void Import(string loc, string p)
        {
            //Outer key is filename, inner key is fieldname, inner value is translated text
            Dictionary <string, Dictionary <string, CSVEntry> > values = ImportCSV(p, loc, e => e.Value.Trim().Length == 0 || e.Value == e.Origvalue);

            if (Duplicati.Library.Utility.Utility.IsClientLinux)
            {
                Dictionary <string, Dictionary <string, CSVEntry> > remap = new Dictionary <string, Dictionary <string, CSVEntry> >();
                foreach (string key in values.Keys)
                {
                    remap[key.Replace("\\", System.IO.Path.DirectorySeparatorChar.ToString())] = values[key];
                }

                values = remap;
            }

            string folder = System.IO.Path.Combine(Application.StartupPath, loc);

            if (!System.IO.Directory.Exists(folder))
            {
                Create(loc);
            }
            else
            {
                Update(loc);
            }

            XNamespace xmlns = "";

            foreach (ResXFileInfo inf in GetResXList(loc))
            {
                if (System.IO.File.Exists(inf.TargetFile) && values.ContainsKey(inf.TargetFile))
                {
                    XDocument targetDoc    = XDocument.Load(inf.TargetFile);
                    XNode     insertTarget = targetDoc.Element("root").LastNode;
                    var       targetVals   = targetDoc.Element("root").Elements("data").ToSafeDictionary(c => c.Attribute("name").Value, inf.TargetFile);
                    var       sourceVals   = values[inf.TargetFile];
                    values.Remove(inf.TargetFile);

                    bool updated = false;
                    foreach (var item in sourceVals)
                    {
                        if (targetVals.ContainsKey(item.Key))
                        {
                            if (targetVals[item.Key].Element("value").Value.Replace("\r\n", "\n") != item.Value.Value.Replace("\r\n", "\n"))
                            {
                                updated = true;
                                targetVals[item.Key].Element("value").Value = item.Value.Value;
                            }
                        }
                        else
                        {
                            updated = true;
                            insertTarget.AddAfterSelf(new XElement("data",
                                                                   new XAttribute("name", item.Key),
                                                                   new XAttribute(xmlns + "space", "preserve"),
                                                                   new XElement("value", item.Value.Value)
                                                                   ));
                        }
                    }

                    if (updated)
                    {
                        targetDoc.Save(inf.TargetFile);
                    }
                }
            }

            if (values.Count != 0)
            {
                Console.WriteLine("The following files were translated but did not exist: " + string.Join(Environment.NewLine, values.Keys.ToArray()));
            }
        }
Пример #25
0
        private static void Update(string cultures)
        {
            foreach (string culture in GetLocaleFolders(cultures))
            {
                foreach (ResXFileInfo inf in GetResXList(culture))
                {
                    if (inf.IsForm)
                    {
                        System.IO.File.Copy(inf.SourceFile, inf.NetrualTargetFile, true); //Copy the updated resx
                    }
                    if (System.IO.File.Exists(inf.TargetFile))
                    {
                        //Merge, forms are auto-merged, in that they depend on the neutral .resx file
                        if (!inf.IsForm)
                        {
                            XDocument targetDoc    = XDocument.Load(inf.TargetFile);
                            XNode     insertTarget = targetDoc.Element("root").LastNode;

                            var sourceVals = XDocument.Load(inf.SourceFile).Element("root").Elements("data").ToSafeDictionary(c => c.Attribute("name").Value, inf.SourceFile);
                            var targetVals = targetDoc.Element("root").Elements("data").ToSafeDictionary(c => c.Attribute("name").Value, inf.TargetFile);

                            bool updated = false;
                            foreach (var item in sourceVals)
                            {
                                if (!targetVals.ContainsKey(item.Key))
                                {
                                    updated = true;
                                    insertTarget.AddAfterSelf(new XElement(item.Value));
                                }
                            }

                            if (updated)
                            {
                                targetDoc.Save(inf.TargetFile);
                            }
                        }
                    }
                    else
                    {
                        if (inf.IsForm)
                        {
                            using (System.IO.StreamWriter sw = new System.IO.StreamWriter(inf.TargetFile))
                                sw.Write(Properties.Resources.Empty_resx);
                        }
                        else
                        {
                            if (Duplicati.Library.Utility.Utility.IsClientLinux)
                            {
                                var doc     = XDocument.Load(inf.SourceFile);
                                var entries = from x in doc.Element("root").Elements("data")
                                              where
                                              x.Attribute("type") != null
                                              &&
                                              x.Attribute("type").Value == "System.Resources.ResXFileRef, System.Windows.Forms"
                                              select x;

                                foreach (var e in entries)
                                {
                                    string name  = e.Element("value").Value;
                                    int    ixpos = name.IndexOf(";");
                                    string path  = name.Substring(0, ixpos);
                                    path = path.Replace("\\", System.IO.Path.DirectorySeparatorChar.ToString());
                                    e.Element("value").Value = path + name.Substring(ixpos);
                                }

                                doc.Save(inf.TargetFile);
                            }
                            else
                            {
                                System.IO.File.Copy(inf.SourceFile, inf.TargetFile);
                            }
                        }
                    }


                    foreach (var item in from y in
                             (from x in XDocument.Load(inf.SourceFile).Element("root").Elements("data")
                              where
                              x.Attribute("type") != null
                              &&
                              x.Attribute("type").Value == "System.Resources.ResXFileRef, System.Windows.Forms"
                              select x)
                             let relname = y.Element("value").Value.Substring(0, y.Element("value").Value.IndexOf(";"))
                                           let sourceRes = System.IO.Path.GetFullPath(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(inf.SourceFile), relname)).Replace("\\", System.IO.Path.DirectorySeparatorChar.ToString())
                                                           let targetRes = System.IO.Path.GetFullPath(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(inf.TargetFile), relname)).Replace("\\", System.IO.Path.DirectorySeparatorChar.ToString())

                                                                           select new { sourceRes, targetRes }
                             )
                    {
                        if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(item.targetRes)))
                        {
                            System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(item.targetRes));
                        }

                        if (!System.IO.File.Exists(item.targetRes))
                        {
                            if (Duplicati.Library.Utility.Utility.IsClientLinux && !System.IO.File.Exists(item.sourceRes))
                            {
                                string basefolder = System.IO.Path.GetDirectoryName(item.sourceRes);
                                string sourcefile = System.IO.Directory.GetFiles(basefolder).FirstOrDefault(x => item.sourceRes.Equals(x, StringComparison.InvariantCultureIgnoreCase));
                                if (sourcefile == null)
                                {
                                    Console.WriteLine("Source file not found: " + item.sourceRes);
                                }
                                else
                                {
                                    System.IO.File.Copy(sourcefile, item.targetRes);
                                }
                            }
                            else
                            {
                                System.IO.File.Copy(item.sourceRes, item.targetRes);
                            }
                        }
                    }
                }

                string batchfilename = System.IO.Path.Combine(System.IO.Path.Combine(Application.StartupPath, culture), "gui update.bat");
                System.IO.File.WriteAllText(batchfilename, Properties.Resources.Batchjob_bat, System.Text.Encoding.Default);
            }
        }
Пример #26
0
        public XDocument GetInvoice(int customerID, int orderID)
        {
            customer  = rep.GetCustomer(customerID);
            order     = rep.GetQuickBooksOrder(false, orderID);
            requestID = order.RequestID;
            List <KeyValuePair <int, string> > orderLineItem_itemNames = new List <KeyValuePair <int, string> >();
            var lineItems = rep.GetOrderLineItems(orderID);

            foreach (var item in lineItems)
            {
                var shopItem = rep.GetShopInventoryItems(order.ClientID).Where(i => i.Name == item.InventoryName).FirstOrDefault();
                if (shopItem == null)
                {
                    if (order.Client.IsContentEditsShop ?? false)
                    {
                        WebShopInventory.GetCeInventory(rep.GetUser(order.Client.webpages_Memberships.FirstOrDefault().UserID));
                        shopItem = rep.GetShopInventoryItems(order.ClientID).Where(i => i.Name == item.InventoryName).FirstOrDefault();
                    }
                }
                var exists = shopItem != null && shopItem.QuickbooksInventoryID != null;
                if (!exists)
                {
                    var qbItem = rep.GetQuickbooksInventoryItem(item.InventoryName, order.ClientID);
                    if (qbItem != null && shopItem != null)
                    {
                        shopItem.QuickbooksInventoryID = qbItem.QuickbooksInventoryID;
                        rep.Save();
                        orderLineItem_itemNames.Add(new KeyValuePair <int, string>(item.LineItemID, qbItem.FullName));
                    }
                    else
                    {
                        itemsExist           = false;
                        missingInventoryItem = item.InventoryName;
                    }
                }
                else
                {
                    orderLineItem_itemNames.Add(new KeyValuePair <int, string>(item.LineItemID, shopItem.QuickbooksInventory.FullName));
                }
            }
            if (itemsExist)
            {
                doc = new XDocument(
                    new XDeclaration("1.0", "utf-8", null),
                    new XProcessingInstruction("qbxml", "version=\"6.0\""),
                    new XElement("QBXML",
                                 new XElement("QBXMLMsgsRq", new XAttribute("onError", "stopOnError"),
                                              new XElement("InvoiceAddRq",
                                                           new XAttribute("requestID", requestID),
                                                           new XElement("InvoiceAdd",
                                                                        new XElement("CustomerRef",
                                                                                     new XElement("FullName", Name)),
                                                                        new XElement("TxnDate", String.Format("{0:yyyy-MM-dd}", DateTime.Now)),
                                                                        new XElement("BillAddress",
                                                                                     new XElement("Addr1", FirstName + " " + LastName),
                                                                                     new XElement("Addr2", BillAddress1),
                                                                                     new XElement("Addr3", BillAddress2),
                                                                                     new XElement("City", BillCity),
                                                                                     new XElement("State", BillState),
                                                                                     new XElement("PostalCode", BillPostalCode),
                                                                                     new XElement("Country", BillCountry)),
                                                                        new XElement("ShipAddress",
                                                                                     new XElement("Addr1", S_firstname + " " + S_lastname),
                                                                                     new XElement("Addr2", ShipAddress1),
                                                                                     new XElement("Addr3", ShipAddress2),
                                                                                     new XElement("City", ShipCity),
                                                                                     new XElement("State", ShipState),
                                                                                     new XElement("PostalCode", ShipPostalCode),
                                                                                     new XElement("Country", ShipCountry)),
                                                                        new XElement("ItemSalesTaxRef",
                                                                                     new XElement("FullName", TaxFullName)
                                                                                     )
                                                                        )
                                                           )
                                              )
                                 )
                    );
                var customerNode = doc.LastNode.Document.Descendants().Where(n => n.Name == "CustomerRef").SingleOrDefault();
                var salesTaxNode = doc.LastNode.Document.Descendants().Where(n => n.Name == "ItemSalesTaxRef").SingleOrDefault();

                foreach (var item in lineItems)
                {
                    (lastLineItemNode == null ? salesTaxNode : lastLineItemNode).AddAfterSelf(
                        new XElement("InvoiceLineAdd",
                                     new XElement("ItemRef",
                                                  new XElement("FullName", orderLineItem_itemNames.Where(o => o.Key == item.LineItemID).FirstOrDefault().Value)),              //Mapped Value from Quickbooks Inventory//item.InventoryName)),
                                     new XElement("Desc", item.FullDescription),
                                     new XElement("Quantity", item == null ? 1 : item.Quantity),
                                     new XElement("Rate", ((decimal)item.PriceEach).ToString("N2")),
                                     new XElement("Amount", ((decimal)(item.Quantity * item.PriceEach)).ToString("N2"))
                                     )
                        );
                }

                if (ClassRef != null && ClassRef != String.Empty)
                {
                    customerNode.AddAfterSelf(
                        new XElement("ClassRef",
                                     new XElement("FullName", ClassRef)
                                     )
                        );
                }
                if (TemplateRef != null && TemplateRef != String.Empty)
                {
                    var element = doc.LastNode.Document.Descendants().Where(n => n.Name == "ClassRef").SingleOrDefault() == null ? customerNode : doc.LastNode.Document.Descendants().Where(n => n.Name == "ClassRef").SingleOrDefault();
                    element.AddAfterSelf(
                        new XElement("TemplateRef",
                                     new XElement("FullName", TemplateRef)
                                     )
                        );
                }

                lastLineItemNode.AddAfterSelf(
                    new XElement("InvoiceLineAdd",
                                 new XElement("ItemRef",
                                              new XElement("FullName", ShippingFullName)),
                                 new XElement("Desc", "Shipping"),
                                 new XElement("Amount", Shipping)
                                 )
                    );
            }
            else             //Query Quickbooks to see if the inventory Item Exists
            {
                doc = Inventory.ItemQuery(requestID, missingInventoryItem);
            }
            order.RequestXML = doc.ToString();
            rep.Save();
            return(doc);
        }
Пример #27
0
        public static void ConvertToXml(FileStream animFile, FileStream xmlFile)
        {
            using (TextReader reader = new StreamReader(animFile))
            {
                XDocument XDoc = new XDocument(new XElement("AnimFile"));
                XNode     elem = XDoc.FirstNode;
                string    line;
                bool      nextLevel = false;

                while ((line = reader.ReadLine()) != null)
                {
                    if (string.IsNullOrEmpty(line) || string.IsNullOrWhiteSpace(line))
                    {
                        continue;
                    }

                    line = line.Trim();

                    if (line.StartsWith("//") || line.StartsWith("*/") || line.StartsWith("/*"))
                    {
                        if ((elem.Parent == null || nextLevel) && elem is XElement)
                        {
                            ((XElement)elem).Add(new XComment(line));
                        }
                        else
                        {
                            elem.AddAfterSelf(new XComment(line));
                            elem = elem.NextNode;
                        }
                    }
                    else if (line == "{")
                    {
                        nextLevel = true;
                    }
                    else if (line == "}")
                    {
                        elem = elem.Parent;
                    }
                    else
                    {
                        int    spaceIndex = line.IndexOf(' ');
                        string function;
                        string data = string.Empty;
                        if (spaceIndex == -1)
                        {
                            function = line;
                        }
                        else
                        {
                            function = line.Substring(0, spaceIndex);
                            data     = line.Substring(++spaceIndex);
                        }

                        if ((elem.Parent == null || nextLevel) && elem is XElement)
                        {
                            ((XElement)elem).Add(new XElement(function));
                            elem      = ((XElement)elem).LastNode;
                            nextLevel = false;
                        }
                        else
                        {
                            elem.AddAfterSelf(new XElement(function));
                            elem = elem.NextNode;
                        }

                        if (spaceIndex == -1)
                        {
                            continue;
                        }

                        if (function.Equals("tag", StringComparison.InvariantCultureIgnoreCase) |
                            function.Equals("connect", StringComparison.InvariantCultureIgnoreCase) |
                            function.Equals("length", StringComparison.InvariantCultureIgnoreCase) |
                            function.Equals("replacetexture", StringComparison.InvariantCultureIgnoreCase) |
                            function.StartsWith("v", StringComparison.InvariantCultureIgnoreCase))
                        {
                            ((XElement)elem).Value = data;
                        }
                        else
                        {
                            ((XElement)elem).Add(new XAttribute("data", data));
                        }
                    }
                }

                XmlWriterSettings settings = new XmlWriterSettings
                {
                    Indent      = true,
                    IndentChars = AnimFile.IndentString,
                };
                using (XmlWriter writer = XmlWriter.Create(xmlFile, settings))
                {
                    XDoc.Save(writer);
                }
            }
        }