private FieldElement GetDateFieldElement(ComponentPart componentPart) { if (componentPart == null || componentPart.Elements == null || !componentPart.Elements.Any()) { return(null); } FieldElement dateFieldElement = componentPart.Elements.Where(element => { DateTimeFieldElement dateTimeFieldElement = element as DateTimeFieldElement; if (dateTimeFieldElement != null) { return(true); } TextFieldElement textFieldElement = element as TextFieldElement; if (textFieldElement != null) { return(true); } return(false); }).FirstOrDefault() as FieldElement; return(dateFieldElement); }
public void Show(TextFieldElement textField) { this.textField = textField; inputField.gameObject.SetActive(true); inputField.transform.SetSiblingIndex(textField.Position); text.text = textField.Content; enabled = true; }
public NameTakenScreen(GameState state, string name = "Name Taken") : base(state, name) { Events.instance.AddListener <NameTakenEvent> (OnNameTakenEvent); textField = new TextFieldElement(1); ScreenElements.AddEnabled("copy", new LabelElement("", 0)); ScreenElements.AddEnabled("textfield", textField); ScreenElements.AddEnabled("enter", CreateButton("Enter", 2)); ScreenElements.AddEnabled("back", CreateBottomButton("Back")); }
public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled) { handled = false; if (citation == null) { return(null); } if (citation.Reference == null) { return(null); } if (componentPart == null) { return(null); } if (componentPart.Elements == null || componentPart.Elements.Count == 0) { return(null); } TextFieldElement textFieldElement = componentPart.Elements.OfType <TextFieldElement>().FirstOrDefault(); //SwissAcademic.Citavi.Citations.TextFieldElement if (textFieldElement == null) { return(null); } bool found = false; TextUnitCollection textUnits = textFieldElement.GetTextUnits(citation, template); if (textUnits == null) { return(null); } foreach (ITextUnit textUnit in textUnits) { if (textUnit.Text.Contains("-")) { found = true; textUnit.Text = textUnit.Text.Replace("-", "\u2011"); } } if (found) { componentPart.Elements.ReplaceItem(textFieldElement, textUnits.TextUnitsToLiteralElements(componentPart)); } return(null); }
public EnterNameScreen(GameState state, string name = "Enter Name") : base(state, name) { enterButton = CreateButton("Enter", 2); ScreenElements.AddEnabled("background", new BackgroundElement("logo", Color.black)); ScreenElements.AddEnabled("copy", new LabelElement(Copy.EnterName, 0)); ScreenElements.AddEnabled("textfield", new TextFieldElement(1)); ScreenElements.AddEnabled("enter", enterButton); ScreenElements.AddEnabled("back", CreateBottomButton("Back")); textField = ScreenElements.Get <TextFieldElement> ("textfield"); textField.onUpdateContent += OnUpdateContent; }
void UpdateScreen() { SetScrollbarActive(false); labelManager.RemoveLabels(); textFieldManager.Hide(); timerManager.Hide(); imageManager.Hide(); scoreboardPoolManager.Hide(); scoreboardPotManager.Hide(); buttonManager.RemoveButtons(); foreach (ScreenElement element in elements) { if (element is LabelElement) { LabelElement l = element as LabelElement; labelManager.SetLabel(l); } if (element is TextFieldElement) { TextFieldElement t = element as TextFieldElement; textFieldManager.Show(t); } if (element is ButtonElement && !(element is BottomButtonElement) && !(element is TimerElement)) { ButtonElement b = element as ButtonElement; buttonManager.SetButton(b); } if (element is TimerElement) { TimerElement t = element as TimerElement; timerManager.Show(t); } if (element is ImageElement) { ImageElement i = element as ImageElement; imageManager.Show(i); } if (element is ScoreboardPoolElement) { ScoreboardPoolElement s = element as ScoreboardPoolElement; scoreboardPoolManager.Show(s); } if (element is ScoreboardPotElement) { ScoreboardPotElement s = element as ScoreboardPotElement; scoreboardPotManager.Show(s); } } CoroutineManager.Instance.WaitForFrame(OnWaitForFrame); }
protected override void OnButtonPress(ButtonPressEvent e) { switch (e.id) { case "Enter": TextFieldElement tfe = ScreenElements.Get <TextFieldElement> ("textfield"); if (tfe.Content != "") { // Events.instance.Raise (new EnterNameEvent (tfe.Content)); Player.instance.Name = tfe.Content; MultiplayerManager.instance.NewNameEntered(); } break; /*case "Back": * MultiplayerManager.instance.Disconnect (); * // GotoScreen ("Games List"); * break;*/ } }
public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled) { handled = false; if (componentPart == null) { return(null); } if (citation == null) { return(null); } if (citation.Reference == null) { return(null); } if (componentPart.Scope == ComponentPartScope.ParentReference && citation.Reference.ParentReference == null) { return(null); } var referenceInScopeOfComponentPart = componentPart.Scope == ComponentPartScope.ParentReference ? citation.Reference.ParentReference : citation.Reference; //check for the first custom field in the componentPart ... we expect this to be the field where the publication media type ist stored ReferencePropertyId[] customFieldProperties = new ReferencePropertyId[] { ReferencePropertyId.CustomField1, ReferencePropertyId.CustomField2, ReferencePropertyId.CustomField3, ReferencePropertyId.CustomField4, ReferencePropertyId.CustomField5, ReferencePropertyId.CustomField6, ReferencePropertyId.CustomField7, ReferencePropertyId.CustomField8, ReferencePropertyId.CustomField9 }; TextFieldElement customFieldElement = componentPart.GetFieldElements().OfType <TextFieldElement>().FirstOrDefault(fieldElement => customFieldProperties.Contains(fieldElement.PropertyId)); if (customFieldElement == null) { return(null); } //check if corresponding reference field contains data var mediaType = referenceInScopeOfComponentPart.GetValue(customFieldElement.PropertyId) as string; if (string.IsNullOrEmpty(mediaType)) { return(null); } //the following words should be output in italics var specialMediaTypes = new string[] { "iPad", "Kindle", "Microsoft", "Word", "PowerPoint", "Excel", "Nook", "Sony", "Adobe" }; var regEx = new Regex(@"\b(" + string.Join("|", specialMediaTypes) + @")\b", RegexOptions.IgnoreCase); if (regEx.IsMatch(mediaType)) { var words = mediaType.Split(' '); var newLiteralElements = new List <LiteralElement>(); for (int i = 0; i < words.Count(); i++) { var word = words[i]; if (string.IsNullOrWhiteSpace(word)) { continue; } LiteralElement newLiteralElement = null; if (i < words.Count() - 1) { newLiteralElement = new LiteralElement(componentPart, word + " "); } else { newLiteralElement = new LiteralElement(componentPart, word); } if (specialMediaTypes.Contains(word)) { newLiteralElement.FontStyle = SwissAcademic.Drawing.FontStyle.Italic; } else { newLiteralElement.FontStyle = SwissAcademic.Drawing.FontStyle.Neutral; } newLiteralElements.Add(newLiteralElement); } var index = componentPart.Elements.IndexOf(customFieldElement); componentPart.Elements.RemoveAt(index); componentPart.Elements.InsertElements(index, newLiteralElements); foreach (var element in componentPart.Elements.OfType <LiteralElement>()) { element.ApplyCondition = ElementApplyCondition.Always; } //componentPart.Elements.ReplaceItem(customFieldElement, newLiteralElements); } return(null); }
//Version 2.0 script can be attached to both date/time field element as well as text field element //Format date range (if applicable) //Enter date range as: dd.MM.yyyy - dd.MM.yyyy //Format it to: dd.-dd. MMMM yyyy e.g. public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled) { CultureInfo targetCulture = CultureInfo.CreateSpecificCulture("de-DE"); handled = false; if (citation == null) { return(null); } if (citation.Reference == null) { return(null); } if (componentPart == null) { return(null); } if (componentPart.Elements == null || componentPart.Elements.Count != 1) { return(null); } FieldElement firstDateContainingFieldElement = componentPart.Elements.Where(element => { DateTimeFieldElement dateTimeFieldElement = element as DateTimeFieldElement; if (dateTimeFieldElement != null) { return(true); } TextFieldElement textFieldElement = element as TextFieldElement; if (textFieldElement != null) { return(true); } return(false); }).FirstOrDefault() as FieldElement; if (firstDateContainingFieldElement == null) { return(null); } ReferencePropertyId referencePropertyId = firstDateContainingFieldElement.PropertyId; Reference referenceResolved = componentPart.Scope == ComponentPartScope.ParentReference ? citation.Reference.ParentReference : citation.Reference; if (referenceResolved == null) { return(null); } string date = referenceResolved.GetValue(referencePropertyId) as string; if (string.IsNullOrEmpty(date)) { return(null); } FontStyle fontStyle = firstDateContainingFieldElement is DateTimeFieldElement ? ((DateTimeFieldElement)firstDateContainingFieldElement).FontStyle : ((TextFieldElement)firstDateContainingFieldElement).FontStyle; DateTime dateSingle; DateTime dateA; DateTime dateB; CultureInfo deDE = new CultureInfo("de-DE"); string[] formats = new string[] { "dd.MM.yyyy", "d.M.yyyy", "d.MM.yyyy", "dd.M.yyyy", "dd.MM.yy", "d.M.yy", "d.MM.yy", "dd.M.yy" }; //try single date first var found = DateTime.TryParseExact(date, formats, deDE, DateTimeStyles.None, out dateSingle); if (found) { var monthStringShort = dateSingle.ToString("MMM", targetCulture); var monthStringLong = dateSingle.ToString("MMMM", targetCulture); var monthString = monthStringShort == monthStringLong ? monthStringShort : monthStringShort + "."; var yearString = dateSingle.ToString("yyyy"); var dayString = dateSingle.Day.ToString("D2"); var outputFormatSingle = "{0} {1}, {2}"; var dateSingleText = string.Format(outputFormatSingle, monthString, dayString, yearString); var outputSingleDate = new TextUnitCollection(); var textSingleDate = new LiteralTextUnit(dateSingleText); textSingleDate.FontStyle = fontStyle; outputSingleDate.Add(textSingleDate); handled = true; return(outputSingleDate); } //then try date range List <string> dates = date.Split('-').Select(d => d.Trim()).ToList(); if (dates.Count != 2) { return(null); } var foundA = DateTime.TryParseExact(dates.ElementAt(0), formats, deDE, DateTimeStyles.None, out dateA); var foundB = DateTime.TryParseExact(dates.ElementAt(1), formats, deDE, DateTimeStyles.None, out dateB); if (!foundA || !foundB) { return(null); } var monthAStringShort = dateA.ToString("MMM", targetCulture); var monthAStringLong = dateA.ToString("MMMM", targetCulture); var monthAString = monthAStringShort == monthAStringLong ? monthAStringShort : monthAStringShort + "."; var monthBStringShort = dateB.ToString("MMM", targetCulture); var monthBStringLong = dateB.ToString("MMMM", targetCulture); var monthBString = monthBStringShort == monthBStringLong ? monthBStringShort : monthBStringShort + "."; var yearAString = dateA.ToString("yyyy"); var yearBString = dateB.ToString("yyyy"); var dayAString = dateA.Day.ToString("D2"); var dayBString = dateB.Day.ToString("D2"); string outputFormat = string.Empty; string dateRangeText = string.Empty; //same year, same month if (dateA.Year == dateB.Year && dateA.Month == dateB.Month && dateA.Day != dateB.Day) { outputFormat = "{0}.-{1}. {2} {3}"; //e.g. 08.-11. September 2013 dateRangeText = string.Format(outputFormat, dayAString, dayBString, monthAStringLong, yearAString); } //same year, different months else if (dateA.Year == dateB.Year && dateA.Month != dateB.Month) { outputFormat = "{0}. {1} - {2}. {3} {4}"; //e.g. 27. September - 04. Oktober 2013 dateRangeText = string.Format(outputFormat, dayAString, monthAStringLong, dayBString, monthBStringLong, yearAString); } //different years else { outputFormat = "{0}. {1} {2} - {3}. {4} {5}"; //e.g. 27. Dezember 2013 - 04. Januar 2014 dateRangeText = string.Format(outputFormat, dayAString, monthAStringLong, yearAString, dayBString, monthBStringLong, yearBString); } var output = new TextUnitCollection(); var text = new LiteralTextUnit(dateRangeText); text.FontStyle = fontStyle; output.Add(text); handled = true; return(output); }
public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled) { handled = false; if (citation == null) { return(null); } Reference reference = citation.Reference; if (reference == null) { return(null); } if (componentPart == null) { return(null); } if (componentPart.Elements == null || !componentPart.Elements.Any() || componentPart.Elements.Count != 1) { return(null); } TextFieldElement firstTextFieldElement = componentPart.Elements.OfType <TextFieldElement>().FirstOrDefault() as TextFieldElement; if (firstTextFieldElement == null) { return(null); } ComponentPartScope scope = componentPart.Scope; Reference referenceInScope = null; if (scope == ComponentPartScope.Reference) { referenceInScope = reference; } else { referenceInScope = reference.ParentReference; } if (referenceInScope == null) { return(null); } ReferencePropertyId propertyTagged = ReferencePropertyId.None; switch (firstTextFieldElement.PropertyId) { case ReferencePropertyId.Title: { propertyTagged = ReferencePropertyId.TitleTagged; } break; case ReferencePropertyId.Subtitle: { propertyTagged = ReferencePropertyId.SubtitleTagged; } break; case ReferencePropertyId.TitleSupplement: { propertyTagged = ReferencePropertyId.TitleSupplementTagged; } break; } if (propertyTagged == ReferencePropertyId.None) { return(null); } string stringTagged = referenceInScope.GetValue(propertyTagged) as string; if (string.IsNullOrEmpty(stringTagged)) { return(null); } if (!HasTags(stringTagged)) { return(null); } bool italicFound = false; TextUnitCollection textUnitCollection = TextUnitCollectionUtility.TaggedTextToTextUnits(firstTextFieldElement, stringTagged); foreach (ITextUnit textUnit in textUnitCollection) { //Flip bits where required if (firstTextFieldElement.FontStyle.HasFlag(FontStyle.Italic)) { textUnit.TemporaryFontStyle ^= FontStyle.Italic; } if (firstTextFieldElement.FontStyle.HasFlag(FontStyle.Bold)) { textUnit.TemporaryFontStyle ^= FontStyle.Bold; } } handled = true; return(textUnitCollection); }
public string GetDocumentText() { WaitUntilLoaded(); return(TextFieldElement.GetAttribute("textContent")); }
public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled) { //return handled = true if this macro generates the output (as a IEnumerable<ITextUnit>); the standard output will be suppressed //return handled = false if you want Citavi to produce the standard output; //you can still manipulate the component part and its elements before letting Citavi generate the output with handled = false handled = false; if (citation == null) { return(null); } if (citation.Reference == null) { return(null); } if (componentPart == null) { return(null); } if (componentPart.Elements == null || componentPart.Elements.Count == 0) { return(null); } var hasDOI = !string.IsNullOrEmpty(citation.Reference.Doi); var hasPubMedId = !string.IsNullOrEmpty(citation.Reference.PubMedId); if (!hasDOI && !hasPubMedId) { return(null); //die Komponente "leert" sich von alleine, denn die (statische) Beschriftung wird nur ausgegeben, wenn eines der Felder Inhalt hat. } IEnumerable <TextFieldElement> doiFieldElements = componentPart.Elements.OfType <TextFieldElement>().Where(element => element.PropertyId == ReferencePropertyId.Doi); if (doiFieldElements == null || doiFieldElements.Count() != 1) { return(null); } TextFieldElement doiFieldElement = doiFieldElements.FirstOrDefault(); if (doiFieldElement == null) { return(null); } IEnumerable <TextFieldElement> pmidFieldElements = componentPart.Elements.OfType <TextFieldElement>().Where(element => element.PropertyId == ReferencePropertyId.PubMedId); if (pmidFieldElements == null || pmidFieldElements.Count() != 1) { return(null); } TextFieldElement pmidFieldElement = pmidFieldElements.FirstOrDefault(); if (pmidFieldElement == null) { return(null); } IEnumerable <LiteralElement> literalElements = componentPart.Elements.OfType <LiteralElement>().Where(element => element.Text == "Identifier: "); if (literalElements == null || literalElements.Count() != 1) { return(null); } LiteralElement literalElement = literalElements.FirstOrDefault(); if (literalElement == null) { return(null); } //nur PubMedID? -> Beschriftung auf "PMID: " if (hasPubMedId && !hasDOI) { literalElement.Text = "PMID: "; return(null); } //nur DOI? -> Beschriftung auf "DOI: " if (!hasPubMedId && hasDOI) { literalElement.Text = "DOI: "; return(null); } //PubMedID UND DOI? -> PubMedID ist zu bevorzugen! Beschriftung auf "PMID: " und DOI-Feldelement rauswerfen if (hasPubMedId && hasDOI) { literalElement.Text = "PMID: "; componentPart.Elements.Remove(doiFieldElement); return(null); } //hierher sollten wir nie kommen, aber wer weiss return(null); }
public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled) { //return handled = true if this macro generates the output (as a IEnumerable<ITextUnit>); the standard output will be suppressed //return handled = false if you want Citavi to produce the standard output; //you can still manipulate the component part and its elements before letting Citavi generate the output with handled = false handled = false; if (citation == null) { return(null); } if (citation.Reference == null) { return(null); } if (componentPart == null) { return(null); } if (componentPart.Elements == null || componentPart.Elements.Count == 0) { return(null); } var hasDOI = !string.IsNullOrEmpty(citation.Reference.Doi); var hasOnlineAddress = !string.IsNullOrEmpty(citation.Reference.OnlineAddress); if (!hasDOI && !hasOnlineAddress) { return(null); //the component "clears" by itself, because the (static) label is only printed if one of the fields has content. } IEnumerable <TextFieldElement> doiFieldElements = componentPart.Elements.OfType <TextFieldElement>().Where(element => element.PropertyId == ReferencePropertyId.Doi); if (doiFieldElements == null || doiFieldElements.Count() != 1) { return(null); } TextFieldElement doiFieldElement = doiFieldElements.FirstOrDefault(); if (doiFieldElement == null) { return(null); } IEnumerable <ElectronicAddressFieldElement> onlineAddressFieldElements = componentPart.Elements.OfType <ElectronicAddressFieldElement>().Where(element => element.PropertyId == ReferencePropertyId.OnlineAddress); if (onlineAddressFieldElements == null || onlineAddressFieldElements.Count() != 1) { return(null); } ElectronicAddressFieldElement onlineAddressFieldElement = onlineAddressFieldElements.FirstOrDefault(); if (onlineAddressFieldElement == null) { return(null); } IEnumerable <LiteralElement> literalElements = componentPart.Elements.OfType <LiteralElement>(); if (literalElements == null || literalElements.Count() != 1) { return(null); } LiteralElement literalElement = literalElements.FirstOrDefault(); if (literalElement == null) { return(null); } //only OnlineAddress? -> No labeling if (hasOnlineAddress && !hasDOI) { literalElement.Text = literalElement.Text + ""; return(null); } //just DOI? -> labeling "DOI: " if (!hasOnlineAddress && hasDOI) { literalElement.Text = literalElement.Text + " DOI: "; return(null); } //OnlineAddress AND DOI? -> DOI is preferable! Remove OnlineAddress element if (hasOnlineAddress && hasDOI) { literalElement.Text = literalElement.Text + " DOI: "; componentPart.Elements.Remove(onlineAddressFieldElement); return(null); } //We were never supposed to come here, but who knows ... return(null); }