예제 #1
0
        private void delete_Item(object s, RoutedEventArgs e)
        {
            try
            {
                Information info;

                info.id       = GraphReader.Element(Kernel.getElement(current.Id)).info.id;
                info.name     = GraphReader.Element(Kernel.getElement(current.Id)).info.name;
                info.type     = -1;
                info.shortcut = "";
                if (task.ContainsKey(info.id))
                {
                    task.Hide(info.id);
                }
                Kernel.Update(info);

                if (state == State.Desktop)
                {
                    desktop.Clean();
                    desktop.GenerateGraph();
                }
                else
                {
                    middle.hideCurrent();
                    middle.GenerateGraph(middle.getCurrent(), GraphReader.Element(Kernel.getElement(middle.getCurrent())).son);
                    middle.refresh();
                }
            }
            catch
            {
                MessageBox.Show("Veuillez selectionnez un element ");
            }
        }
예제 #2
0
 private void OnPrev(int i)
 {
     if (state == State.Middle)
     {
         var parent = GraphReader.Element(Kernel.getElement(middle.getCurrent())).parent;
         if (parent != IntPtr.Zero)
         {
             var element = GraphReader.Element(parent).info;
             current        = null;
             middle.current = null;
             var elementData = Kernel.getElement(element.id);
             var son         = Kernel.getSon(elementData);
             middle.hideCurrent();
             if (task.ContainsKey(middle.getCurrent()))
             {
                 task.setKey(middle.getCurrent(), element.id);
             }
             this.middle.setCurrent(element.id);
             this.middle.GenerateGraph(element.id, son);
             middle.setTitle(element.id);
         }
         else
         {
             middle.hideMiddle();
             middle.setCurrent("");
             state = State.Desktop;
             desktop.Generate();
         }
     }
 }
예제 #3
0
        private void copyElement(IntPtr ptr, IntPtr data, int type)
        {
            if (data != IntPtr.Zero && ptr != IntPtr.Zero)
            {
                if (GraphReader.Element(data).next != IntPtr.Zero)
                {
                    Information info;
                    info.name     = GraphReader.Element(GraphReader.Element(data).next).info.name;
                    info.type     = GraphReader.Element(GraphReader.Element(data).next).info.type;
                    info.id       = GetUniqueId();
                    info.shortcut = "";
                    Kernel.addGraph(ptr, info, 0);
                    copyElement(GraphReader.Element(ptr).next, GraphReader.Element(data).next, 0);
                }

                if (GraphReader.Element(data).son != IntPtr.Zero)
                {
                    Information info;
                    info.name     = GraphReader.Element(GraphReader.Element(data).son).info.name;
                    info.type     = GraphReader.Element(GraphReader.Element(data).son).info.type;
                    info.id       = GetUniqueId();
                    info.shortcut = "";
                    Kernel.addGraph(ptr, info, 1);
                    copyElement(GraphReader.Element(ptr).son, GraphReader.Element(data).son, 1);
                }
            }
        }
예제 #4
0
        public static IntPtr getElement(string Id)
        {
            IntPtr ptr = IntPtr.Zero;

            GraphReader.getPtr(data, Id, ref ptr);
            return(ptr);
        }
예제 #5
0
        public void ReadFromTextFile_MatchExpected()
        {
            // arrange
            bool   isMatch  = true;
            string path     = "inputdata.txt";
            Graph  expected = Expected_TextFileGraph();
            Graph  _sut     = GraphReader.ReadFromTextFile(path);

            // act
            if (expected.AdjacencyList.Count != _sut.AdjacencyList.Count)
            {
                Assert.True(false); return;
            }

            foreach (var station in expected.AdjacencyList)
            {
                if (!_sut.AdjacencyList.ContainsKey(station.Key) || station.Value.Count != _sut.AdjacencyList[station.Key].Count)
                {
                    isMatch = false; break;
                }

                foreach (var neighbour in station.Value)
                {
                    if (!_sut.AdjacencyList[station.Key].ContainsKey(neighbour.Key) ||
                        _sut.AdjacencyList[station.Key][neighbour.Key] != neighbour.Value)
                    {
                        isMatch = false; break;
                    }
                }
            }

            // assert
            Assert.True(isMatch);
        }
