internal void CheckRegularExpression(RibbonDefinition obj, string fieldName, string pattern) { string value = (string)obj.GetType().GetField(fieldName).GetValue(obj); if (!pattern.StartsWith("^")) { pattern = "^" + pattern; } if (!pattern.EndsWith("$")) { pattern += "$"; } if (value == null || !new Regex(pattern).Match(value).Success) { throw new ValidationException( String.Format("{0}{1}: Validation failed! {2} has value '{3}', which doesn't match validation pattern '{4}'.", obj.GetType().Name, obj.Id != null ? " (id='" + obj.Id + "')" : String.Empty, fieldName, value == null ? String.Empty : value, pattern ) ); } }
protected override string GenerateCommandLineCommands() { List <string> argv = new List <string>(); argv.Add(RibbonDefinition.GetMetadata("FullPath")); argv.Add(Path.Combine(OutputDirectory.GetMetadata("FullPath"), RibbonDefinition.GetMetadata("FileName") + ".bin")); argv.Add("/res:" + Path.Combine(OutputDirectory.GetMetadata("FullPath"), RibbonDefinition.GetMetadata("FileName") + ".rc")); return(string.Join(" ", argv.Select(x => $"\"{x}\""))); }
private string GetCommandsXML(RibbonDefinition definition) { RibbonCommandRepository.Current.ClearCommands(); RibbonCommandRepository.Current.AddCommands(definition); string commandsXML = String.Empty; foreach (var command in RibbonCommandRepository.Current.GetCommands()) { commandsXML += XmlGenerator.Current.GetCommandUIHandlerXML(command); } RibbonCommandRepository.Current.ClearCommands(); return("<root>" + commandsXML + "</root>"); }
internal void CheckNotNull(RibbonDefinition obj, string fieldName) { object value = obj.GetType().GetField(fieldName).GetValue(obj); if (value == null) { throw new ValidationException( String.Format("{0}{1}: Validation failed! {2} is required.", obj.GetType().Name, obj.Id != null ? " (id='" + obj.Id + "')" : String.Empty, fieldName ) ); } }
internal void CheckIntRange(RibbonDefinition obj, string fieldName, int minimum, int maximum) { int value = (int)obj.GetType().GetField(fieldName).GetValue(obj); if (value < minimum || value > maximum) { throw new ValidationException( String.Format("{0}{1}: Validation failed! {2} has value {3}, which is outside of allowed range [{4}..{5}].", obj.GetType().Name, obj.Id != null ? " (id='" + obj.Id + "')" : String.Empty, fieldName, value, minimum, maximum ) ); } }
internal void CheckArrayHasElements(RibbonDefinition obj, string fieldName) { IEnumerable <RibbonDefinition> value; if (obj.GetType().GetMember(fieldName).First().MemberType == MemberTypes.Property) { value = (IEnumerable <RibbonDefinition>)obj.GetType().GetProperty(fieldName).GetValue(obj, null); } else { value = (IEnumerable <RibbonDefinition>)obj.GetType().GetField(fieldName).GetValue(obj); } if (value == null || value.Count() == 0) { throw new ValidationException( String.Format("{0}{1}: Validation failed! {2} is required to have at least one element.", obj.GetType().Name, obj.Id != null ? " (id='" + obj.Id + "')" : String.Empty, fieldName ) ); } }
public void AddCommands(RibbonDefinition definition) { IEnumerable <ControlDefinition> controls; if (definition is ContextualGroupDefinition) { controls = (definition as ContextualGroupDefinition).Tabs.SelectMany(t => t.Groups).SelectMany(g => g.Controls).ToArray(); } else if (definition is TabDefinition) { controls = (definition as TabDefinition).Groups.SelectMany(g => g.Controls).ToArray(); } else if (definition is GroupDefinition) { controls = (definition as GroupDefinition).Controls.ToArray(); } else if (definition is ControlDefinition) { controls = new ControlDefinition[] { definition as ControlDefinition } } ; else { throw new ArgumentException(); } // MRUSplitButtonDefinition: Command="{Id}MenuCommand" commands.AddRange( controls .WithDescendants(c => c is IContainer ? (c as IContainer).Controls : null) .OfType <MRUSplitButtonDefinition>() .Select <MRUSplitButtonDefinition, FluentRibbonCommand>(c => new FluentRibbonCommand( c.FullId + "MenuCommand", "handleCommand(properties['CommandValueId']);", "true" ) ).ToArray() ); // Buttons of all types, including Button, SplitButton, ToggleButton commands.AddRange( controls .WithDescendants(c => c is IContainer ? (c as IContainer).Controls : null) .OfType <ButtonBaseDefinition>() .Select <ButtonBaseDefinition, FluentRibbonCommand>(b => new FluentRibbonCommand(b.FullId + "Command", b.CommandJavaScript, b.CommandEnableJavaScript)).ToArray()); // Initializable controls var initializationScript = "var initialValue = function() { {IVScript} }; var v = initialValue(); if (v != null) { properties['On'] = true; properties['Value'] = v; }"; var buttonInitializationScript = "var initialValue = function() { {IVScript} }; var v = initialValue(); if (v != null) { properties['On'] = v; properties['Value'] = v; }"; commands.AddRange( controls .WithDescendants(c => c is IContainer ? (c as IContainer).Controls : null) .Where(c => c is IInitializable) .SelectMany(c => c is ButtonBaseDefinition ? new FluentRibbonCommand[] { new FluentRibbonCommand(c.FullId + "QueryCommand", buttonInitializationScript.Replace("{IVScript}", (c as IInitializable).InitialValueJavaScript), "true") } : new FluentRibbonCommand[] { new FluentRibbonCommand(c.FullId + "Command", String.Empty, "true"), new FluentRibbonCommand(c.FullId + "QueryCommand", initializationScript.Replace("{IVScript}", (c as IInitializable).InitialValueJavaScript), "true") }).ToArray()); }