public static List <string> GetNames(IVisio.Shape shape) { if (shape == null) { throw new ArgumentNullException(nameof(shape)); } int custom_prop_row_count = CustomPropertyHelper.GetCount(shape); if (custom_prop_row_count < 1) { return(new List <string>(0)); } var prop_names = new List <string>(custom_prop_row_count); var prop_section = shape.Section[(short)IVisio.VisSectionIndices.visSectionProp]; var query_names = prop_section.ToEnumerable().Select(row => row.NameU); prop_names.AddRange(query_names); if (custom_prop_row_count != prop_names.Count) { throw new InternalAssertionException("Unexpected number of property names"); } return(prop_names); }
internal static void CheckValidCustomPropertyName(string name) { string errmsg; if (!CustomPropertyHelper.IsValidName(name, out errmsg)) { string msg = string.Format("Invalid Property Name: \"{0}\". {1}", name, errmsg); throw new System.ArgumentException(msg); } }
internal static void CheckValidCustomPropertyName(string name) { string errmsg; if (!CustomPropertyHelper.IsValidName(name, out errmsg)) { string msg = $"Invalid Property Name: \"{name}\". {errmsg}"; throw new AutomationException(msg); } }
/// <summary> /// Gets all the custom properties defined on a shape /// </summary> /// <remarks> /// If there are no custom properties then null will be returned</remarks> /// <param name="shape"></param> /// <returns>A list of custom properties</returns> public static CustomPropertyDictionary Get(IVisio.Shape shape) { var prop_names = CustomPropertyHelper.GetNames(shape); var dic = new CustomPropertyDictionary(prop_names.Count); var cells = CustomPropertyCells.GetCells(shape); for (int prop_index = 0; prop_index < prop_names.Count(); prop_index++) { string prop_name = prop_names[prop_index]; dic[prop_name] = cells[prop_index]; } return(dic); }
public static List <VisioAutomation.Shapes.CustomProperties.CustomPropertyDictionary> Get(IVisio.Page page, IList <IVisio.Shape> shapes) { if (page == null) { throw new ArgumentNullException(nameof(page)); } if (shapes == null) { throw new ArgumentNullException(nameof(shapes)); } var shapeids = shapes.Select(s => s.ID).ToList(); var customprops_dic = new List <VisioAutomation.Shapes.CustomProperties.CustomPropertyDictionary>(shapeids.Count); var customprops_per_shape = CustomPropertyCells.GetCells(page, shapeids); if (customprops_per_shape.Count != shapeids.Count) { throw new InternalAssertionException(); } for (int shape_index = 0; shape_index < shapeids.Count; shape_index++) { var shape = shapes[shape_index]; var customprops_for_shape = customprops_per_shape[shape_index]; var prop_names = CustomPropertyHelper.GetNames(shape); if (customprops_for_shape.Count != prop_names.Count) { throw new InternalAssertionException(); } var dic = new VisioAutomation.Shapes.CustomProperties.CustomPropertyDictionary(prop_names.Count); for (int prop_index = 0; prop_index < prop_names.Count(); prop_index++) { string prop_name = prop_names[prop_index]; dic[prop_name] = customprops_for_shape[prop_index]; } customprops_dic.Add(dic); } return(customprops_dic); }
public static void Delete(IVisio.Shape shape, string name) { if (shape == null) { throw new ArgumentNullException(nameof(shape)); } if (name == null) { throw new ArgumentNullException(nameof(name)); } CustomPropertyHelper.CheckValidCustomPropertyName(name); string full_prop_name = CustomPropertyHelper.GetRowName(name); short row = shape.CellsU[full_prop_name].Row; shape.DeleteRow((short)IVisio.VisSectionIndices.visSectionProp, row); }
public static bool Contains(IVisio.Shape shape, string name) { if (shape == null) { throw new ArgumentNullException(nameof(shape)); } if (name == null) { throw new ArgumentNullException(nameof(name)); } CustomPropertyHelper.CheckValidCustomPropertyName(name); string full_prop_name = CustomPropertyHelper.GetRowName(name); var exists = (short)IVisio.VisExistsFlags.visExistsAnywhere; return 0 != (shape.CellExistsU[full_prop_name, exists]); }
public static void Set(IVisio.Shape shape, string name, string val) { if (shape == null) { throw new ArgumentNullException(nameof(shape)); } CustomPropertyHelper.CheckValidCustomPropertyName(name); if (val == null) { throw new ArgumentNullException(nameof(val)); } // create a new property var cp = new CustomPropertyCells(); cp.Value = val; cp.Type = 0; // 0 = string CustomPropertyHelper.Set(shape, name, cp); }
public static void Set( IVisio.Shape shape, string name, CustomPropertyCells cp) { if (shape == null) { throw new ArgumentNullException(nameof(shape)); } CustomPropertyHelper.CheckValidCustomPropertyName(name); if (CustomPropertyHelper.Contains(shape, name)) { string full_prop_name = CustomPropertyHelper.GetRowName(name); var cell_propname = shape.CellsU[full_prop_name]; if (cell_propname == null) { string msg = string.Format("Could not retrieve cell for custom property \"{0}\"", full_prop_name); throw new InternalAssertionException(msg); } var writer = new VisioAutomation.ShapeSheet.Writers.SrcWriter(); cp.SetFormulas(writer, cell_propname.Row); writer.Commit(shape); return; } short row = shape.AddNamedRow( (short)IVisio.VisSectionIndices.visSectionProp, name, (short)IVisio.VisRowIndices.visRowProp); CustomPropertyHelper.Set(shape, row, cp); }
public static void Set( IVisio.Shape shape, string name, CustomPropertyCells cp) { if (shape == null) { throw new ArgumentNullException(nameof(shape)); } CustomPropertyHelper.CheckValidCustomPropertyName(name); if (CustomPropertyHelper.Contains(shape, name)) { string full_prop_name = CustomPropertyHelper.GetRowName(name); var cell_propname = shape.CellsU[full_prop_name]; if (cell_propname == null) { string msg = $"Could not retrieve cell for custom property \"{full_prop_name}\""; throw new AutomationException(msg); } var update = new ShapeSheet.Update(); update.SetFormulas(cp, cell_propname.Row); update.Execute(shape); return; } short row = shape.AddNamedRow( (short)IVisio.VisSectionIndices.visSectionProp, name, (short)IVisio.VisRowIndices.visRowProp); CustomPropertyHelper.Set(shape, row, cp); }
public static bool IsValidName(string name) { string errmsg; return(CustomPropertyHelper.IsValidName(name, out errmsg)); }