예제 #6
0
        public void ReadFromTextFile_FileDoesNotExist_ThrowsFileNotFoundException()
        {
            // arrange
            string path = "doesnotexist.txt";

            // assert
            Assert.Throws <FileNotFoundException>(() => GraphReader.ReadFromTextFile(path));
        }
예제 #7
0
        public void ReadFromTextFile_WithBadData_ThrowsFormatException()
        {
            // arrange
            string path = "bad-data.txt";

            // assert
            Assert.Throws <FormatException>(() => GraphReader.ReadFromTextFile(path));
        }
예제 #8
0
        private static void TransitiveReduction(string path)
        {
            var graph        = GraphReader.ReadGraphFromJson(path);
            var reducedGraph = Reduction.DoTransitiveReduction(graph);

            Console.WriteLine(graph.MatrixToString());
            Console.WriteLine("Transitive reduction:");
            Console.WriteLine(reducedGraph.MatrixToString());
        }
예제 #9
0
        public void enter_search(string name)
        {
            var infos = new List <Information>();

            GraphReader.getPtrName(Kernel.getData(), ref infos, name);
            var search = new SearchView(infos, this);

            search.Show();
        }
예제 #10
0
        public SearchView(List <Information> info, FileManager.Graphics.Window window)
        {
            InitializeComponent();
            this.window = window;

            foreach (var result in info.Where(x => x.type != -1).ToList())
            {
                var elem = new Pair();
                elem.name   = result.name;
                elem.type   = Configuration.types[result.type];
                elem.id     = result.id;
                elem.typeid = result.type;
                List <Information> path = new List <Information>();
                GraphReader.getPtrParent(Kernel.getElement(elem.id), ref path);
                path.Reverse();
                string pathstr = "";
                int    count   = 0;
                foreach (var p in path)
                {
                    count++;
                    if (count == path.Count)
                    {
                        if (count == 1)
                        {
                            pathstr += $"{p.name.ToUpper()} :\\";
                        }
                        else
                        {
                            pathstr += $"{p.name}";
                        }
                    }
                    else
                    {
                        if (count == 1)
                        {
                            pathstr += $"{p.name.ToUpper()} :\\";
                        }
                        else
                        {
                            pathstr += $"{p.name} > ";
                        }
                    }
                }
                elem.path = pathstr;
                liste.Items.Add(elem);
            }

            liste.MouseDoubleClick += (e, v) =>
            {
                var element = (Pair)liste.SelectedItem;
                if (element.typeid != 4)
                {
                    window.open_id(element.id);
                }
            };
        }
예제 #11
0
        private void p_Item(object sender, RoutedEventArgs e)
        {
            string str = "";

            str += $"Nombres éléments : {GraphReader.Count(Kernel.getData())} \n";
            str += $"Nombres réprértoires : {GraphReader.Count(Kernel.getData(),0)} \n";
            str += $"Nombres dossiers : {GraphReader.Count(Kernel.getData(), 1)} \n";
            str += $"Nombres fichiers : {GraphReader.Count(Kernel.getData(), 4)} \n";
            MessageBox.Show(str);
        }
예제 #12
0
        public static List <Information> getDesktop()
        {
            List <Information> infos = new List <Information>();
            var ptr = data;

            while (ptr != IntPtr.Zero && ptr != null)
            {
                var elem = GraphReader.Element(ptr);
                infos.Add(elem.info);
                ptr = elem.next;
            }
            return(infos);
        }
