Пример #1
0
 public MainScreen()
 {
     AssertXmlFilesExist();
     AssertAlgFilesExist();
     SubsetFile       = new SubsetFile(subsetFilePath);
     XmlSubsetFile    = new XmlSubsetFile("subsets.xml");
     CustomSubsetFile = new CustomSubsetFile("customSubsets.xml");
     RecentSubsetFile = new RecentSubsetFile("recentSubsets.xml");
     InitializeComponent();
     Info.MainForm = this;
     StartPosition = FormStartPosition.CenterScreen;
     Update();
     //cube = new ZbllCube(PreviewCubeSize);
     foreach (var set1 in Enum.GetValues(typeof(AlgSet)).Cast <AlgSet>())
     {
         if (set1 != AlgSet.All)
         {
             AlgSetSelector.Items.Add(set1);
         }
     }
     AlgSetSelector.SelectedItem = AlgSet.ZBLL;
     Set    = AlgSet.ZBLL;
     Cube   = Info.GetCube(Set);
     PosNum = -1;
 }
Пример #2
0
 public AddSubsetScreen(AlgSet set, string text)
 {
     InitializeComponent();
     Set             = set;
     AlgListBox.Text = text;
     StartPosition   = FormStartPosition.CenterScreen;
 }
Пример #3
0
        public SubsetListScreen(AlgSet set)
        {
            StartPosition = FormStartPosition.CenterScreen;
            InitializeComponent();
            Set = set;
            int startX = 50;
            int startY = 80;
            int currY  = startY;


            File = new CustomSubsetFile("customSubsets.xml");
            var subsets = File.GetSubsets(Set);

            var originalFile = SubsetTools.GetXmlSubsetFile();
            var nameMap      = originalFile.GetNameMap(Set);

            for (int k = 0; k < subsets.Count; k++)
            {
                var control = new SubsetListEntry(subsets[k], File, nameMap)
                {
                    Location = new Point(startX, currY)
                };
                currY += HeightPerRow;
                this.Controls.Add(control);
            }
            this.AutoScroll = true;
        }
Пример #4
0
        public static int GetNumPositionsInSet(AlgSet set)
        {
            switch (set)
            {
            case AlgSet.ZBLL:
                return(480);

            case AlgSet.OLL:
                return(57);

            case AlgSet.OLLCP:
                return(329);

            case AlgSet.ELLCP:
                return(134);

            case AlgSet.VLS:
                return(864);

            case AlgSet.OneLookLL:
                return(3910);

            case AlgSet.EG:
                return(120);
            }
            return(0);
        }
Пример #5
0
        /// <summary>
        /// gets the alg file name for the given alg set
        /// </summary>
        /// <param name="set"></param>
        /// <returns></returns>
        public static string GetAlgFileName(AlgSet set)
        {
            switch (set)
            {
            case AlgSet.ZBLL:
                return(AlgFilePath + @"\zbll.alg");

            case AlgSet.OLL:
                return(AlgFilePath + @"\oll.alg");

            case AlgSet.OLLCP:
                return(AlgFilePath + @"\ollcp.alg");

            case AlgSet.ELLCP:
                return(AlgFilePath + @"\ellcp.alg");

            case AlgSet.VLS:
                return(AlgFilePath + @"\vls.alg");

            case AlgSet.OneLookLL:
                return(AlgFilePath + @"\oneLookLL.alg");

            case AlgSet.EG:
                return(AlgFilePath + @"\eg.alg");
            }
            return(null);
        }
Пример #6
0
        /// <summary>
        /// Gets the cube for the given alg set
        /// </summary>
        /// <param name="set"></param>
        /// <returns></returns>
        public static ICube GetCube(AlgSet set)
        {
            switch (set)
            {
            case AlgSet.ZBLL:
                return(new ZbllCube());

            case AlgSet.OLL:
                return(new OllCube());

            case AlgSet.OLLCP:
                return(new OllcpCube());

            case AlgSet.ELLCP:
                return(new EllcpCube());

            case AlgSet.VLS:
                return(new VlsCube());

            case AlgSet.OneLookLL:
                return(new OneLookLLCube());

            case AlgSet.EG:
                return(new EgCube());
            }
            return(null);
        }
Пример #7
0
 // When a postition is constructed by the user, show it on the screen
 void PosNumReceived(AlgSet set, int value)
 {
     Set = set;
     AlgSetSelector.SelectedItem = set;
     PosNum           = value;
     PositionBox.Text = value.ToString();
     SetUpPosition();
 }
