Exemple #1
0
        public override void InitElements()
        {
            base.InitElements();

            Window.SetBackground(45, 45, 45);
            Window.SetHeight(300);
            Window.SetWidth(250);
            //Window.IsLocked = true;

            var title  = UiElements.GetDialogWindowTitleBar("Check Path Existence");
            var layout = UiElements.GetDialogWindowLayout(title.GetHeight());

            _info.SetText("Check if there is path between vertices:");
            _check.SetShadow(5, 0, 4, Color.FromArgb(150, 0, 0, 0));
            _check.EventMouseClick += OnCheckButtonClick;
            _check.SetWidth(100);

            Window.AddItems(title, layout);

            layout.AddItems(
                _info,
                _firstVertex,
                _secondVertex,
                _check,
                _output);

            title.GetCloseButton().EventMouseClick = (sender, args) => { Close(); };
        }
Exemple #2
0
        public override void InitElements()
        {
            base.InitElements();

            Window.SetBackground(45, 45, 45);
            Window.SetHeight(250);
            Window.SetWidth(450);

            var title  = UiElements.GetDialogWindowTitleBar("Find Shortest Path");
            var layout = UiElements.GetDialogWindowLayout(title.GetHeight());

            _info.SetText("Find SST in undirected graph made from generated one:");
            _prim.EventMouseClick    += OnPrimButtonClick;
            _kruskal.EventMouseClick += OnKruskalButtonClick;
            _total.EventMouseClick   += OnTotalButtonClick;

            Window.AddItems(title, layout);

            layout.AddItems(
                _info,
                _prim,
                _kruskal,
                _total,
                _output);

            title.GetCloseButton().EventMouseClick = (sender, args) => { Close(); };
        }
Exemple #3
0
        public override void InitElements()
        {
            base.InitElements();

            Window.SetBackground(45, 45, 45);
            Window.SetHeight(250);
            Window.SetWidth(400);

            var title  = UiElements.GetDialogWindowTitleBar("Decode Prufer's Code");
            var layout = UiElements.GetDialogWindowLayout(title.GetHeight());

            layout.SetSpacing(vertical: 15);

            _info.SetText("Enter Prufer's code or 'Empty':");
            _generate.EventMouseClick += OnGenerateButtonClick;

            Window.AddItems(title, layout);

            layout.AddItems(
                _info,
                _pruferCode,
                _generate,
                _output);

            title.GetCloseButton().EventMouseClick = (sender, args) => { Close(); };
        }
Exemple #4
0
        public override void InitElements()
        {
            base.InitElements();

            Window.SetBackground(45, 45, 45);
            Window.SetHeight(450);
            Window.SetWidth(400);
            //Window.IsLocked = true;

            var title  = UiElements.GetDialogWindowTitleBar("Generate Graph");
            var layout = UiElements.GetDialogWindowLayout(title.GetHeight());

            _info.SetText("Enter Graph Parameters:");
            _verticesInfo.SetText($"Vertices: 2 <= x <= {_maxVertices}");
            _densityInfo.SetText("Density: 0 <= x <= 1 ");
            _weightInfo.SetText("-100 <= Min Weight <= Max Weight <= 100");
            _generate.SetShadow(5, 0, 4, Color.FromArgb(150, 0, 0, 0));
            _generate.EventMouseClick += OnGenerateButtonClick;

            Window.AddItems(title, layout);
            layout.AddItems(
                _info,
                _verticesInfo,
                _densityInfo,
                _weightInfo,
                _verticesAmount,
                _density,
                _minWeight,
                _maxWeight,
                _errorOutput,
                _generate);

            title.GetCloseButton().EventMouseClick = (sender, args) => { Close(); };
        }
Exemple #5
0
        public override void InitElements()
        {
            base.InitElements();

            Window.SetBackground(45, 45, 45);
            Window.SetHeight(300);
            Window.SetWidth(250);

            var title  = UiElements.GetDialogWindowTitleBar("Find Shortest Path");
            var layout = UiElements.GetDialogWindowLayout(title.GetHeight());

            _info.SetText("Enter vertices to find path between:");
            _dijkstra.EventMouseClick    += OnDijkstraButtonClick;
            _bellmanFord.EventMouseClick += OnBellmanFordButtonClick;
            _floyd.EventMouseClick       += OnFloydButtonClick;

            Window.AddItems(title, layout);

            layout.AddItems(
                _info,
                _firstVertex,
                _secondVertex,
                _dijkstra,
                _bellmanFord,
                _floyd,
                _output);

            title.GetCloseButton().EventMouseClick = (sender, args) => { Close(); };
        }
        private void ReloadSubRepoItems()
        {
            UiElements.Clear();
            var subRepo = _repository.SubRepositories.First(x => x.Name == _selectedSubRepository);
            var items   = subRepo.Ids.Select(x => new UiElementViewModel(subRepo, subRepo[x], _areaPicker, _window, _game));

            foreach (var item in items)
            {
                UiElements.Add(item);
            }
        }