예제 #13
0
        private static void TransitiveClosure(string path)
        {
            var graph = GraphReader.ReadGraphFromJson(path);
            var closedGraphWithDfs           = Closure.DoTransitiveClosureWithDfs(graph);
            var closedGraphWithFloydWarshall = Closure.DoTransitiveClosureWithFloydWarshall(graph);

            Console.WriteLine("Graph:");
            Console.WriteLine(graph.MatrixToString());
            Console.WriteLine("Transitive closure with DFS:");
            Console.WriteLine(closedGraphWithDfs.MatrixToString());
            Console.WriteLine("Transitive closure with Floyd-Warshall:");
            Console.WriteLine(closedGraphWithFloydWarshall.MatrixToString());
        }
예제 #14
0
 private void trie_Item(object sender, RoutedEventArgs e)
 {
     if (state == State.Desktop)
     {
         Api.sorts(Kernel.getData());
         desktop.Clean();
         desktop.GenerateGraph();
     }
     else
     {
         Api.sorts(GraphReader.Element(Kernel.getElement(middle.getCurrent())).son);
         middle.hideCurrent();
         middle.GenerateGraph(middle.getCurrent(), GraphReader.Element(Kernel.getElement(middle.getCurrent())).son);
     }
 }
예제 #15
0
        private void LoadButton_Click(object sender, EventArgs e)
        {
            G = GraphReader.read(Controls.Find("path", true)[0].Text);
            int n = G.GetVertices().Count();

            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= n; j++)
                {
                    Controls.Find(i + "," + j, true)[0].Text = G.GetArrowWeight(i, j) + "";
                }
            }

            loaded = true;
        }
예제 #16
0
 public void InputFromFile(object sender, EventArgs e)
 {
     try
     {
         Graph = GraphReader.Read(PathToFile);
     }
     catch (ArgumentException ex)
     {
         Console.WriteLine(ex.Message);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         throw;
     }
 }
예제 #17
0
        public void refresh()
        {
            this.Clear();
            var all = new List <Information>();

            GraphReader.getPtrParent(Kernel.getElement(middle.getCurrent()), ref all);
            all.Reverse();
            foreach (var result in all)
            {
                count++;
                var lab = new Label();
                if (count == all.Count)
                {
                    if (count == 1)
                    {
                        lab.Content = $"{result.name.ToUpper()} :\\";
                    }
                    else
                    {
                        lab.Content = $"{result.name}";
                    }
                }
                else
                {
                    if (count == 1)
                    {
                        lab.Content = $"{result.name.ToUpper()} :\\";
                    }
                    else
                    {
                        lab.Content = $"{result.name} > ";
                    }
                }

                lab.FontSize   = 14;
                lab.FontWeight = FontWeights.Medium;
                labels.Add(lab);
                lab.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
                Rect measureRect = new Rect(lab.DesiredSize);
                lab.Arrange(measureRect);
                Canvas.SetTop(lab, y);
                Canvas.SetLeft(lab, x);
                canvas.Children.Add(lab);

                x += measureRect.Width - 5;
            }
        }
예제 #18
0
        public void setTitle(string name)
        {
            if (title != null)
            {
                canvas.Children.Remove(title);
            }
            title            = new Label();
            title.FontSize   = 15;
            title.FontWeight = FontWeights.Bold;
            var elem = GraphReader.Element(Kernel.getElement(this.currentElement));

            title.Content = $"{Configuration.types[elem.info.type]} : {elem.info.name}";
            Canvas.SetLeft(title, FileManager.Graphics.Window.Width / 2);
            Canvas.SetTop(title, 0);
            canvas.Children.Add(title);
            liste.refreshListe();
            absorbance.refresh();
        }
예제 #19
0
        public void GenerateGraph(string id, IntPtr son)
        {
            if (!FileElements.ContainsKey(id))
            {
                FileElements.Add(id, null);
            }
            FileElements[id]          = new Tuple <int, int, List <MiddleElement> >();
            FileElements[id].x        = Configuration.startXMiddle;
            FileElements[id].y        = Configuration.startYMiddle;
            FileElements[id].elements = new List <MiddleElement>();

            foreach (var result in GraphReader.getElements(son))
            {
                this.Add(result.id, result.type, result.name, result.shortcut);
            }
            liste.refreshListe();
            absorbance.refresh();
        }