Пример #8
0
        public SetInfoScreen(AlgSet set, string rangeList, Dictionary <string, List <int> > nameMap, List <CustomSubset> customSubsets = null, string setName = null)
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;
            CubeRows           = new List <CubeRowControl>();
            Set           = set;
            RangeBox.Text = rangeList;
            if (setName != null)
            {
                NameLabel.Text    = setName;
                NameLabel.Visible = true;
            }

            List <int> posNums = SetParser.Parse(rangeList, nameMap, customSubsets ?? new List <CustomSubset>(), Info.GetNumPositionsInSet(set));

            Cubes = posNums.ConvertAll(num =>
            {
                var cube = Info.GetCube(set);
                cube.SetUpPosition(num);
                return(cube);
            }).ToList();

            int          startX       = 40;
            int          startY       = 100;
            int          currY        = startY;
            List <ICube> currRowCubes = new List <ICube>();

            for (int k = 0; k < Cubes.Count; k++)
            {
                currRowCubes.Add(Cubes[k]);

                if (k % 6 == 5)
                {
                    CubeRows.Add(new CubeRowControl(currRowCubes)
                    {
                        Location = new Point(startX, currY)
                    });
                    currY += PixelsBetweenControls;
                    currRowCubes.Clear();
                }
                else if (k == Cubes.Count - 1)
                {
                    while (currRowCubes.Count < 6)
                    {
                        currRowCubes.Add(null);
                    }
                    CubeRows.Add(new CubeRowControl(currRowCubes)
                    {
                        Location = new Point(startX, currY)
                    });
                }
            }

            foreach (var control in CubeRows)
            {
                this.Controls.Add(control);
            }
        }
Пример #9
0
 private void AlgSetSelector_SelectedValueChanged(object sender, EventArgs e)
 {
     Set  = (AlgSet)AlgSetSelector.SelectedItem;
     Cube = Info.GetCube(Set);
     UpdateGroupSelector();
     UpdateCustomSubsetSelector();
     UpdateRecentSubsetSelector();
     RangeBox.Text = "";
     Reset();
     Refresh();
 }
Пример #10
0
        public List <string> GetSubsets(AlgSet set)
        {
            var doc = new XmlDocument();

            doc.Load(Name);
            var           xpath         = $"subsets/{set.ToString()}/subset";
            var           nodes         = doc.SelectNodes(xpath);
            List <string> subsetStrings = new List <string>();

            for (var k = 0; k < nodes.Count; k++)
            {
                var node = nodes[k];
                subsetStrings.Add(node.Attributes["value"].Value);
            }
            return(subsetStrings);
        }
Пример #11
0
        //public List<Subset> GetSubsetsForAlgSet(AlgSet set)
        //{
        //    XmlDocument doc = new XmlDocument();
        //    doc.Load(@"subsets.xml");
        //    string xPath = "subsets/" + set.ToString();
        //    var node = doc.SelectSingleNode(xPath);
        //    var subsetNodes = node.SelectNodes("subset");
        //    var subsets = new List<Subset>();
        //    for(int k = 0; k < subsetNodes.Count; k++)
        //    {
        //        var subsetNode = subsetNodes[k];
        //        var subset = new Subset { Name = subsetNode.Attributes["name"].Value, SubsetList = subsetNode.InnerText };
        //        subsets.Add(subset);
        //    }
        //    return subsets;
        //}

        /// <summary>
        /// Gets all subset groups and subsets for the given alg set
        /// </summary>
        /// <param name="set"></param>
        /// <returns></returns>
        public List <SubsetGroup> GetSubsetGroupsForAlgSet(AlgSet set)
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(Name);
            string xPath      = "subsets/" + set.ToString();
            var    node       = doc.SelectSingleNode(xPath);
            var    groupNodes = node.SelectNodes("group");
            var    groups     = new List <SubsetGroup>();

            for (int k = 0; k < groupNodes.Count; k++)
            {
                var groupNode   = groupNodes[k];
                var groupName   = groupNode.Attributes["name"].Value;
                var subsets     = new List <Subset>();
                var subsetNodes = groupNodes[k].SelectNodes(".//subset");
                for (int i = 0; i < subsetNodes.Count; i++)
                {
                    var subsetNode = subsetNodes[i];
                    var subset     = new Subset {
                        Name = subsetNode.Attributes["name"].Value, SubsetList = subsetNode.InnerText
                    };
                    // check if subset is in a subgroup
                    var parent = subsetNode.SelectSingleNode("..");
                    if (parent.Name.Equals("subgroup"))
                    {
                        subset.Subgroup = parent.Attributes["name"].Value;
                    }
                    subsets.Add(subset);
                }
                var subgroupNames = new List <string>();
                var subgroupNodes = groupNode.SelectNodes("subgroup");
                for (var i = 0; i < subgroupNodes.Count; i++)
                {
                    subgroupNames.Add(subgroupNodes[i].Attributes["name"].Value);
                }

                var group = new SubsetGroup {
                    Name = groupName, Subsets = subsets, SubgroupNames = subgroupNames
                };
                groups.Add(group);
            }
            return(groups);
        }
