Example #1
0
        private string LayoutShapes()
        {
            string result = String.Empty;

            try
            {
                this.Cursor = Cursors.WaitCursor;
                document.BeginInit();

                NNodeList      nodes         = document.ActiveLayer.Children(NFilters.Shape2D);
                NLayoutContext layoutContext = new NDrawingLayoutContext(document);
                NLayout        layout        = (NLayout)cbLayout.SelectedItem;
                layout.Layout(nodes, layoutContext);
                document.SizeToContent();

                document.EndInit();
                result = layout.PerformanceInfo;
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// Configures the layout using the property/value pairs in the specified hash table.
        /// </summary>
        /// <param name="layout"></param>
        /// <param name="args"></param>
        public static void ConfigureLayout(NLayout layout, Hashtable args)
        {
            // Configure the layout
            if (args == null)
            {
                return;
            }

            Type type = layout.GetType();
            IDictionaryEnumerator enumerator = args.GetEnumerator();

            while (enumerator.MoveNext())
            {
                PropertyInfo p = type.GetProperty(enumerator.Key.ToString());
                if (p == null)
                {
                    throw new Exception(string.Format("The property {0} is not defined for the class {1}", enumerator.Key, layout.GetType().Name));
                }

                try
                {
                    object value = enumerator.Value;
                    if (p.PropertyType.Equals(FLOAT_TYPE))
                    {   // The decimal separator problem fix
                        value = ParseFloat(value);
                    }

                    value = p.PropertyType.IsEnum ?
                            Enum.Parse(p.PropertyType, enumerator.Value.ToString()) :
                            Convert.ChangeType(value, p.PropertyType);

                    p.SetValue(layout, value, null);
                }
                catch
                {
                    throw new Exception(string.Format("The value '{0}' is not valid for the {1} property",
                                                      enumerator.Value, enumerator.Key));
                }
            }
        }
Example #3
0
        /// <summary>
        /// Configures the layout using the property/value pairs in the specified dictionary.
        /// </summary>
        /// <param name="layout"></param>
        /// <param name="settings"></param>
        public void ConfigureLayout(NLayout layout, Dictionary <string, string> settings)
        {
            Type layoutType = layout.GetType();

            Dictionary <string, string> .Enumerator iter = settings.GetEnumerator();

            while (iter.MoveNext())
            {
                string name  = iter.Current.Key;
                string value = iter.Current.Value;

                PropertyInfo p = layoutType.GetProperty(name);
                if (p == null)
                {
                    continue;
                }

                try
                {
                    object propertyValue = null;
                    if (p.PropertyType.Equals(FloatType))
                    {
                        propertyValue = ParseFloat(value);
                    }
                    else
                    {
                        propertyValue = p.PropertyType.IsEnum ?
                                        Enum.Parse(p.PropertyType, value) :
                                        Convert.ChangeType(value, p.PropertyType);
                    }

                    p.SetValue(layout, propertyValue, null);
                }
                catch
                {
                    throw new Exception(String.Format("The value '{0}' is not valid for the '{1}' property", value, name));
                }
            }
        }