public UiVertexMenu(Vertex v, Graph g, float x, float y) { visible = true; children = new List<UiComponent>(); X = (int)x; Y = (int)y; this.v = v; graph = g; topMenu = new UiVerticalMenu(); topMenu.AddItem("Премахни връх", RemoveVertex); topMenu.X = 3; topMenu.Y = 3; Width = topMenu.Width + 6; Height = topMenu.Height + 6; AddChild(topMenu); int yp = topMenu.Height + 6; if(v.edges.Count > 0) { // изброява всички ребра UiLabel label = new UiLabel("Премахни ребро:", GraphicScheme.font1); label.X = 3; label.Y = yp; yp += label.Height + 3; AddChild(label); bottomMenu = new UiVerticalMenu(); bottomMenu.X = 3; bottomMenu.Y = yp; bottomMenu.Width = topMenu.Width; Edge e; Vertex vo; for (int i = 0; i < v.edges.Count; i++) { e = v.edges[i]; vo = e.source == v ? e.destination : e.source; dict.Add(bottomMenu.AddItem(vo.id.ToString(), RemoveEdge).id, e); } AddChild(bottomMenu); yp += bottomMenu.Height; Height = yp + 3; } }
/// <summary> /// Слага всичките неща в Gui-то /// </summary> public void InitializeGui() { gui = new Gui(window); fileMenu = new UiVerticalMenu(true); fileMenu.AddItem("Зареди", menu_FileOpen); fileMenu.AddItem("Запази", menu_FileSave); fileMenu.X = 0; fileMenu.Y = 20; fileMenu.visible = false; gui.Add(fileMenu); arrangeMenu = new UiVerticalMenu(true); arrangeMenu.AddItem("В кръг", menu_Circle); arrangeMenu.AddItem("Центрирай", BtnCenterGraph); arrangeMenu.AddItem("Разбъракно", menu_Shuffle); arrangeMenu.X = 50; arrangeMenu.Y = 20; arrangeMenu.visible = false; gui.Add(arrangeMenu); menu = new UiHorizontalMenu(1024); menu.AddItem("Файл", menu_FileClicked); menu.AddItem("Подредба", menu_ArrangeClicked); edgeBtn = menu.AddItem("Добави ребра(включи)", BtnAddEdgeToggle); physBtn = menu.AddItem("Физика(включи)", BtnPhysToggle); menu.AddItem("Създай граф", menu_Generate); menu.AddItem("Изчисти", menu_Clear); directivityBtn = menu.AddItem("Насочен(не)", menu_Directivity); weightBtn = menu.AddItem("Претеглен(не)", menu_Weight); gui.Add(menu); #region Debug текстове dbgLabel1 = new UiLabel("Все още няма нужда от мен за дебъг!", GraphicScheme.font1); dbgLabel1.visible = false; dbgLabel1.Y = 25; dbgLabel1.X = 5; dbgLabel2 = new UiLabel("Все още няма нужда от мен за дебъг!", GraphicScheme.font1); dbgLabel2.visible = false; dbgLabel2.Y = 45; dbgLabel2.X = 5; dbgLabel3 = new UiLabel("Все още няма нужда от мен за дебъг!", GraphicScheme.font1); dbgLabel3.visible = false; dbgLabel3.Y = 65; dbgLabel3.X = 5; gui.Add(dbgLabel1); gui.Add(dbgLabel2); gui.Add(dbgLabel3); #endregion edgeInputLabel = new UiLabel("Въведете тегло на ребро(приключване с Enter или кликване)", GraphicScheme.font1); edgeInputLabel.X = 340; edgeInputLabel.Y = 50; edgeInputLabel.visible = false; gui.Add(edgeInputLabel); rmbMenu = new UiVerticalMenu(); rmbMenu.visible = false; rmbMenu.AddItem("Добави връх", rmbMenu_AddVertex); rmbMenu.AddItem("Демаркирай", rmbMenu_Deselect); gui.Add(rmbMenu); //menu.movable = true; propertyPanel = new UiPropertyPanel(); propertyPanel.X = 0; propertyPanel.Y = 500; gui.Add(propertyPanel); if (connector != null) { // менюто за контрол на алгоритъм се показва само когато има такъв algoControlMenu = new UiHorizontalMenu(200); algoControlMenu.X = 412; algoControlMenu.Y = 575; algoControlMenu.AddItem("Стъпка", BtnSingleStep); algoControlMenu.AddItem("Автоматично", MenuBtnPlay); algoControlMenu.AddItem("Пауза", MenuBtnPause); gui.Add(algoControlMenu); } }