예제 #20
0
        private void rename_keyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (rename != null)
                {
                    if (state == State.Desktop)
                    {
                        if (rename.Text != "")
                        {
                            var         ptr  = Kernel.getElement(idRename);
                            var         info = GraphReader.Element(Kernel.getElement(idRename)).info;
                            Information ninfo;
                            ninfo.id       = info.id;
                            ninfo.name     = desktop.nameValid(rename.Text);
                            ninfo.type     = info.type;
                            ninfo.shortcut = info.shortcut;
                            Api.setElement(ptr, ninfo);
                            desktop.Contains(idRename).nameElement.label.Content = ninfo.name;
                            desktop.Contains(idRename).nameElement.Name          = ninfo.name;
                            desktop.Contains(idRename).Enabled = true;
                        }
                    }
                    else
                    {
                        var         ptr  = Kernel.getElement(idRename);
                        var         info = GraphReader.Element(Kernel.getElement(idRename)).info;
                        Information ninfo;
                        ninfo.id       = info.id;
                        ninfo.name     = middle.nameValid(rename.Text);
                        ninfo.type     = info.type;
                        ninfo.shortcut = info.shortcut;
                        Api.setElement(ptr, ninfo);
                        middle.First(idRename).nameElement.label.Content = ninfo.name;
                        middle.First(idRename).nameElement.Name          = ninfo.name;
                        middle.First(idRename).Enabled = true;
                    }

                    canvas.Children.Remove(rename);
                }

                rename = null;
            }
        }
        private void EnterPath_button_Click(object sender, EventArgs e)
        {
            OpenFileDialog OPF = new OpenFileDialog();

            OPF.Filter = "Файлы txt|*.txt|Файлы cs|*.cs";
            if (OPF.ShowDialog() == DialogResult.OK)
            {
                MessageBox.Show(OPF.FileName);
            }

            GraphReader reader = new GraphReader(OPF.FileName);
            Graph       graph  = reader.read();

            reader.close();

            TestData.Test(graph);
            str = TestData.S;
            Template template = new Template(str);

            template.Show();
        }
예제 #22
0
        private void past_shortcut_Item(object s, RoutedEventArgs e)
        {
            var         element = GraphReader.Element(Kernel.getElement(copy.Id));
            Information info;

            info.name     = $"{element.info.name}";
            info.type     = element.info.type;
            info.id       = GetUniqueId();
            info.shortcut = copy.Id;
            if (state == State.Desktop)
            {
                info.name = desktop.nameValid(info.name);
                Kernel.addGraph(info, 0);
                desktop.Add(info.name, info.type, info.id, info.shortcut);
            }
            else
            {
                info.name = middle.nameValid(info.name);
                Kernel.addGraph(Kernel.getElement(middle.getCurrent()), info, 1);
                middle.Add(info.id, info.type, info.name, info.shortcut);
            }
            copy = null;
        }
예제 #23
0
 public void Initialization()
 {
     this.loadMemory();
     window.Initialization(disks, GraphReader.getElementList(data));
 }
