Example #1
0
        public static ReturnValue <String> GetDefaultValue(string path, string propertyName, List <TextValuePair> list)
        {
            var      rv = new ReturnValue <string>();
            XElement root;

            if (_cachedFile.ContainsKey(path))
            {
                root = _cachedFile[path];
            }
            else
            {
                root = XDocument.Load(System.Windows.Application.GetResourceStream(
                                          new Uri(ResourceFile.MapXMLPath(path, "DefaultValue"))).Stream).Root;
                _cachedFile.Add(path, root);
            }

            var items = root.Elements("item");

            foreach (var item in items)
            {
                if (item.Attribute("key").Value == propertyName)
                {
                    var ia = item.Attribute("value");
                    if (ia != null)
                    {
                        rv.Output1 = ia.Value;
                        return(rv);
                    }
                    ia = item.Attribute("text");
                    if (ia != null)
                    {
                        var li = list.FirstOrDefault(p => p.Text == ia.Value);
                        if (li != null)
                        {
                            rv.Output1 = li.Value;
                            return(rv);
                        }
                        else
                        {
                            rv.Result  = false;
                            rv.Message = BuildErrorMessage(path, propertyName, "text not found.");
                            return(rv);
                        }
                    }
                    ia = item.Attribute("index");
                    if (ia != null)
                    {
                        int idx;
                        if (int.TryParse(ia.Value, out idx))
                        {
                            if (list.Count > idx)
                            {
                                rv.Output1 = list[idx].Value;
                                return(rv);
                            }
                            else
                            {
                                rv.Result  = false;
                                rv.Message = BuildErrorMessage(path, propertyName, "index out of range.");
                                return(rv);
                            }
                        }
                        else
                        {
                            rv.Result  = false;
                            rv.Message = BuildErrorMessage(path, propertyName, "index is not an integer.");
                            return(rv);
                        }
                    }
                }
            }
            rv.Result  = false;
            rv.Message = BuildErrorMessage(path, propertyName, "Property name not found.");
            return(rv);
        }
Example #2
0
        public Model.ReturnValue LoadRibbon(ViewModel.ViewModelBase vm)
        {
            var pageID   = vm.PageID;
            var path     = vm.Path;
            var rv       = new Model.ReturnValue();
            var realPath = ResourceFile.MapXMLPath(path, "Ribbon");

            if (!ResourceFile.Exists(realPath))
            {
                rv.Result  = false;
                rv.Message = "file does not exist.";
                return(rv);
            }
            var root = XDocument.Load(System.Windows.Application.GetResourceStream(
                                          new Uri(realPath)).Stream).Root;
            var tabs = root.Elements("RibbonTab");

            List <RibbonTab> pageTabs;

            if (_ribTabs.ContainsKey(pageID))
            {
                pageTabs = _ribTabs[pageID];
            }
            else
            {
                pageTabs = new List <RibbonTab>();
                _ribTabs.Add(pageID, pageTabs);
            }
            foreach (var xt in tabs)
            {
                var rt       = CreateRibbonTab(xt);
                var rtHeader = rt.Header.ToString();
                //子页面与子页面之间的header允许重复
                //但是任何一个子页面的header 不能与默认页面的header重复.
                //所以, 当遇到与默认页面header重复时, 认为是在覆盖默认tab
                if (_defaultTabs.ContainsKey(rtHeader))
                {
                    if (rt.Tag != null && rt.Tag.ToString().ToLower() == "overwrite")
                    {
                        _defaultTabs[rtHeader].Items.Clear();
                    }
                    while (rt.Items.Count > 0)
                    {
                        var rg = rt.Items[0];
                        rt.Items.Remove(rg);
                        _defaultTabs[rtHeader].Items.Add(rg);
                    }

                    if (rt.IsSelected)
                    {
                        _defaultTabs[rtHeader].IsSelected = true;
                    }
                }
                else
                {
                    _rib.Items.Add(rt);
                    pageTabs.Add(rt);
                }
            }
            return(rv);
        }