Exemplo n.º 1
0
        private void Nv_Drop(object sender, System.Windows.DragEventArgs e)
        {
            TabPage tabPage = schemesTabControl.SelectedTab;

            if (tabPage.Tag == null)
            {
                return;
            }
            network.NetworkView nv = tabPage.Controls.OfType <ElementHost>().First().Child as network.NetworkView;

            // Retrieve the client coordinates of the drop location.
            System.Windows.Point p           = new System.Windows.Point(MousePosition.X, MousePosition.Y);
            System.Windows.Point targetPoint = nv.PointFromScreen(p);

            // Retrieve the node that was dragged.
            if (!e.Data.GetDataPresent(typeof(DataContainer)))
            {
                return;
            }
            DataContainer ontologyClassContainer = (DataContainer)e.Data.GetData(typeof(DataContainer));

            OntologyClass ontologyClass = ontologyClassContainer.Data as OntologyClass;

            //Layout layout;

            Scheme scheme = (Scheme)schemesTabControl.SelectedTab.Tag;

            FactScheme.Argument arg = scheme.AddArgument(ontologyClass);

            network.Node node = nv.AddNode(Medium.Convert(arg), true);
        }
Exemplo n.º 2
0
        private network.NetworkView getCurrentNetworkView()
        {
            TabPage tabPage = schemesTabControl.SelectedTab;

            if (tabPage.Tag == null)
            {
                return(null);
            }
            network.NetworkView nv = tabPage.Controls.OfType <ElementHost>().First().Child as network.NetworkView;
            return(nv);
        }
Exemplo n.º 3
0
        private void addDictionaryArgumentMenuItem_Click(object sender, EventArgs e)
        {
            network.NetworkView nv = getCurrentNetworkView();
            if (nv == null)
            {
                return;
            }
            var theme = menuItemToTheme(sender as ToolStripMenuItem);

            FactScheme.Argument arg = CurrentScheme.AddArgument(theme);

            network.Node node = nv.AddNode(Medium.Convert(arg, CurrentProject.Dictionary), true);
        }
Exemplo n.º 4
0
        private void addResultMenuItem_Click(object sender, EventArgs e)
        {
            network.NetworkView nv = getCurrentNetworkView();
            if (nv == null)
            {
                return;
            }

            OntologyClass ontologyClass = menuItemToClass(sender as ToolStripMenuItem);
            Scheme        scheme        = (Scheme)schemesTabControl.SelectedTab.Tag;

            FactScheme.Result result = scheme.AddResult(ontologyClass);
            network.Node      node   = nv.AddNode(Medium.Convert(result), true);
        }
Exemplo n.º 5
0
        private void saveProjectFileDialog_FileOk(object sender, CancelEventArgs e)
        {
            XElement xmarkup = new XElement(EditorConstants.XML_EDITOR_MARKUP);

            foreach (Scheme scheme in CurrentProject.Bank.Schemes)
            {
                XElement            xscheme = new XElement("scheme", new XAttribute("name", scheme.Name));
                network.NetworkView nv      = NVHosts[scheme].Child as network.NetworkView;
                foreach (network.Node node in nv.Nodes)
                {
                    string id;
                    if (node.Tag is Argument)
                    {
                        id = (node.Tag as Argument).Order.ToString();
                    }
                    else if (node.Tag is Condition)
                    {
                        id = ((Condition)node.Tag).ID.ToString();
                    }
                    else if (node.Tag is Functor)
                    {
                        id = ((Functor)node.Tag).CID.ToString();
                    }
                    else
                    {
                        id = (node.TagName);
                    }
                    XElement xnode = new XElement("node",
                                                  new XAttribute("type", (node.Tag is Functor) ? "FactScheme.Functor" : node.Tag.GetType().ToString()), //shiieeeeeeet
                                                  new XAttribute("id", id),
                                                  new XAttribute("left", (int)node.Margin.Left),
                                                  new XAttribute("top", (int)node.Margin.Top));
                    xscheme.Add(xnode);
                }
                xmarkup.Add(xscheme);
            }
            CurrentProject.Markup = xmarkup;
            var fstream = saveProjectFileDialog.OpenFile();

            CurrentProject.Save(fstream);
            fstream.Close();

            statusLabel.Text = Locale.STATUS_SAVED;
        }