Exemple #7
0
        public override void InitWindow()
        {
            SetParameters(
                nameof(GraphView),
                nameof(GraphView),
                800,
                800,
                false);
            SetMinSize(1000, 1000);
            SetBackground(45, 45, 45);

            var title       = UiElements.GetTitleBar();
            var mainLayout  = UiElements.GetMainLayout();
            var buttonsList = UiElements.GetButtonsList();

            _toolbar = UiElements.GetToolbar();
            var leftLayoutItem = UiElements.GetLeftLayoutItem();
            var tabView        = UiElements.GetTabView();
            var logTextArea    = UiElements.GetLogTextArea();

            _imageArea = new ImageItem(
                new Bitmap(
                    "/home/nick/RiderProjects/DiscreteMaths/Graphs/Graphs/notGenerated.png"));
            _imageArea.SetMaxWidth(1024);
            _imageArea.SetMaxHeight(1024);
            _imageArea.KeepAspectRatio(true);

            _tabView     = tabView;
            _buttonsList = buttonsList;
            _logTextArea = logTextArea;
            _logTextArea.SetText("Log Journal" + Environment.NewLine);
            _logTextArea.SetFont(new Font(FontFamily.GenericMonospace, 14, FontStyle.Bold));

            AddItems(title, mainLayout);
            mainLayout.AssignLeftItem(leftLayoutItem);
            mainLayout.AssignRightItem(buttonsList);
            leftLayoutItem.AddItems(tabView, _toolbar);

            tabView.AddTabs(new Tab("Graph"), new Tab("Log"));

            tabView.AddItemToTabByName("Log", _logTextArea);
            tabView.AddItemToTabByName("Graph", _imageArea);

            PopulateButtonsList();
            PopulateToolbar();
        }
Exemple #8
0
        private void PopulateToolbar()
        {
            var resetGraph = UiElements.GetButton("Reset Graph");

            resetGraph.SetAlignment(Style.GetButtonCoreStyle().Alignment);
            resetGraph.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    _presenter.ResetGraph();
                    _presenter.SaveGraph();
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            _toolbar.AddItems(resetGraph);
        }
Exemple #9
0
        public override void InitElements()
        {
            base.InitElements();

            Window.SetBackground(45, 45, 45);
            Window.SetHeight(_vertices * 16 + 500);
            Window.SetWidth(_vertices * 16 + 300);
            //Window.IsLocked = true;

            var title         = UiElements.GetDialogWindowTitleBar("Shimbel's Algorithm");
            var layout        = UiElements.GetDialogWindowLayout(title.GetHeight());
            var buttonsLayout = UiElements.GetHorizontalButtonLayout();

            _info.SetText("Compute paths of given length:");
            _info2.SetText("Edges: 1 <= x <= Graph Vertices");
            _shortestButton.SetShadow(5, 0, 4, Color.FromArgb(150, 0, 0, 0));
            _shortestButton.EventMouseClick += OnShortestButtonClick;
            _shortestButton.SetWidth(100);
            _longestButton.SetShadow(5, 0, 4, Color.FromArgb(150, 0, 0, 0));
            _longestButton.EventMouseClick += OnLongestButtonClick;
            _longestButton.SetWidth(100);

            _output.SetPadding(top: 12);
            _output.SetTextAlignment(ItemAlignment.Top, ItemAlignment.HCenter);

            Window.AddItems(title, layout);

            layout.AddItems(
                _info,
                _info2,
                _edgesAmount,
                buttonsLayout,
                _output);

            buttonsLayout.AddItems(_shortestButton, _longestButton);

            title.GetCloseButton().EventMouseClick = (sender, args) => { Close(); };
        }
Exemple #10
0
 public ViewModel()
 {
     UiElements     = new UiElements();
     EncryptCommand = new DelegateCommand(Encript);
     DecryptCommand = new DelegateCommand(Decript);
 }
Exemple #11
0
 /// <summary>
 /// Class XtrmAddons Net Application Serializable User Interface Constructor.
 /// </summary>
 public UserInterface()
 {
     Parameters = new ElementBaseObjects();
     Controls   = new UiElements();
 }
Exemple #12
0
 protected override UIElement GetChild()
 {
     return(UiElements == null ? null : (UiElements.FirstOrDefault(TestChild) ??
                                         UiElements.FirstOrDefault(x => x.GetValue(WhenProperty) == null)));
 }