예제 #24
0
        public void Click(int xmouse, int ymouse)
        {
            if (state == State.Desktop)
            {
                var element = desktop.Contains(xmouse, ymouse);
                if (element != null && restriction[element.Type])
                {
                    if (GraphReader.Element(Kernel.getElement(element.Id)).info.shortcut != "")
                    {
                        string shortcut = GraphReader.Element(Kernel.getElement(element.Id)).info.shortcut;
                        element = desktop.First(shortcut);
                        //then in middle
                        if (element == null)
                        {
                            bool search = false;
                            foreach (var result in middle.FileElements)
                            {
                                foreach (var req in result.Value.elements)
                                {
                                    if (req.Id == shortcut)
                                    {
                                        element = req;
                                        search  = true;
                                    }
                                    break;
                                }
                                if (search == true)
                                {
                                    break;
                                }
                            }
                        }
                    }
                    if (rename != null)
                    {
                        canvas.Children.Remove(rename);
                    }
                    desktop.Hide();
                    state = State.Middle;
                    if (!task.ContainsKey(element.Id))
                    {
                        task.addTask(element);
                    }

                    var elementData = Kernel.getElement(element.Id);
                    var son         = Kernel.getSon(elementData);
                    this.middle.setCurrent(element.Id);
                    this.middle.GenerateGraph(element.Id, son);
                    this.middle.OnMiddle(4);
                    middle.setTitle(element.Id);
                }
            }
            else
            {
                int type    = -1;
                var element = middle.Contains(xmouse, ymouse, ref type);
                if (element != null && type > -1)
                {
                    if (type == 0) // close
                    {
                    }
                    else if (type == 1)
                    {
                        middle.hideMiddle();
                        middle.setCurrent("");
                        state = State.Desktop;
                        desktop.Generate();
                    }
                    else if (type == 2 && restriction[element.Type])
                    {
                        if (rename != null)
                        {
                            canvas.Children.Remove(rename);
                        }
                        if (GraphReader.Element(Kernel.getElement(element.Id)).info.shortcut != "")
                        {
                            string shortcut = GraphReader.Element(Kernel.getElement(element.Id)).info.shortcut;
                            element = middle.First(shortcut);
                            //then in dekstop
                            if (element == null)
                            {
                                bool search = false;
                                foreach (var result in middle.FileElements)
                                {
                                    foreach (var req in result.Value.elements)
                                    {
                                        if (req.Id == shortcut)
                                        {
                                            element = req;
                                            search  = true;
                                        }
                                        break;
                                    }
                                    if (search == true)
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                        current        = null;
                        middle.current = null;
                        var elementData = Kernel.getElement(element.Id);
                        var son         = Kernel.getSon(elementData);
                        middle.hideCurrent();
                        if (task.ContainsKey(middle.getCurrent()))
                        {
                            task.setKey(middle.getCurrent(), element.Id);
                        }
                        this.middle.setCurrent(element.Id);
                        this.middle.GenerateGraph(element.Id, son);
                        middle.setTitle(element.Id);
                    }
                }
            }
        }
예제 #25
0
        private void past_Item(object s, RoutedEventArgs e)
        {
            if (state == State.Desktop)
            {
                if (copy != null)
                {
                    var         elem = GraphReader.Element(Kernel.getElement(copy.Id));
                    Information info;
                    info.name     = desktop.nameValid(elem.info.name);
                    info.id       = GetUniqueId();
                    info.type     = elem.info.type;
                    info.shortcut = "";

                    Kernel.addGraph(info, 0);
                    if (GraphReader.Element(Kernel.getElement(copy.Id)).son != IntPtr.Zero)
                    {
                        var         ptr = Kernel.getElement(info.id);
                        Information infos;
                        infos.name     = GraphReader.Element(GraphReader.Element(Kernel.getElement(copy.Id)).son).info.name;
                        infos.id       = GetUniqueId();
                        infos.type     = GraphReader.Element(GraphReader.Element(Kernel.getElement(copy.Id)).son).info.type;
                        infos.shortcut = "";
                        Kernel.addGraph(ptr, infos, 1);
                        copyElement(Kernel.getElement(infos.id), GraphReader.Element(Kernel.getElement(copy.Id)).son, 1);
                        desktop.Clean();
                        desktop.GenerateGraph();
                    }
                    else
                    {
                        desktop.Add(info.name, info.type, info.id);
                    }

                    copy = null;
                }
            }
            else
            {
                Graph elem;
                if (cut == null)
                {
                    elem = GraphReader.Element(Kernel.getElement(copy.Id));
                }
                else
                {
                    elem = GraphReader.Element(Kernel.getElement(cut.Id));
                }

                Information info;
                info.name     = middle.nameValid(elem.info.name);
                info.id       = GetUniqueId();
                info.type     = elem.info.type;
                info.shortcut = "";


                if (cut == null)
                {
                    if (desktop.First(copy.Id) == null)
                    {
                        Kernel.addGraph(GraphReader.Element(Kernel.getElement(middle.getCurrent())).son, info, 0);
                        if (copy != null)
                        {
                            if (GraphReader.Element(Kernel.getElement(copy.Id)).son == IntPtr.Zero)
                            {
                                middle.Add(info.id, info.type, info.name);
                            }
                            else
                            {
                                var         ptr = Kernel.getElement(info.id);
                                Information infos;
                                infos.name     = GraphReader.Element(GraphReader.Element(Kernel.getElement(copy.Id)).son).info.name;
                                infos.id       = GetUniqueId();
                                infos.type     = GraphReader.Element(GraphReader.Element(Kernel.getElement(copy.Id)).son).info.type;
                                infos.shortcut = "";
                                Kernel.addGraph(ptr, infos, 1);
                                copyElement(Kernel.getElement(infos.id), GraphReader.Element(Kernel.getElement(copy.Id)).son, 1);
                                middle.hideCurrent();
                                middle.GenerateGraph(middle.getCurrent(), (GraphReader.Element(Kernel.getElement(middle.getCurrent())).son));
                                middle.refresh();
                            }
                        }
                    }
                }
                else
                {
                    if (desktop.First(cut.Id) == null)
                    {
                        Kernel.addGraph(Kernel.getElement(middle.getCurrent()), info, 1);
                        if (GraphReader.Element(Kernel.getElement(cut.Id)).son == IntPtr.Zero)
                        {
                            middle.Add(info.id, info.type, info.name);
                        }
                        else
                        {
                            var         ptr = Kernel.getElement(info.id);
                            Information infos;
                            infos.name     = GraphReader.Element(GraphReader.Element(Kernel.getElement(cut.Id)).son).info.name;
                            infos.id       = GetUniqueId();
                            infos.type     = GraphReader.Element(GraphReader.Element(Kernel.getElement(cut.Id)).son).info.type;
                            infos.shortcut = "";
                            Kernel.addGraph(ptr, infos, 1);
                            copyElement(Kernel.getElement(infos.id), GraphReader.Element(Kernel.getElement(cut.Id)).son, 1);
                            middle.hideCurrent();
                            middle.GenerateGraph(middle.getCurrent(), GraphReader.Element(Kernel.getElement(middle.getCurrent())).son);
                        }
                    }
                }


                if (cut != null)
                {
                    Information cutInfo;

                    cutInfo.id       = GraphReader.Element(Kernel.getElement(cut.Id)).info.id;
                    cutInfo.name     = GraphReader.Element(Kernel.getElement(cut.Id)).info.name;
                    cutInfo.type     = -1;
                    cutInfo.shortcut = "";
                    if (task.ContainsKey(cutInfo.id))
                    {
                        task.Hide(cutInfo.id);
                    }
                    Kernel.Update(cutInfo);
                    //stupid code  a lot of repeat
                    current        = null;
                    middle.current = null;
                    var elementData = Kernel.getElement(middle.getCurrent());
                    var son         = Kernel.getSon(elementData);
                    middle.hideCurrent();
                    if (task.ContainsKey(middle.getCurrent()))
                    {
                        task.setKey(middle.getCurrent(), middle.getCurrent());
                    }
                    this.middle.setCurrent(middle.getCurrent());
                    this.middle.GenerateGraph(middle.getCurrent(), son);
                    middle.setTitle(middle.getCurrent());
                    cut = null;
                }
                else
                {
                    copy = null;
                }
            }
        }
예제 #26
0
 private void deleteElement(IntPtr ptr)
 {
     deleteElement(GraphReader.Element(ptr).next);
     deleteElement(GraphReader.Element(ptr).son);
     Marshal.FreeHGlobal(ptr);
 }
예제 #27
0
        public void refreshListe()
        {
            this.Clear();
            var allelems = new Label();

            allelems.Content    = $"Nombres éléments(R)({GraphReader.Count(GraphReader.Element(Kernel.getElement(middle.getCurrent())).son)}) : ";
            allelems.FontSize   = 14;
            allelems.FontWeight = FontWeights.Bold;
            labels.Add(new Engine.Liste(allelems, 0, 0));
            Canvas.SetTop(allelems, y);
            Canvas.SetLeft(allelems, x);
            canvas.Children.Add(allelems);

            var all = new List <Information>();

            GraphReader.getPtr(GraphReader.Element(Kernel.getElement(middle.getCurrent())).son, ref all);
            y += 5;
            foreach (var result in all.Where(x => x.type != -1).ToList())
            {
                y += 20;
                var lab = new Label();
                lab.Content  = $"{ Configuration.types[result.type]} : { result.name}";
                lab.FontSize = 14;
                lab.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
                Rect measureRect = new Rect(lab.DesiredSize);
                lab.Arrange(measureRect);
                var liste = new Liste(lab, measureRect.Width, measureRect.Height);
                liste.setPosition((int)x, (int)y);
                liste.id = result.id;

                labels.Add(liste);
                Canvas.SetTop(liste.label, y);
                Canvas.SetLeft(liste.label, x);
                canvas.Children.Add(liste.label);
            }
            y += 20;

            var nelems = new Label();

            nelems.Content    = $"Nombres éléments({GraphReader.CountNext(GraphReader.Element(Kernel.getElement(middle.getCurrent())).son)}) : ";
            nelems.FontSize   = 14;
            nelems.FontWeight = FontWeights.Bold;
            labels.Add(new Engine.Liste(nelems, 0, 0));
            Canvas.SetTop(nelems, y);
            Canvas.SetLeft(nelems, x);
            canvas.Children.Add(nelems);
            all = GraphReader.getElementList(GraphReader.Element(Kernel.getElement(middle.getCurrent())).son);
            foreach (var result in all.Where(x => x.type != -1).ToList())
            {
                y += 20;

                var lab = new Label();
                lab.Content  = $"{ Configuration.types[result.type]} : { result.name}";
                lab.FontSize = 14;
                lab.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
                Rect measureRect = new Rect(lab.DesiredSize);
                lab.Arrange(measureRect);
                var liste = new Liste(lab, measureRect.Width, measureRect.Height);
                liste.setPosition((int)x, (int)y);
                liste.id = result.id;

                labels.Add(liste);
                Canvas.SetTop(liste.label, y);
                Canvas.SetLeft(liste.label, x);
                canvas.Children.Add(liste.label);
            }
        }
예제 #28
0
        private void move_Item(object sender, RoutedEventArgs e)
        {
            if (state == State.Middle)
            {
                var item    = (MenuItem)e.OriginalSource;
                var name    = (string)item.Header;
                var element = middle.FindName(name);
                if (element != null && element.shortcut_id == "")
                {
                    if (current != null)
                    {
                        var elemcurrent = middle.First(current.Id);
                        if (elemcurrent != null)
                        {
                            Information info;
                            info.name     = middle.nameValid(elemcurrent.nameElement.Name);
                            info.id       = GetUniqueId();
                            info.type     = elemcurrent.Type;
                            info.shortcut = "";

                            Kernel.addGraph(Kernel.getElement(element.Id), info, 1);
                            if (GraphReader.Element(Kernel.getElement(elemcurrent.Id)).son != IntPtr.Zero)
                            {
                                var         ptr = Kernel.getElement(info.id);
                                Information infos;
                                infos.name     = GraphReader.Element(GraphReader.Element(Kernel.getElement(elemcurrent.Id)).son).info.name;
                                infos.id       = GetUniqueId();
                                infos.type     = GraphReader.Element(GraphReader.Element(Kernel.getElement(elemcurrent.Id)).son).info.type;
                                infos.shortcut = "";
                                Kernel.addGraph(ptr, infos, 1);
                                copyElement(Kernel.getElement(infos.id), GraphReader.Element(Kernel.getElement(elemcurrent.Id)).son, 1);
                            }

                            Information cutInfo;
                            cutInfo.id       = elemcurrent.Id;
                            cutInfo.name     = elemcurrent.nameElement.Name;
                            cutInfo.type     = -1;
                            cutInfo.shortcut = "";
                            if (task.ContainsKey(elemcurrent.Id))
                            {
                                task.Hide(elemcurrent.Id);
                            }
                            Kernel.Update(cutInfo);
                            //stupid code a lot of repeat
                            current        = null;
                            middle.current = null;
                            var elementData = Kernel.getElement(middle.getCurrent());
                            var son         = Kernel.getSon(elementData);
                            middle.hideCurrent();
                            if (task.ContainsKey(middle.getCurrent()))
                            {
                                task.setKey(middle.getCurrent(), middle.getCurrent());
                            }
                            this.middle.setCurrent(middle.getCurrent());
                            this.middle.GenerateGraph(middle.getCurrent(), son);
                            middle.setTitle(middle.getCurrent());
                        }
                    }
                }
            }
        }
예제 #29
0
 static void Main(string[] args)
 {
     string path  = @"c:\users\pstepnowski\documents\visual studio 2015\Projects\ConsoleApplication13\ConsoleApplication13\Graph.txt";
     var    graph = new GraphReader().Read(path);
 }
예제 #30
0
        public void ShowMenu(int xmouse, int ymouse)
        {
            ContextMenu menu = new ContextMenu();

            foreach (var item in Items)
            {
                if (item.Item2 == state || item.Item2 == State.All)
                {
                    var menuItem = new MenuItem();
                    menuItem.Header = item.Item1;
                    menuItem.Click += click_Item;
                    menu.Items.Add(menuItem);
                }
            }
            //trie
            var trie = new MenuItem();

            trie.Header = "Trie par nom";
            trie.Click += trie_Item;
            menu.Items.Add(trie);
            //copy
            int type = -1;

            if (current != null && (desktop.Contains(xmouse, ymouse) != null || middle.Contains(xmouse, ymouse, ref type) != null))
            {
                var menuItem = new MenuItem();
                menuItem.Header = "Copier";
                menuItem.Click += copy_Item;
                menu.Items.Add(menuItem);

                var cut = new MenuItem();
                cut.Header = "Couper";
                cut.Click += cut_Item;
                menu.Items.Add(cut);

                if (state == State.Middle)
                {
                    List <Information> list;
                    list = GraphReader.getElementList(GraphReader.Element(Kernel.getElement(middle.getCurrent())).son).Where(x => x.id != current.Id && x.type != -1).ToList();

                    if (current.Type != 4)
                    {
                        list = list.Where(x => x.type != 4).ToList();
                    }
                    if (list.Count > 0)
                    {
                        var move = new MenuItem();
                        move.Header = "Deplacer vers";
                        foreach (var result in list)
                        {
                            var sub_menu = new MenuItem()
                            {
                                Header = result.name
                            };
                            sub_menu.Click += move_Item;
                            move.Items.Add(sub_menu);
                        }
                        move.Click += cut_Item;
                        menu.Items.Add(move);
                    }
                }

                var rename = new MenuItem();
                rename.Header = "Renommer";
                rename.Click += rename_Item;
                menu.Items.Add(rename);

                var supp = new MenuItem();
                supp.Header = "Supprimer";
                supp.Click += delete_Item;
                menu.Items.Add(supp);
            }

            //past
            if (copy != null || cut != null)
            {
                var menuItem = new MenuItem();
                menuItem.Header = "Coller";
                menuItem.Click += past_Item;
                menu.Items.Add(menuItem);
            }

            //past racc
            if (copy != null)
            {
                var menuracc = new MenuItem();
                menuracc.Header = "Coller raccourci";
                menuracc.Click += past_shortcut_Item;
                menu.Items.Add(menuracc);
            }
            var p = new MenuItem();

            p.Header = "Propriétés";
            p.Click += p_Item;
            menu.Items.Add(p);
            this.content.ContextMenu = menu;
        }