public RequestHandler(List <string> providedXMLs, ParseRequest requestedMetaData, OSMGeometryType requestedType, Action <string, double> reportProgress, string workerId) { this.XmlPaths = providedXMLs; this.RequestedMetaData = requestedMetaData; // Setup data holders this.FoundItemIds = new List <string>(); this.FoundData = new Dictionary <OSMTag, List <FoundItem> >(); foreach (OSMTag metaData in requestedMetaData.Requests) { this.FoundData[metaData] = new List <FoundItem>(); } // Setup reporting infrastructure this.WorkerId = workerId; this.ReportProgress = reportProgress; if (providedXMLs[0].Length < 1000) // Don't calculate line lengths when working with tests (e.g. passed by contents not path) { this.LinesPerFile = ProgressReporting.GetLineLengthsForFiles(providedXMLs, requestedType); } }
/// <summary> /// Initilize the gui control. /// </summary> /// <param name="cache"></param> /// <param name="mediator"></param> /// <param name="configurationNode">NB: In this case it is the main 'window' element node, /// se we have to drill down to find the control definition node(s).</param> /// <param name="sourceObject"></param> public void Init(Mediator mediator, XmlNode configurationNode, ICmObject sourceObject) { CheckDisposed(); Debug.Assert(mediator != null); Debug.Assert(configurationNode != null); Debug.Assert(sourceObject != null && (sourceObject is IWfiWordform || sourceObject is IWfiAnalysis || sourceObject is IWfiGloss)); m_cache = sourceObject.Cache; m_mediator = mediator; m_configurationNode = configurationNode; m_sourceObject = sourceObject; if (sourceObject is IWfiWordform) { m_wordform = sourceObject as IWfiWordform; } else { IWfiAnalysis anal = null; if (sourceObject is IWfiAnalysis) { anal = sourceObject as IWfiAnalysis; } else { anal = WfiAnalysis.CreateFromDBObject(m_cache, sourceObject.OwnerHVO); } m_wordform = WfiWordform.CreateFromDBObject(m_cache, anal.OwnerHVO); } m_mediator.PropertyTable.SetProperty("IgnoreStatusPanel", true); m_mediator.PropertyTable.SetPropertyPersistence("IgnoreStatusPanel", false); m_progAdvInd = new ProgressReporting(m_toolStripProgressBar); // Gather up the nodes. string xpathBase = "/window/controls/parameters[@id='guicontrols']/guicontrol[@id='{0}']/parameters[@id='{1}']"; string xpath = String.Format(xpathBase, "WordformConcordanceBrowseView", "WordformInTwficsOccurrenceList"); XmlNode configNode = m_configurationNode.SelectSingleNode(xpath); // And create the RecordClerks. RecordClerk clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiWordform.kclsidWfiWordform] = clerk; m_configurationNodes[WfiWordform.kclsidWfiWordform] = configNode; xpath = String.Format(xpathBase, "AnalysisConcordanceBrowseView", "AnalysisInTwficsOccurrenceList"); configNode = m_configurationNode.SelectSingleNode(xpath); clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiAnalysis.kclsidWfiAnalysis] = clerk; m_configurationNodes[WfiAnalysis.kclsidWfiAnalysis] = configNode; xpath = String.Format(xpathBase, "GlossConcordanceBrowseView", "GlossInTwficsOccurrenceList"); configNode = m_configurationNode.SelectSingleNode(xpath); clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiGloss.kclsidWfiGloss] = clerk; m_configurationNodes[WfiGloss.kclsidWfiGloss] = configNode; int concordOnHvo = sourceObject.Hvo; Debug.Assert(m_wordform != null); Debug.Assert(concordOnHvo > 0); tvSource.Font = new Font("Arial", 9); tvTarget.Font = new Font("Arial", 9); TreeNode srcTnWf = new TreeNode(); TreeNode tarTnWf = new TreeNode(); StringUtils.InitIcuDataDir(); // used for normalizing strings to NFC tarTnWf.Text = srcTnWf.Text = StringUtils.NormalizeToNFC(MEStrings.ksNoAnalysis); tarTnWf.Tag = srcTnWf.Tag = m_wordform.Hvo; tvSource.Nodes.Add(srcTnWf); tvTarget.Nodes.Add(tarTnWf); if ((int)srcTnWf.Tag == concordOnHvo) { tvSource.SelectedNode = srcTnWf; } int cnt = 0; // Note: the left side source tree only has human approved analyses, // since only those can have instances from text-land pointing at them. foreach (int humanApprovedAnalId in m_wordform.HumanApprovedAnalyses) { IWfiAnalysis anal = WfiAnalysis.CreateFromDBObject(m_wordform.Cache, humanApprovedAnalId); TreeNode srcTnAnal = new TreeNode(); TreeNode tarTnAnal = new TreeNode(); tarTnAnal.Text = srcTnAnal.Text = StringUtils.NormalizeToNFC( String.Format(MEStrings.ksAnalysisX, (++cnt).ToString())); tarTnAnal.Tag = srcTnAnal.Tag = anal.Hvo; srcTnWf.Nodes.Add(srcTnAnal); tarTnWf.Nodes.Add(tarTnAnal); if ((int)srcTnAnal.Tag == concordOnHvo) { tvSource.SelectedNode = srcTnAnal; } foreach (WfiGloss gloss in anal.MeaningsOC) { TreeNode srcTnGloss = new TreeNode(); TreeNode tarTnGloss = new TreeNode(); ITsString tss = gloss.Form.BestAnalysisAlternative; ITsTextProps props = tss.get_PropertiesAt(0); int nVar; int ws = props.GetIntPropValues((int)FwTextPropType.ktptWs, out nVar); string fontname = m_wordform.Cache.LanguageWritingSystemFactoryAccessor.get_EngineOrNull(ws).DefaultMonospace; tarTnGloss.NodeFont = new Font(fontname, 9); srcTnGloss.NodeFont = new Font(fontname, 9); tarTnGloss.Text = srcTnGloss.Text = StringUtils.NormalizeToNFC(tss.Text); tarTnGloss.Tag = srcTnGloss.Tag = gloss.Hvo; srcTnAnal.Nodes.Add(srcTnGloss); tarTnAnal.Nodes.Add(tarTnGloss); if ((int)srcTnGloss.Tag == concordOnHvo) { tvSource.SelectedNode = srcTnGloss; } } } tvSource.ExpandAll(); tvSource.SelectedNode.EnsureVisible(); tvTarget.ExpandAll(); }
/// <summary> /// Initilize the gui control. /// </summary> /// <param name="cache"></param> /// <param name="mediator"></param> /// <param name="configurationNode">NB: In this case it is the main 'window' element node, /// se we have to drill down to find the control definition node(s).</param> /// <param name="sourceObject"></param> public void Init(Mediator mediator, XmlNode configurationNode, ICmObject sourceObject) { CheckDisposed(); Debug.Assert(mediator != null); Debug.Assert(configurationNode != null); Debug.Assert(sourceObject != null && (sourceObject is IWfiWordform || sourceObject is IWfiAnalysis || sourceObject is IWfiGloss)); m_cache = sourceObject.Cache; m_mediator = mediator; m_configurationNode = configurationNode; m_sourceObject = sourceObject; if (sourceObject is IWfiWordform) { m_wordform = sourceObject as IWfiWordform; } else { IWfiAnalysis anal = null; if (sourceObject is IWfiAnalysis) anal = sourceObject as IWfiAnalysis; else anal = WfiAnalysis.CreateFromDBObject(m_cache, sourceObject.OwnerHVO); m_wordform = WfiWordform.CreateFromDBObject(m_cache, anal.OwnerHVO); } m_mediator.PropertyTable.SetProperty("IgnoreStatusPanel", true); m_mediator.PropertyTable.SetPropertyPersistence("IgnoreStatusPanel", false); m_progAdvInd = new ProgressReporting(m_toolStripProgressBar); // Gather up the nodes. string xpathBase = "/window/controls/parameters[@id='guicontrols']/guicontrol[@id='{0}']/parameters[@id='{1}']"; string xpath = String.Format(xpathBase, "WordformConcordanceBrowseView", "WordformInTwficsOccurrenceList"); XmlNode configNode = m_configurationNode.SelectSingleNode(xpath); // And create the RecordClerks. RecordClerk clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiWordform.kclsidWfiWordform] = clerk; m_configurationNodes[WfiWordform.kclsidWfiWordform] = configNode; xpath = String.Format(xpathBase, "AnalysisConcordanceBrowseView", "AnalysisInTwficsOccurrenceList"); configNode = m_configurationNode.SelectSingleNode(xpath); clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiAnalysis.kclsidWfiAnalysis] = clerk; m_configurationNodes[WfiAnalysis.kclsidWfiAnalysis] = configNode; xpath = String.Format(xpathBase, "GlossConcordanceBrowseView", "GlossInTwficsOccurrenceList"); configNode = m_configurationNode.SelectSingleNode(xpath); clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiGloss.kclsidWfiGloss] = clerk; m_configurationNodes[WfiGloss.kclsidWfiGloss] = configNode; int concordOnHvo = sourceObject.Hvo; Debug.Assert(m_wordform != null); Debug.Assert(concordOnHvo > 0); tvSource.Font = new Font("Arial", 9); tvTarget.Font = new Font("Arial", 9); TreeNode srcTnWf = new TreeNode(); TreeNode tarTnWf = new TreeNode(); StringUtils.InitIcuDataDir(); // used for normalizing strings to NFC tarTnWf.Text = srcTnWf.Text = StringUtils.NormalizeToNFC(MEStrings.ksNoAnalysis); tarTnWf.Tag = srcTnWf.Tag = m_wordform.Hvo; tvSource.Nodes.Add(srcTnWf); tvTarget.Nodes.Add(tarTnWf); if ((int)srcTnWf.Tag == concordOnHvo) tvSource.SelectedNode = srcTnWf; int cnt = 0; // Note: the left side source tree only has human approved analyses, // since only those can have instances from text-land pointing at them. foreach (int humanApprovedAnalId in m_wordform.HumanApprovedAnalyses) { IWfiAnalysis anal = WfiAnalysis.CreateFromDBObject(m_wordform.Cache, humanApprovedAnalId); TreeNode srcTnAnal = new TreeNode(); TreeNode tarTnAnal = new TreeNode(); tarTnAnal.Text = srcTnAnal.Text = StringUtils.NormalizeToNFC( String.Format(MEStrings.ksAnalysisX, (++cnt).ToString())); tarTnAnal.Tag = srcTnAnal.Tag = anal.Hvo; srcTnWf.Nodes.Add(srcTnAnal); tarTnWf.Nodes.Add(tarTnAnal); if ((int)srcTnAnal.Tag == concordOnHvo) tvSource.SelectedNode = srcTnAnal; foreach (WfiGloss gloss in anal.MeaningsOC) { TreeNode srcTnGloss = new TreeNode(); TreeNode tarTnGloss = new TreeNode(); ITsString tss = gloss.Form.BestAnalysisAlternative; ITsTextProps props = tss.get_PropertiesAt(0); int nVar; int ws = props.GetIntPropValues((int)FwTextPropType.ktptWs, out nVar); string fontname = m_wordform.Cache.LanguageWritingSystemFactoryAccessor.get_EngineOrNull(ws).DefaultMonospace; tarTnGloss.NodeFont = new Font(fontname, 9); srcTnGloss.NodeFont = new Font(fontname, 9); tarTnGloss.Text = srcTnGloss.Text = StringUtils.NormalizeToNFC(tss.Text); tarTnGloss.Tag = srcTnGloss.Tag = gloss.Hvo; srcTnAnal.Nodes.Add(srcTnGloss); tarTnAnal.Nodes.Add(tarTnGloss); if ((int)srcTnGloss.Tag == concordOnHvo) tvSource.SelectedNode = srcTnGloss; } } tvSource.ExpandAll(); tvSource.SelectedNode.EnsureVisible(); tvTarget.ExpandAll(); }
/// <summary> /// Initilize the gui control. /// </summary> /// <param name="mediator"></param> /// <param name="configurationNode">NB: In this case it is the main 'window' element node, /// se we have to drill down to find the control definition node(s).</param> /// <param name="sourceObject"></param> public void Init(Mediator mediator, XmlNode configurationNode, ICmObject sourceObject) { CheckDisposed(); Debug.Assert(mediator != null); Debug.Assert(configurationNode != null); Debug.Assert(sourceObject != null && (sourceObject is IWfiWordform || sourceObject is IWfiAnalysis || sourceObject is IWfiGloss)); m_cache = sourceObject.Cache; m_mediator = mediator; m_configurationNode = configurationNode; if (sourceObject is IWfiWordform) { m_wordform = (IWfiWordform)sourceObject; } else { var anal = sourceObject is IWfiAnalysis ? (IWfiAnalysis)sourceObject : sourceObject.OwnerOfClass<IWfiAnalysis>(); m_wordform = anal.OwnerOfClass<IWfiWordform>(); } helpProvider.HelpNamespace = m_mediator.HelpTopicProvider.HelpFile; helpProvider.SetHelpNavigator(this, HelpNavigator.Topic); helpProvider.SetHelpKeyword(this, m_mediator.HelpTopicProvider.GetHelpString(s_helpTopic)); helpProvider.SetShowHelp(this, true); m_mediator.PropertyTable.SetProperty("IgnoreStatusPanel", true); m_mediator.PropertyTable.SetPropertyPersistence("IgnoreStatusPanel", false); m_progAdvInd = new ProgressReporting(m_toolStripProgressBar); // Gather up the nodes. const string xpathBase = "/window/controls/parameters[@id='guicontrols']/guicontrol[@id='{0}']/parameters[@id='{1}']"; var xpath = String.Format(xpathBase, "WordformConcordanceBrowseView", "WordformInSegmentsOccurrenceList"); var configNode = m_configurationNode.SelectSingleNode(xpath); // And create the RecordClerks. var clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode, true); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiWordformTags.kClassId] = clerk; m_configurationNodes[WfiWordformTags.kClassId] = configNode; xpath = String.Format(xpathBase, "AnalysisConcordanceBrowseView", "AnalysisInSegmentsOccurrenceList"); configNode = m_configurationNode.SelectSingleNode(xpath); clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode, true); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiAnalysisTags.kClassId] = clerk; m_configurationNodes[WfiAnalysisTags.kClassId] = configNode; xpath = String.Format(xpathBase, "GlossConcordanceBrowseView", "GlossInSegmentsOccurrenceList"); configNode = m_configurationNode.SelectSingleNode(xpath); clerk = RecordClerkFactory.CreateClerk(m_mediator, configNode, true); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiGlossTags.kClassId] = clerk; m_configurationNodes[WfiGlossTags.kClassId] = configNode; Debug.Assert(m_wordform != null); Debug.Assert(sourceObject != null); tvSource.Font = new Font(MiscUtils.StandardSansSerif, 9); tvTarget.Font = new Font(MiscUtils.StandardSansSerif, 9); var srcTnWf = new TreeNode(); var tarTnWf = new TreeNode(); tarTnWf.Text = srcTnWf.Text = TsStringUtils.NormalizeToNFC(MEStrings.ksNoAnalysis); tarTnWf.Tag = srcTnWf.Tag = m_wordform; tvSource.Nodes.Add(srcTnWf); tvTarget.Nodes.Add(tarTnWf); if (srcTnWf.Tag == sourceObject) tvSource.SelectedNode = srcTnWf; var cnt = 0; // Note: the left side source tree only has human approved analyses, // since only those can have instances from text-land pointing at them. foreach (var anal in m_wordform.HumanApprovedAnalyses) { var srcTnAnal = new TreeNode(); var tarTnAnal = new TreeNode { Text = srcTnAnal.Text = TsStringUtils.NormalizeToNFC( String.Format(MEStrings.ksAnalysisX, (++cnt))), Tag = srcTnAnal.Tag = anal }; srcTnWf.Nodes.Add(srcTnAnal); tarTnWf.Nodes.Add(tarTnAnal); if (srcTnAnal.Tag == sourceObject) tvSource.SelectedNode = srcTnAnal; foreach (var gloss in anal.MeaningsOC) { var srcTnGloss = new TreeNode(); var tarTnGloss = new TreeNode(); var tss = gloss.Form.BestAnalysisAlternative; var props = tss.get_PropertiesAt(0); int nVar; var ws = props.GetIntPropValues((int)FwTextPropType.ktptWs, out nVar); var fontname = m_wordform.Cache.ServiceLocator.WritingSystemManager.Get(ws).DefaultFontName; tarTnGloss.NodeFont = new Font(fontname, 9); srcTnGloss.NodeFont = new Font(fontname, 9); tarTnGloss.Text = srcTnGloss.Text = TsStringUtils.NormalizeToNFC(tss.Text); tarTnGloss.Tag = srcTnGloss.Tag = gloss; srcTnAnal.Nodes.Add(srcTnGloss); tarTnAnal.Nodes.Add(tarTnGloss); if (srcTnGloss.Tag == sourceObject) tvSource.SelectedNode = srcTnGloss; } } tvSource.ExpandAll(); tvSource.SelectedNode.EnsureVisible(); tvTarget.ExpandAll(); }
/// <summary> /// Initilize the gui control. /// </summary> /// <param name="mediator"></param> /// <param name="propertyTable"></param> /// <param name="configurationNode">NB: In this case it is the main 'window' element node, /// se we have to drill down to find the control definition node(s).</param> /// <param name="sourceObject"></param> public void Init(Mediator mediator, PropertyTable propertyTable, XmlNode configurationNode, ICmObject sourceObject) { CheckDisposed(); Debug.Assert(mediator != null); Debug.Assert(configurationNode != null); Debug.Assert(sourceObject != null && (sourceObject is IWfiWordform || sourceObject is IWfiAnalysis || sourceObject is IWfiGloss)); m_cache = sourceObject.Cache; m_mediator = mediator; m_propertyTable = propertyTable; m_configurationNode = configurationNode; if (sourceObject is IWfiWordform) { m_wordform = (IWfiWordform)sourceObject; } else { var anal = sourceObject is IWfiAnalysis ? (IWfiAnalysis)sourceObject : sourceObject.OwnerOfClass <IWfiAnalysis>(); m_wordform = anal.OwnerOfClass <IWfiWordform>(); } helpProvider.HelpNamespace = m_propertyTable.GetValue <IHelpTopicProvider>("HelpTopicProvider").HelpFile; helpProvider.SetHelpNavigator(this, HelpNavigator.Topic); helpProvider.SetHelpKeyword(this, m_propertyTable.GetValue <IHelpTopicProvider>("HelpTopicProvider").GetHelpString(s_helpTopic)); helpProvider.SetShowHelp(this, true); m_propertyTable.SetProperty("IgnoreStatusPanel", true, true); m_propertyTable.SetPropertyPersistence("IgnoreStatusPanel", false); m_progAdvInd = new ProgressReporting(m_toolStripProgressBar); // Gather up the nodes. const string xpathBase = "/window/controls/parameters[@id='guicontrols']/guicontrol[@id='{0}']/parameters[@id='{1}']"; var xpath = String.Format(xpathBase, "WordformConcordanceBrowseView", "WordformInSegmentsOccurrenceList"); var configNode = m_configurationNode.SelectSingleNode(xpath); // And create the RecordClerks. var clerk = RecordClerkFactory.CreateClerk(m_mediator, m_propertyTable, configNode, true); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiWordformTags.kClassId] = clerk; m_configurationNodes[WfiWordformTags.kClassId] = configNode; xpath = String.Format(xpathBase, "AnalysisConcordanceBrowseView", "AnalysisInSegmentsOccurrenceList"); configNode = m_configurationNode.SelectSingleNode(xpath); clerk = RecordClerkFactory.CreateClerk(m_mediator, m_propertyTable, configNode, true); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiAnalysisTags.kClassId] = clerk; m_configurationNodes[WfiAnalysisTags.kClassId] = configNode; xpath = String.Format(xpathBase, "GlossConcordanceBrowseView", "GlossInSegmentsOccurrenceList"); configNode = m_configurationNode.SelectSingleNode(xpath); clerk = RecordClerkFactory.CreateClerk(m_mediator, m_propertyTable, configNode, true); clerk.ProgressReporter = m_progAdvInd; m_recordClerks[WfiGlossTags.kClassId] = clerk; m_configurationNodes[WfiGlossTags.kClassId] = configNode; Debug.Assert(m_wordform != null); Debug.Assert(sourceObject != null); tvSource.Font = new Font(MiscUtils.StandardSansSerif, 9); tvTarget.Font = new Font(MiscUtils.StandardSansSerif, 9); var srcTnWf = new TreeNode(); var tarTnWf = new TreeNode(); tarTnWf.Text = srcTnWf.Text = TsStringUtils.NormalizeToNFC(MEStrings.ksNoAnalysis); tarTnWf.Tag = srcTnWf.Tag = m_wordform; tvSource.Nodes.Add(srcTnWf); tvTarget.Nodes.Add(tarTnWf); if (srcTnWf.Tag == sourceObject) { tvSource.SelectedNode = srcTnWf; } var cnt = 0; // Note: the left side source tree only has human approved analyses, // since only those can have instances from text-land pointing at them. foreach (var anal in m_wordform.HumanApprovedAnalyses) { var srcTnAnal = new TreeNode(); var tarTnAnal = new TreeNode { Text = srcTnAnal.Text = TsStringUtils.NormalizeToNFC( String.Format(MEStrings.ksAnalysisX, (++cnt))), Tag = srcTnAnal.Tag = anal }; srcTnWf.Nodes.Add(srcTnAnal); tarTnWf.Nodes.Add(tarTnAnal); if (srcTnAnal.Tag == sourceObject) { tvSource.SelectedNode = srcTnAnal; } foreach (var gloss in anal.MeaningsOC) { var srcTnGloss = new TreeNode(); var tarTnGloss = new TreeNode(); var tss = gloss.Form.BestAnalysisAlternative; var props = tss.get_PropertiesAt(0); int nVar; var ws = props.GetIntPropValues((int)FwTextPropType.ktptWs, out nVar); var fontname = m_wordform.Cache.ServiceLocator.WritingSystemManager.Get(ws).DefaultFontName; tarTnGloss.NodeFont = new Font(fontname, 9); srcTnGloss.NodeFont = new Font(fontname, 9); tarTnGloss.Text = srcTnGloss.Text = TsStringUtils.NormalizeToNFC(tss.Text); tarTnGloss.Tag = srcTnGloss.Tag = gloss; srcTnAnal.Nodes.Add(srcTnGloss); tarTnAnal.Nodes.Add(tarTnGloss); if (srcTnGloss.Tag == sourceObject) { tvSource.SelectedNode = srcTnGloss; } } } tvSource.ExpandAll(); tvSource.SelectedNode.EnsureVisible(); tvTarget.ExpandAll(); }