Exemple #13
0
        private void PopulateButtonsList()
        {
            var generateButton = UiElements.GetButton("Generate Graph");

            generateButton.EventMouseClick += (sender, args) =>
            {
                var dialog = new GenerateGraphDialog(_presenter.MaxVertices);
                dialog.GotCorrectInput += OnGotGraphGenerationInput;
                dialog.Show(this);
            };

            var shimbelButton = UiElements.GetButton("Shimbel's Algorithm");

            shimbelButton.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    var dialog = new ShimbelDialog(_presenter.Vertices);
                    dialog.GotCorrectShimbel += OnGotShimbelInput;
                    dialog.Show(this);
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var checkReachButton = UiElements.GetButton("Check Path Existence");

            checkReachButton.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    var dialog = new CheckPathExistenceDialog(_presenter.Vertices);
                    dialog.GotCorrectCheckPath += OnGotCheckPathInput;
                    dialog.Show(this);
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var shortestPathButton = UiElements.GetButton("Find Shortest Path");

            shortestPathButton.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    var dialog = new ShortestPathDialog(_presenter.Vertices);
                    dialog.GotCorrectFindPath += OnGotFindPathInput;
                    dialog.Show(this);
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var spanningTreesButton = UiElements.GetButton("Find Spanning Trees");

            spanningTreesButton.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    var dialog = new MinimumSpanningTreeDialog();
                    dialog.GotPrimRequest    += OnGotPrimRequest;
                    dialog.GotKruskalRequest += OnGotKruskalRequest;
                    dialog.GotTotalRequest   += OnGotTotalRequest;
                    dialog.Show(this);
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var getPruferCode = UiElements.GetButton("Get Prufer Code for SST");

            getPruferCode.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    if (_presenter.IsSstGenerated())
                    {
                        ShowPopUp(_presenter.OnGetPruferCall());
                    }
                    else
                    {
                        ShowPopUp("Generate SST first");
                    }
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var setPruferCode = UiElements.GetButton("Graph from Prufer Code");

            setPruferCode.EventMouseClick += (sender, args) =>
            {
                var dialog = new PruferCodeDialog();
                dialog.GotCorrectPruferInput += OnGotPruferInput;
                dialog.Show(this);
            };

            var generateFlowNetwork = UiElements.GetButton("Flow network from this");

            generateFlowNetwork.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    //_presenter.SaveGraph();
                    _presenter.OnCreateFlowNetworkCall();
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var findMaxFlow = UiElements.GetButton("Find max flow");

            findMaxFlow.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    if (_presenter.IsFlowNetworkGenerated())
                    {
                        ShowPopUp("Max Flow: " + _presenter.OnMaxFlowCall().ToString());
                    }
                    else
                    {
                        ShowPopUp("Modify graph into flow network");
                    }
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var findMinCostFlow = UiElements.GetButton("Find min cost flow");

            findMinCostFlow.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    if (_presenter.IsFlowNetworkGenerated())
                    {
                        ShowPopUp("Min Cost (2 * Max Flow / 3): " +
                                  _presenter.OnMinCostFlowCall().ToString());
                    }
                    else
                    {
                        ShowPopUp("Modify graph into flow network");
                    }
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var makeEulerian = UiElements.GetButton("Make Eulerian");

            makeEulerian.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    if (!_presenter.WasModified())
                    {
                        _presenter.OnMakeEulerianCall();
                    }
                    else
                    {
                        ShowPopUp("Reset modified graph");
                    }
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var makeHamiltonian = UiElements.GetButton("Make Hamiltonian");

            makeHamiltonian.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    if (!_presenter.WasModified())
                    {
                        _presenter.OnMakeHamiltonianCall();
                    }
                    else
                    {
                        ShowPopUp("Reset modified graph");
                    }
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var findEulerianCycle = UiElements.GetButton("Find Eulerian Cycle");

            findEulerianCycle.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    if (_presenter.WasModified())
                    {
                        if (_presenter.IsEulerian() || _presenter.Vertices == 2)
                        {
                            _presenter.OnFindEulerianCycleCall();
                        }
                        else
                        {
                            ShowPopUp("Graph is not eulerian");
                        }
                    }
                    else
                    {
                        ShowPopUp("Create eulerian graph first");
                    }
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            var findHamiltonianCycle = UiElements.GetButton("Find Hamiltonian Cycle");

            findHamiltonianCycle.EventMouseClick += (sender, args) =>
            {
                if (_presenter.IsGraphGenerated())
                {
                    if (_presenter.WasModified())
                    {
                        if (_presenter.IsHamiltonian())
                        {
                            if (_presenter.Vertices <= 8)
                            {
                                _presenter.OnFindHamiltonianCycleCall();
                            }
                            else
                            {
                                ShowPopUp("There should be <= 7 vertices");
                            }
                        }
                        else
                        {
                            ShowPopUp("Graph is not hamiltonian");
                        }
                    }
                    else
                    {
                        ShowPopUp("Create hamiltonian graph first");
                    }
                }
                else
                {
                    ShowPopUp("Generate graph first");
                }
            };

            _buttonsList.AddItems(
                generateButton,
                shimbelButton,
                checkReachButton,
                shortestPathButton,
                spanningTreesButton,
                getPruferCode,
                setPruferCode,
                generateFlowNetwork,
                findMaxFlow,
                findMinCostFlow,
                makeEulerian,
                makeHamiltonian,
                findEulerianCycle,
                findHamiltonianCycle);
        }