Exemplo n.º 6
0
        //private System.Windows.Thickness nvCanvasOffset = new System.Windows.Thickness( -short.MaxValue / 2.0, -short.MaxValue / 2.0 , 0, 0);
        ElementHost initNVHost(Scheme scheme)
        {
            if (NVHosts.ContainsKey(scheme))
            {
                return(NVHosts[scheme]);
            }
            ElementHost elementHost = new ElementHost();

            elementHost.Dock      = DockStyle.Fill;
            elementHost.AutoSize  = true;
            elementHost.AllowDrop = true;
            elementHost.Name      = EditorConstants.TABPAGE_WPF_HOST_NAME;

            //create a networkview
            network.NetworkView nv = new network.NetworkView();

            nv.Drop              += Nv_Drop;
            nv.NodeAdded         += NV_NodeAdded;
            nv.NodeRemoving      += NV_NodeRemoving;
            nv.ConnectionAdded   += NV_ConnectionAdded;
            nv.ConnectionRemoved += NV_ConnectionRemoved;
            nv.ContextMenu        = NVViewContextMenu;
            nv.NodeSelected      += (s, e) =>
            {
                if (nv.SelectedNode.Tag is Argument)
                {
                    OpenPropsPanelV2((Argument)nv.SelectedNode.Tag);
                }
            };

            elementHost.Child = nv;
            //nv.Margin = nvCanvasOffset;

            NVHosts.Add(scheme, elementHost);

            return(elementHost);
        }
Exemplo n.º 7
0
        private void openProjectDialog_FileOk(object sender, CancelEventArgs e)
        {
            Stream fstream = openProjectDialog.OpenFile();
            var    path    = System.IO.Path.GetDirectoryName(openProjectDialog.FileName) +
                             System.IO.Path.DirectorySeparatorChar;

            CurrentProject = new EditorProject(fstream, path);
            fstream.Close();

            buildOntologyTree(CurrentProject.Ontology);
            buildDictionaryTree(CurrentProject.Dictionary);

            XElement xmarkup = CurrentProject.Markup;

            if (xmarkup != null)
            {
                foreach (var xscheme in xmarkup.Elements())
                {
                    var                 scheme = CurrentProject.Bank.Schemes.First(x => x.Name == xscheme.Attribute("name").Value);
                    ElementHost         host   = initNVHost(scheme);
                    network.NetworkView nv     = host.Child as network.NetworkView;
                    foreach (XElement xel in xscheme.Elements())
                    {
                        network.Node             node   = null;
                        System.Windows.Thickness margin = new System.Windows.Thickness();
                        if (xel.Attribute("type").Value == typeof(Argument).ToString())
                        {
                            Argument arg = scheme.Arguments.First(x => x.Order == int.Parse(xel.Attribute("id").Value));
                            node = nv.AddNode(Medium.Convert(arg, CurrentProject.Dictionary));
                        }
                        else if (xel.Attribute("type").Value == typeof(Result).ToString())
                        {
                            Result res = scheme.Results.First(x => x.Name == xel.Attribute("id").Value);
                            node = nv.AddNode(Medium.Convert(res));
                        }
                        else if (xel.Attribute("type").Value == typeof(Functor).ToString())
                        {
                            Functor f = scheme.Functors.First(x => x.CID == uint.Parse(xel.Attribute("id").Value));
                            node = nv.AddNode(Medium.Convert(f));
                        }
                        else if (xel.Attribute("type").Value == typeof(Condition).ToString())
                        {
                            Condition cond = scheme.Conditions.Find(x => x.ID == uint.Parse(xel.Attribute("id").Value));
                            node = nv.AddNode(Medium.Convert(cond, CurrentProject.Gramtab, CurrentProject.Segments));
                        }
                        else
                        {
                            continue;
                        }
                        int left = int.Parse(xel.Attribute("left").Value);
                        int top  = int.Parse(xel.Attribute("top").Value);
                        margin.Left = left;
                        margin.Top  = top;
                        node.Margin = margin;
                    }
                    Medium.LoadViewFromScheme(nv, scheme);
                }
            }
            if (!CurrentProject.Bank.Schemes.Any())
            {
                createScheme();
            }
            //updateBankListView();

            CurrentScheme = CurrentProject.Bank.Schemes[0];
            bankListDataGrid.DataSource   = CurrentProject.Bank.Schemes;
            schemeSegmentCombo.DataSource = CurrentProject.Segments;

            statusLabel.Text = Locale.STATUS_PROJECT_LOADED;
        }