コード例 #1
0
        public GatherBySemanticDomainTask(
            GatherBySemanticDomainConfig config,
            LexEntryRepository lexEntryRepository,
            ViewTemplate viewTemplate,
            TaskMemoryRepository taskMemoryRepository,
            ILogger logger
            ) :
            base(
                config,
                lexEntryRepository,
                viewTemplate, taskMemoryRepository
                )
        {
            ViewTemplate = viewTemplate;
            Guard.AgainstNull(config, "config");
            Guard.AgainstNull(viewTemplate, "viewTemplate");
            _config = config;
            _logger = logger;

            _taskMemory = taskMemoryRepository.FindOrCreateSettingsByTaskId(config.TaskName);


            _currentDomainIndex   = -1;
            _currentQuestionIndex = 0;
            _words = null;

            _semanticDomainField = viewTemplate.GetField(LexSense.WellKnownProperties.SemanticDomainDdp4);
            var definitionWsId = viewTemplate.GetField(LexSense.WellKnownProperties.Definition).WritingSystemIds.First();
            IWritingSystemDefinition writingSystemForDefinition = viewTemplate.WritingSystems.Get(definitionWsId);

            Guard.AgainstNull(writingSystemForDefinition, "Definition input System");
            DefinitionWritingSystem = writingSystemForDefinition;
        }
コード例 #2
0
        public GatherWordListTask(IGatherWordListConfig config,
                                  LexEntryRepository lexEntryRepository,
                                  ViewTemplate viewTemplate,
                                  TaskMemoryRepository taskMemoryRepository)

            : base(config, lexEntryRepository, viewTemplate, taskMemoryRepository)
        {
            _viewTemplate = viewTemplate;
            Guard.AgainstNull(config.WordListFileName, "config.WordListFileName");
            Guard.AgainstNull(config.WordListWritingSystemIdOfOldFlatWordList, "config.WordListWritingSystemIdOfOldFlatWordList");
            Guard.AgainstNull(viewTemplate, "viewTemplate");

            //enhance: this isn't really true anymore, as we're moving to wordpack (where it's the folder)
            //for now, this is figure out more carefully in GetPathToUse
            _usingLiftFile = ".lift" == Path.GetExtension(config.WordListFileName).ToLower();

            _lexicalUnitWritingSystem =
                viewTemplate.GetFirstNonVoiceWritingSystemForFieldOrThrow(Field.FieldNames.EntryLexicalForm.ToString());
            _lexemeFormListFileName = config.WordListFileName;
            _words = null;
            _preferredPromptingWritingSystemId = config.WordListWritingSystemIdOfOldFlatWordList;
            var f = viewTemplate.GetField(LexSense.WellKnownProperties.Definition);

            Guard.AgainstNull(f, "No field for definition");
            _definitionWritingSystemIds = f.WritingSystemIds;

            f = viewTemplate.GetField(LexSense.WellKnownProperties.Gloss);
            if (f != null)
            {
                _glossWritingSystemIds = f.WritingSystemIds;
            }
            else
            {
                _glossWritingSystemIds = new List <string>();
            }
            if (f != null && f.IsMeaningField)
            {
                _glossMeaningField       = true;
                _meaningWritingSystemIds = _glossWritingSystemIds;
            }
            else
            {
                _meaningWritingSystemIds = _definitionWritingSystemIds;
            }
            if (_meaningWritingSystemIds.Count > 0)
            {
                _preferredPromptingWritingSystemId = _meaningWritingSystemIds[0];
            }
        }
コード例 #3
0
        private void SetupPickerControlWritingSystems()
        {
            RegisterFieldWithPicker(Field.FieldNames.EntryLexicalForm.ToString());
            // show definition instead of gloss if it is meaningfield
            Field defn = _viewTemplate.GetField(LexSense.WellKnownProperties.Definition);

            if ((defn == null) || defn.IsMeaningField == true)
            {
                RegisterFieldWithPicker(LexSense.WellKnownProperties.Definition);                 //Reversal
            }
            else
            {
                RegisterFieldWithPicker(LexSense.WellKnownProperties.Gloss);                 //Reversal
            }
        }
コード例 #4
0
        protected WordGatheringTaskBase(ITaskConfiguration config,
                                        LexEntryRepository lexEntryRepository,
                                        ViewTemplate viewTemplate,
                                        TaskMemoryRepository taskMemoryRepository)
            : base(config,
                   lexEntryRepository, taskMemoryRepository)
        {
            if (viewTemplate == null)
            {
                throw new ArgumentNullException("viewTemplate");
            }

            _viewTemplate             = viewTemplate;
            _lexicalFormWritingSystem =
                viewTemplate.GetDefaultWritingSystemForField(Field.FieldNames.EntryLexicalForm.ToString());

            var glossField = _viewTemplate.GetField(LexSense.WellKnownProperties.Gloss);

            if (glossField == null)
            {
                _glossMeaningField = false;
            }
            else
            {
                _glossMeaningField = glossField.IsMeaningField;
            }
        }
