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); }
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); }
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); }
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); }
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; }
//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); }
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; }