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; }
public AddSubsetScreen(AlgSet set, string text) { InitializeComponent(); Set = set; AlgListBox.Text = text; StartPosition = FormStartPosition.CenterScreen; }
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; }
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); }
/// <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); }
/// <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); }
// 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(); }
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); } }
private void AlgSetSelector_SelectedValueChanged(object sender, EventArgs e) { Set = (AlgSet)AlgSetSelector.SelectedItem; Cube = Info.GetCube(Set); UpdateGroupSelector(); UpdateCustomSubsetSelector(); UpdateRecentSubsetSelector(); RangeBox.Text = ""; Reset(); Refresh(); }
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); }
//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); }
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); }
/// <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); }
/// <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); }
/// <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))); }
public CustomSubset(string name, string rangeStr, AlgSet set) { Name = name; RangeStr = rangeStr; AlgSet = set; }