コード例 #5
0
        private void RegisterFieldWithPicker(string fieldName)
        {
            Field field = _viewTemplate.GetField(fieldName);

            if (field != null)
            {
                if (field.WritingSystemIds.Count > 0)
                {
                    IList <IWritingSystemDefinition> writingSystems =
                        BasilProject.Project.WritingSystemsFromIds(field.WritingSystemIds);
                    foreach (IWritingSystemDefinition writingSystem in writingSystems)
                    {
                        if (!WritingSystemExistsInPicker(writingSystem))
                        {
                            AddWritingSystemToPicker(writingSystem, field);
                        }
                    }
                }
                else
                {
                    ErrorReport.NotifyUserOfProblem(
                        "There are no input systems enabled for the Field '{0}'",
                        field.FieldName);
                }
            }
        }
コード例 #6
0
        public void CrossReferenceWithNFD_OutputIsNFC()
        {
            SfmTransformSettings settings = new SfmTransformSettings();

            settings.SfmTagConversions = "";
            settings.VernacularLanguageWritingSystemId = "bth";
            settings.EnglishLanguageWritingSystemId    = "en";
            _addin.Settings = settings;

            string contents =
                string.Format(
                    @"<?xml version='1.0' encoding='utf-8'?>
			<lift  version='{0}'>
			  <entry id='{1}'
				guid='d9c25d1f-d373-4995-9ffa-ae2cf650603c'>
				<lexical-unit>
				  <form lang='bth'>
					<text>{2}</text>
				  </form>
				</lexical-unit>
			  </entry>
			  <entry id='men_ebc7bf16-d322-4c3c-a4fd-3efdf8164eef'
				guid='ebc7bf16-d322-4c3c-a4fd-3efdf8164eef'>
				<lexical-unit>
				  <form lang='bth'>
					<text>men</text>
				  </form>
				</lexical-unit>
				<relation
						ref='{3}'
						type = 'confer' />
				</entry>
			</lift>"            ,
                    Validator.LiftVersion, "m\u00EB_d9c25d1f-d373-4995-9ffa-ae2cf650603c", "m\u00EB", "me\u0308_d9c25d1f-d373-4995-9ffa-ae2cf650603c");

            Console.WriteLine(contents);
            ViewTemplate template = WeSayWordsProject.Project.DefaultViewTemplate;

            template.GetField(Palaso.DictionaryServices.Model.LexEntry.WellKnownProperties.CrossReference).Enabled = true;
            string result = GetResultFromAddin(contents);

            Console.WriteLine(result);

            Regex regex = new Regex(@"\\lf\ confer\ =\ (.+)_([0-9a-f\-]+)", RegexOptions.Compiled);

            using (StringReader reader = new StringReader(result))
            {
                string line = reader.ReadLine();
                while (line != null)
                {
                    Assert.IsFalse(regex.IsMatch(line));
                    line = reader.ReadLine();
                }
                reader.Close();
            }

            Assert.IsTrue(result.Contains("\\lf confer = m\u00EB"));
            Assert.IsFalse(result.Contains("\\lf confer = me\u0308_d9c25d1f-d373-4995-9ffa-ae2cf650603c"));
        }
コード例 #7
0
        private void MissingInfoTaskConfigControl_Load(object sender, EventArgs e)
        {
            _field = _viewTemplate.GetField(Configuration.MissingInfoFieldName);
            _matchWhenEmpty.Visible            = _field.DataTypeName == Field.BuiltInDataType.MultiText.ToString();
            _matchWhenEmptyLabel.Visible       = _matchWhenEmpty.Visible;
            _requiredToBeFilledIn.Visible      = _matchWhenEmpty.Visible;
            _requiredToBeFilledInLabel.Visible = _requiredToBeFilledIn.Visible;

            _setupLabel.Visible = _matchWhenEmpty.Visible;

            if (_matchWhenEmpty.Visible)
            {
                _field.WritingSystemsChanged         += OnWritingSystemsChanged;
                Configuration.WritingSystemIdChanged += OnWritingSystemsChanged;
                Configuration.WritingSystemIdDeleted += OnWritingSystemsDeleted;
                UpdateWritingSystemFilterControls();
            }
        }