Пример #12
0
        public void AddSet(string setText, AlgSet set)
        {
            var doc = new XmlDocument();

            doc.Load(Name);
            var parentNode = doc.SelectSingleNode($"subsets/{set.ToString()}");
            var node       = parentNode.SelectSingleNode($"subset[@value = '{setText}']");
            var place      = int.MaxValue;

            if (node != null)
            {
                place = int.Parse(node.Attributes["order"].Value);
                parentNode.RemoveChild(node);
            }
            var newNode        = doc.CreateNode(XmlNodeType.Element, "subset", null);
            var orderAttribute = doc.CreateAttribute("order");

            orderAttribute.Value = "1";
            var valueAttribute = doc.CreateAttribute("value");

            valueAttribute.Value = setText;
            newNode.Attributes.Append(orderAttribute);
            newNode.Attributes.Append(valueAttribute);
            parentNode.InsertBefore(newNode, parentNode.FirstChild);
            var refNode = newNode.NextSibling;

            while (refNode != null)
            {
                int order = int.Parse(refNode.Attributes["order"].Value);
                if (order >= place)
                {
                    break;
                }
                if (order >= NumSubsetsPerSet)
                {
                    parentNode.RemoveChild(refNode);
                    break;
                }
                refNode.Attributes["order"].Value = (order + 1).ToString();
                refNode = refNode.NextSibling;
            }
            doc.Save(Name);
        }
Пример #13
0
        /// <summary>
        /// Gets all subsets of an alg set
        /// </summary>
        /// <param name="set"></param>
        /// <returns></returns>
        public List <CustomSubset> GetSubsets(AlgSet set)
        {
            List <CustomSubset> sets = new List <CustomSubset>();
            var doc = new XmlDocument();

            doc.Load(Name);
            var xpath = $"subsets/{set.ToString()}/subset";
            var nodes = doc.SelectNodes(xpath);

            for (var k = 0; k < nodes.Count; k++)
            {
                var node       = nodes[k];
                var name       = node.Attributes["name"].Value.ToString();
                var subsetText = node.SelectSingleNode("rangeStr").InnerText;
                var customSet  = new CustomSubset(name, subsetText, set);
                sets.Add(customSet);
            }
            return(sets);
        }
Пример #14
0
        /// <summary>
        /// Gets a mapping of subset names to number lists for an alg set
        /// </summary>
        /// <param name="set"></param>
        public Dictionary <string, List <int> > GetNameMap(AlgSet set)
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(Name);
            string xPath       = "subsets/" + set.ToString();
            var    node        = doc.SelectSingleNode(xPath);
            var    subsetNodes = node.SelectNodes(".//subset");
            Dictionary <string, List <int> > names = new Dictionary <string, List <int> >();

            for (int k = 0; k < subsetNodes.Count; k++)
            {
                var        subsetNode = subsetNodes[k];
                var        key        = subsetNode.Attributes["name"].Value;
                var        rangeRext  = subsetNode.InnerText;
                List <int> posNums    = SubsetTools.GetListFromRanges(rangeRext, Info.GetNumPositionsInSet(set));
                names.Add(subsetNode.Attributes["name"].Value, posNums);
            }
            return(names);
        }
Пример #15
0
        /// <summary>
        /// Gets a list of alg numbers from the given input text for the given alg set
        /// </summary>
        /// <param name="set">The current alg set</param>
        /// <param name="fromTextBox">The list of ranges or subsets entered by the user</param>
        /// <returns></returns>
        public List <int> GetListFromAlgSet(AlgSet set, string fromTextBox)
        {
            Dictionary <string, List <int> > subsets = XmlSubsetFile.GetNameMap(set);

            return(SetParser.Parse(fromTextBox, subsets, CustomSubsetFile.GetSubsets(Set), Info.GetNumPositionsInSet(set)));
        }
Пример #16
0
 public CustomSubset(string name, string rangeStr, AlgSet set)
 {
     Name     = name;
     RangeStr = rangeStr;
     AlgSet   = set;
 }