コード例 #8
0
ファイル: GatherWordListTask.cs プロジェクト: bbriggs/wesay
		// private bool _suspendNotificationOfNavigation=false;

		public GatherWordListTask(IGatherWordListConfig config,
									LexEntryRepository lexEntryRepository,
								  ViewTemplate viewTemplate)

				: base(config, lexEntryRepository, viewTemplate)
		{
			if (config.WordListFileName == null)
			{
				throw new ArgumentNullException("wordListFileName");
			}
			if (config.WordListWritingSystemId == null)
			{
				throw new ArgumentNullException("wordListWritingSystemId");
			}
			if (viewTemplate == null)
			{
				throw new ArgumentNullException("viewTemplate");
			}
			Field lexicalFormField =
					viewTemplate.GetField(Field.FieldNames.EntryLexicalForm.ToString());
			if (lexicalFormField == null || lexicalFormField.WritingSystemIds.Count < 1)
			{
				_lexicalUnitWritingSystem =
						BasilProject.Project.WritingSystems.UnknownVernacularWritingSystem;
			}
			else
			{
				string firstWSid = lexicalFormField.WritingSystemIds[0];
				WritingSystem firstWS = BasilProject.Project.WritingSystems[firstWSid];
				_lexicalUnitWritingSystem = firstWS;
			}

			_wordListFileName = config.WordListFileName;
			_words = null;
			_writingSystemIdForWordListWords = config.WordListWritingSystemId;
		}
コード例 #9
0
		protected WordGatheringTaskBase(ITaskConfiguration config,
										LexEntryRepository lexEntryRepository,
										ViewTemplate viewTemplate)
				: base( config,
						lexEntryRepository)
		{
			if (viewTemplate == null)
			{
				throw new ArgumentNullException("viewTemplate");
			}

			_viewTemplate = viewTemplate;
			Field lexicalFormField =
					viewTemplate.GetField(Field.FieldNames.EntryLexicalForm.ToString());
			WritingSystemCollection writingSystems = BasilProject.Project.WritingSystems;
			if (lexicalFormField == null || lexicalFormField.WritingSystemIds.Count < 1)
			{
				_lexicalFormWritingSystem = writingSystems.UnknownVernacularWritingSystem;
			}
			else
			{
				_lexicalFormWritingSystem = writingSystems[lexicalFormField.WritingSystemIds[0]];
			}
		}
コード例 #10
0
		public GatherBySemanticDomainTask(IGatherBySemanticDomainsConfig config,
										  LexEntryRepository lexEntryRepository,
										  ViewTemplate viewTemplate)
			: base(
			   config,
				lexEntryRepository,
				viewTemplate)
		{
			if (config == null)
			{
				throw new ArgumentNullException("config");
			}
			if (string.IsNullOrEmpty(config.semanticDomainsQuestionFileName))
			{
				throw new ArgumentNullException("config.semanticDomainsQuestionFileName");
			}
			if (viewTemplate == null)
			{
				throw new ArgumentNullException("viewTemplate");
			}

			_currentDomainIndex = -1;
			_currentQuestionIndex = 0;
			_words = null;
			_semanticDomainQuestionsFileName =
				DetermineActualQuestionsFileName(config.semanticDomainsQuestionFileName);
			if (!File.Exists(_semanticDomainQuestionsFileName))
			{
				string pathInProject =
					Path.Combine(
						WeSayWordsProject.Project.PathToWeSaySpecificFilesDirectoryInProject,
						_semanticDomainQuestionsFileName);
				if (File.Exists(pathInProject))
				{
					_semanticDomainQuestionsFileName = pathInProject;
				}
				else
				{
					string pathInProgramDir = Path.Combine(BasilProject.ApplicationCommonDirectory,
														   _semanticDomainQuestionsFileName);
					if (!File.Exists(pathInProgramDir))
					{
						throw new ApplicationException(
							string.Format(
								"Could not find the semanticDomainQuestions file {0}. Expected to find it at: {1} or {2}. The name of the file is influenced by the first enabled writing system for the Semantic Domain Field.",
								_semanticDomainQuestionsFileName,
								pathInProject,
								pathInProgramDir));
					}
					_semanticDomainQuestionsFileName = pathInProgramDir;
				}
			}

			_semanticDomainField = viewTemplate.GetField("SemanticDomainDdp4");
		}
コード例 #11
0
        private static void AssertFieldLacksWritingSystem(ViewTemplate vt, string fieldName, string wsId)
        {
            var f = vt.GetField(fieldName);

            Assert.IsFalse(f.WritingSystemIds.Contains(wsId));
        }
コード例 #12
0
        private static void AssertFieldFirstWritingSystem(ViewTemplate vt, string fieldName, string wsId)
        {
            var f = vt.GetField(fieldName);

            Assert.AreEqual(wsId, f.WritingSystemIds[0]);
        }