예제 #1
0
        /// <summary>
        /// Registers the specified component.
        /// </summary>
        /// <param name="component">The component.</param>
        public void Register(MonoBehaviour component)
        {
            if (component == null || component.Equals(null))
            {
                return;
            }

            var id = component.GetInstanceID();

            if (!_components.ContainsKey(id))
            {
                var type = component.GetType();
#if NETFX_CORE
                var aca = type.GetTypeInfo().GetCustomAttribute <ApexComponentAttribute>();
#else
                var aca = Attribute.GetCustomAttribute(type, typeof(ApexComponentAttribute)) as ApexComponentAttribute;
#endif
                if (aca == null)
                {
                    return;
                }

                if (_firstTime)
                {
                    component.hideFlags = HideFlags.HideInInspector;
                }

                var cinfo = new ComponentInfo
                {
                    component = component,
                    id        = id,
                    name      = type.Name.Replace("Component", string.Empty).ExpandFromPascal(),
                    isVisible = component.hideFlags != HideFlags.HideInInspector
                };

                _components.Add(id, cinfo);

                ComponentCategory cat;
                if (!_categories.TryGetValue(aca.category, out cat))
                {
                    cat = new ComponentCategory {
                        name = aca.category
                    };
                    _categories.Add(aca.category, cat);
                }

                cat.Add(cinfo);
                cinfo.category = cat;

                if (_initComplete)
                {
                    cat.Sort(new FunctionComparer <ComponentInfo>((a, b) => a.name.CompareTo(b.name)));
                    cat.isOpen = true;
                }
            }
        }
예제 #2
0
        private string GenerateComponentTreeCode(IEnumerable <PluginDocumentationPage> componentDocumentationPages, string lang)
        {
            var stringBuilder = new StringBuilder();

            var query = from pages in componentDocumentationPages
                        orderby pages.Category
                        select pages;

            ComponentCategory actualCategory = ComponentCategory.Undefined;

            foreach (var page in query)
            {
                var linkedLang = page.Localizations.ContainsKey(lang) ? lang : "en";
                var pp         = (LocalizedComponentDocumentationPage)page.Localizations[linkedLang];

                if (actualCategory != page.Category)
                {
                    actualCategory = page.Category;
                    stringBuilder.AppendLine(@"\chapter{" + Helper.EscapeLaTeX(GetComponentCategory(page.Category)) + "}");
                }

                stringBuilder.AppendLine(@"\section{" + Helper.EscapeLaTeX(pp.Name) + "}");
                stringBuilder.AppendLine(@"{\bf Tooltip:} " + Helper.EscapeLaTeX(pp.ToolTip) + @"\\");

                StringBuilder text = new StringBuilder();
                text.AppendLine(@"\subsection*{" + Properties.Resources.ComponentTemplate_Introduction + "}\n" + _objectConverter.Convert(pp.Introduction, page));
                text.AppendLine(@"\subsection*{" + Properties.Resources.ComponentTemplate_Usage + "}\n" + _objectConverter.Convert(pp.Manual, page));
                text.AppendLine(@"\subsection*{" + Properties.Resources.ComponentTemplate_Presentation + "}\n" + _objectConverter.Convert(pp.Presentation, page));

                var connectors = pp.GetType().GetProperty("Connectors").GetValue(pp, null);
                text.AppendLine(@"\subsection*{" + Properties.Resources.ComponentTemplate_Connections + "}\n" + _objectConverter.Convert(connectors, page));

                var settings = pp.GetType().GetProperty("Settings").GetValue(pp, null);
                text.AppendLine(@"\subsection*{" + Properties.Resources.ComponentTemplate_Settings + "}\n" + _objectConverter.Convert(settings, page));

                //stringBuilder.AppendLine("</table>");
                //anchorBuilder.Append("</p>");
                string s = text.ToString();
                //s = Regex.Replace(s, @"\\\\[\r\n\t ]+\\\\", '\\' + "\n" + '\\');
                s = Regex.Replace(s, "\r\n", "\n");
                s = Regex.Replace(s, "\r", "\n");
                //s = Regex.Replace(s, "\n", " ");
                s = Regex.Replace(s, "\n{2,}", "\n\n");
                //s = Regex.Replace(s, "\\\\\\\\", "\n");
                s = Regex.Replace(s, "[\t ]+\n", "\n");
                //s = Regex.Replace(s, "\\\\\\\\", "\n");
                //s = Regex.Replace(s, @"\n[\t ]+", "\n");
                //s = Regex.Replace(s, "\n{2,}", "\n");
                //s = Regex.Replace(s, @"\n[\t ]+\\\\", "\n" + @"\\");
                //s = Regex.Replace(s, @"\n+\\\\", @" \\");

                stringBuilder.AppendLine(s);
            }

            return(stringBuilder.ToString());
        }
예제 #3
0
        private void AddGroup(ComponentCategory groupCategory, IEnumerable <IComponentFactory> factories)
        {
            var groupItem = new ToolStripMenuItem(groupCategory.ToString());

            foreach (var factory in factories)
            {
                AddComponentFactory(factory, groupItem);
            }
            menuAddComponents.Items.Add(groupItem);
        }
예제 #4
0
        void ShowComponentCategories()
        {
            EditorGUI.BeginChangeCheck();

            var style = new GUIStyle("popup")
            {
                alignment = TextAnchor.MiddleCenter,
                fontStyle = FontStyle.Bold,
            };

            for (int i = 0; i < categories.Length; i++)
            {
                var category = categories[i];

                if (category.Components.Count == 0)
                {
                    continue;
                }

                if (i > 0)
                {
                    GUILayout.Space(5f);
                }

                BeginBox(CustomEditorStyles.ColoredBox(new Color(0.5f, 0.5f, 0.5f, 0.25f), 0));

                currentCategory = categories[i];

                ArrayFoldout(currentCategory.DummyValue,
                             currentCategory.Name.ToGUIContent(),
                             disableOnPlay: false,
                             foldoutDrawer: ShowComponentCategoryFoldout,
                             elementDrawer: ShowComponent,
                             onPreElementDraw: OnPreComponent,
                             onPostElementDraw: OnPostComponent,
                             deleteCallback: DeleteComponent,
                             reorderCallback: ReorderComponent);

                GUILayout.Space(4f);
                EndBox();
            }

            if (entity.GetAllComponents().Count > 0)
            {
                Separator();
            }

            int index = EditorGUILayout.Popup(0, AddOptions, style);

            if (EditorGUI.EndChangeCheck() && index > 0)
            {
                AddComponent(AddTypes[index]);
            }
        }
예제 #5
0
        void InitializeCategories()
        {
            // Fixes the "Generating diff of this object for undo because the type tree changed." bug.
            if (EditorApplication.isPlaying != EditorApplication.isPlayingOrWillChangePlaymode)
            {
                return;
            }

            foreach (var pair in categoryDict)
            {
                pair.Value.RemoveAllComponents();
            }

            var components = entity.GetAllComponents();

            for (int i = 0; i < components.Count; i++)
            {
                var component = components[i];

                if (component.GetType().IsDefined(typeof(ComponentCategoryAttribute), true))
                {
                    var categoryAttribute = (ComponentCategoryAttribute)component.GetType().GetCustomAttributes(typeof(ComponentCategoryAttribute), true)[0];
                    ComponentCategory category;

                    if (!categoryDict.TryGetValue(categoryAttribute.Category, out category))
                    {
                        var categoryName = categoryAttribute.Category.Split('/')[0];
                        category = new ComponentCategory(categoryName, i);
                        categoryDict[categoryName] = category;
                    }

                    category.AddComponent(component, i);
                }
                else
                {
                    ComponentCategory category;
                    const string      categoryName = "\0Uncategorized";

                    if (!categoryDict.TryGetValue(categoryName, out category))
                    {
                        category = new ComponentCategory(categoryName, int.MinValue);
                        categoryDict[categoryName] = category;
                    }

                    category.AddComponent(component, i);
                }
            }

            string[] keys;
            categoryDict.GetOrderedKeysValues(out keys, out categories);

            Array.Sort(keys, categories);
        }
예제 #6
0
        public IActionResult Index()
        {
            var                      item = dataContext.PCComponents.ToList();
            List <Product>           pc   = new List <Product>();
            List <ComponentCategory> componentCategories = new List <ComponentCategory>();

            foreach (var item2 in item)
            {
                ComponentCategory componentCategory = dataContext.ComponentCategories.FirstOrDefault(p => p.ComponentCategoryId == item2.ComponentCategoryId);
                Product           product           = dataContext.Products.FirstOrDefault(p => p.ProductId == item2.ProductId);
                pc.Add(product);
            }
            return(View(item));
        }
예제 #7
0
        public ActionResult CategoryEdit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ComponentCategory category = db.ComponentCategory.Find(id);

            if (category == null)
            {
                return(HttpNotFound());
            }

            return(PartialView("_CategoryEdit", category));
        }
예제 #8
0
        private static string GetComponentCategory(ComponentCategory category)
        {
            switch (category)
            {
            case ComponentCategory.CiphersClassic:
                return(Properties.Resources.Category_Classic_Ciphers);

            case ComponentCategory.CiphersModernSymmetric:
                return(Properties.Resources.Category_CiphersModernSymmetric);

            case ComponentCategory.CiphersModernAsymmetric:
                return(Properties.Resources.Category_CiphersModernAsymmetric);

            case ComponentCategory.Steganography:
                return(Properties.Resources.Category_Steganography);

            case ComponentCategory.HashFunctions:
                return(Properties.Resources.Category_HashFunctions);

            case ComponentCategory.CryptanalysisSpecific:
                return(Properties.Resources.Category_CryptanalysisSpecific);

            case ComponentCategory.CryptanalysisGeneric:
                return(Properties.Resources.Category_CryptanalysisGeneric);

            case ComponentCategory.Protocols:
                return(Properties.Resources.Category_Protocols);

            case ComponentCategory.ToolsBoolean:
                return(Properties.Resources.Category_ToolsBoolean);

            case ComponentCategory.ToolsDataflow:
                return(Properties.Resources.Category_ToolsDataflow);

            case ComponentCategory.ToolsDataInputOutput:
                return(Properties.Resources.Category_ToolsDataInputOutput);

            case ComponentCategory.ToolsMisc:
                return(Properties.Resources.Category_ToolsMisc);

            case ComponentCategory.ToolsP2P:
                return(Properties.Resources.Category_ToolsP2P);

            default:
                return(Properties.Resources.Category_Unknown);
            }
        }
예제 #9
0
        public ActionResult CategoryDelete(int id)
        {
            ComponentCategory category = db.ComponentCategory.Find(id);

            try
            {
                db.ComponentCategory.Remove(category);
                db.SaveChanges();
                TempData["ResultMessage"] = "El Registro se Borró correctamente";
                TempData["ResultType"]    = "S";
            }
            catch (Exception _ex)
            {
                Debug.WriteLine(_ex.Message);
                TempData["ResultMessage"] = "El Registro no se pudo borrar. " + _ex.Message;
                TempData["ResultType"]    = "E";
            }
            return(RedirectToAction("CategoryIndex"));
        }
예제 #10
0
        public ActionResult CategoryCreate([Bind(Include = "Name,Description")] ComponentCategory category)
        {
            category.CreationDate = DateTime.Now.Date;
            category.CreatedBy    = User.Identity.GetUserId();
            category.rowguid      = Guid.NewGuid();

            if (ModelState.IsValid)
            {
                db.ComponentCategory.Add(category);
                var item = from a in db.ComponentCategory
                           where a.Name == category.Name
                           select a;
                if (item.Count() == 0)
                {
                    try
                    {
                        db.SaveChanges();
                        TempData["ResultMessage"] = "Data saved correctly";
                        TempData["ResultType"]    = "S";
                    }
                    catch (Exception ex)
                    {
                        TempData["ResultMessage"] = "Fail while saving data. " + ex.Message;
                        TempData["ResultType"]    = "E";
                    }
                }
                else
                {
                    TempData["ResultMessage"] = "Color " + category.Name + " already exist in the system";
                    TempData["ResultType"]    = "E";
                }
            }
            else
            {
                TempData["ResultMessage"] = "Data are not valid";
                TempData["ResultType"]    = "W";
            }
            return(RedirectToAction("CategoryIndex"));
        }
예제 #11
0
 public ActionResult CategoryEdit([Bind(Include = "ComponentCategoryID,Name,Description,ModifiedDate,CreationDate,rowguid,CreatedBy")] ComponentCategory category)
 {
     category.ModifiedDate = DateTime.Now.Date;
     category.ModifiedBy   = User.Identity.GetUserId();
     if (ModelState.IsValid)
     {
         db.Entry(category).State = EntityState.Modified;
         var item = from a in db.Colors
                    where a.Name == category.Name
                    select a;
         if (item.Count() == 0)
         {
             try
             {
                 db.SaveChanges();
                 TempData["ResultMessage"] = "El Registro se actualizó correctamente";
                 TempData["ResultType"]    = "S";
                 return(RedirectToAction("CategoryIndex"));
             }
             catch (Exception ex)
             {
                 TempData["ResultMessage"] = "El Registro no se pudo actualizar. " + ex.Message;
                 TempData["ResultType"]    = "E";
                 return(RedirectToAction("CategoryIndex"));
                 //throw;
             }
         }
         else
         {
             TempData["ResultMessage"] = "El Registro no se pudo actualizar. Ya existe un registro con ese nombre ";
             TempData["ResultType"]    = "E";
             return(RedirectToAction("CategoryIndex"));
         }
     }
     return(RedirectToAction("CategoryIndex"));
 }
예제 #12
0
 public ComponentCategoryAttribute(ComponentCategory category)
 {
     this.Category = category;
 }
예제 #13
0
 public ErrorData(ComponentCategory category, IComponentOld component, ErrorTypes errorType, Type missingComponentType) : this(category, component, errorType)
 {
     MissingComponentType = missingComponentType;
 }
예제 #14
0
 ErrorData(ComponentCategory category, IComponentOld component, ErrorTypes errorType)
 {
     Category  = category;
     Component = component;
     ErrorType = errorType;
 }
예제 #15
0
        /// <summary>
        /// Initializes this instance.
        /// </summary>
        /// <returns></returns>
        public bool Init(IEnumerable <ComponentCandidate> candidates)
        {
            Cleanup();

            bool updated = false;
            int  idx     = 0;

            foreach (var cc in candidates)
            {
                var           id = cc.component.GetInstanceID();
                ComponentInfo cinfo;
                bool          alreadyRegistered = _components.TryGetValue(id, out cinfo);

                //Since hideflags are reset when applying prefab changes, we reapply them here
                if ((cc.component.hideFlags & HideFlags.HideInInspector) == 0 && (_hiddenComponents & (1 << idx)) > 0)
                {
                    cc.component.hideFlags |= HideFlags.HideInInspector;
                    updated = true;
                }

                //If already registered we still need to ensure hideflags are set correctly, again due to prefab stuff
                if (alreadyRegistered)
                {
                    idx++;
                    cinfo.isVisible = (cc.component.hideFlags & HideFlags.HideInInspector) == 0;
                    continue;
                }

                cinfo = new ComponentInfo
                {
                    component = cc.component,
                    id        = id,
                    idx       = idx++,
                    name      = cc.component.GetType().Name.Replace("Component", string.Empty).ExpandFromPascal(),
                    isVisible = (cc.component.hideFlags & HideFlags.HideInInspector) == 0
                };

                _components.Add(id, cinfo);

                ComponentCategory cat;
                if (!_categories.TryGetValue(cc.categoryName, out cat))
                {
                    cat = new ComponentCategory {
                        name = cc.categoryName
                    };
                    _categories.Add(cc.categoryName, cat);
                }

                cat.Add(cinfo);
                cinfo.category = cat;
            }

            var comparer = new FunctionComparer <ComponentInfo>((a, b) => a.name.CompareTo(b.name));

            foreach (var cat in _categories.Values)
            {
                cat.Sort(comparer);
            }

            if (_firstTime)
            {
                ToggleAll();
                _firstTime = false;
                return(true);
            }

            return(updated);
        }
예제 #16
0
 private void AddGroup(ComponentCategory groupCategory, IEnumerable<IComponentFactory> factories)
 {
     var groupItem = new ToolStripMenuItem(groupCategory.ToString());
     foreach (var factory in factories)
     {
         AddComponentFactory(factory, groupItem);
     }
     menuAddComponents.Items.Add(groupItem);
 }
예제 #17
0
        void InitializeCategories()
        {
            // Fixes the "Generating diff of this object for undo because the type tree changed." bug.
            if (EditorApplication.isPlaying != EditorApplication.isPlayingOrWillChangePlaymode)
                return;

            foreach (var pair in categoryDict)
                pair.Value.RemoveAllComponents();

            var components = entity.GetAllComponents();

            for (int i = 0; i < components.Count; i++)
            {
                var component = components[i];

                if (component.GetType().IsDefined(typeof(ComponentCategoryAttribute), true))
                {
                    var categoryAttribute = (ComponentCategoryAttribute)component.GetType().GetCustomAttributes(typeof(ComponentCategoryAttribute), true)[0];
                    ComponentCategory category;

                    if (!categoryDict.TryGetValue(categoryAttribute.Category, out category))
                    {
                        var categoryName = categoryAttribute.Category.Split('/')[0];
                        category = new ComponentCategory(categoryName, i);
                        categoryDict[categoryName] = category;
                    }

                    category.AddComponent(component, i);
                }
                else
                {
                    ComponentCategory category;
                    const string categoryName = "\0Uncategorized";

                    if (!categoryDict.TryGetValue(categoryName, out category))
                    {
                        category = new ComponentCategory(categoryName, int.MinValue);
                        categoryDict[categoryName] = category;
                    }

                    category.AddComponent(component, i);
                }
            }

            string[] keys;
            categoryDict.GetOrderedKeysValues(out keys, out categories);

            Array.Sort(keys, categories);
        }
예제 #18
0
        private static string GenerateComponentTreeCode(IEnumerable <PluginDocumentationPage> componentDocumentationPages, string lang)
        {
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine("<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">");

            var anchorBuilder = new StringBuilder();

            anchorBuilder.Append("<p>");

            var query = from pages in componentDocumentationPages
                        orderby pages.Category
                        select pages;

            ComponentCategory actualCategory = ComponentCategory.Undefined;

            foreach (var page in query)
            {
                var linkedLang = page.Localizations.ContainsKey(lang) ? lang : "en";
                var pp         = (LocalizedComponentDocumentationPage)page.Localizations[linkedLang];


                if (actualCategory != page.Category)
                {
                    actualCategory = page.Category;
                    string categoryName = null;
                    switch (page.Category)
                    {
                    case ComponentCategory.CiphersClassic:
                        categoryName = Properties.Resources.Category_Classic_Ciphers;
                        break;

                    case ComponentCategory.CiphersModernSymmetric:
                        categoryName = Properties.Resources.Category_CiphersModernSymmetric;
                        break;

                    case ComponentCategory.CiphersModernAsymmetric:
                        categoryName = Properties.Resources.Category_CiphersModernAsymmetric;
                        break;

                    case ComponentCategory.Steganography:
                        categoryName = Properties.Resources.Category_Steganography;
                        break;

                    case ComponentCategory.HashFunctions:
                        categoryName = Properties.Resources.Category_HashFunctions;
                        break;

                    case ComponentCategory.CryptanalysisSpecific:
                        categoryName = Properties.Resources.Category_CryptanalysisSpecific;
                        break;

                    case ComponentCategory.CryptanalysisGeneric:
                        categoryName = Properties.Resources.Category_CryptanalysisGeneric;
                        break;

                    case ComponentCategory.Protocols:
                        categoryName = Properties.Resources.Category_Protocols;
                        break;

                    case ComponentCategory.ToolsBoolean:
                        categoryName = Properties.Resources.Category_ToolsBoolean;
                        break;

                    case ComponentCategory.ToolsDataflow:
                        categoryName = Properties.Resources.Category_ToolsDataflow;
                        break;

                    case ComponentCategory.ToolsDataInputOutput:
                        categoryName = Properties.Resources.Category_ToolsDataInputOutput;
                        break;

                    case ComponentCategory.ToolsMisc:
                        categoryName = Properties.Resources.Category_ToolsMisc;
                        break;

                    case ComponentCategory.ToolsP2P:
                        categoryName = Properties.Resources.Category_ToolsP2P;
                        break;

                    default:
                        categoryName = Properties.Resources.Category_Unknown;
                        break;
                    }
                    stringBuilder.AppendLine(string.Format("<tr><td><h2 id=\"{0}\">{0}</h1></td><td></td></tr>", categoryName));
                    anchorBuilder.AppendLine(string.Format("<a href=\"#{0}\"><b>{0}</b><a>&nbsp;", categoryName));
                }
                stringBuilder.AppendLine(string.Format("<tr><td><a href=\"{0}\">{1}</a></td><td>{2}</td></tr>",
                                                       OnlineHelp.GetPluginDocFilename(pp.PluginType, linkedLang), pp.Name, pp.ToolTip));
            }
            stringBuilder.AppendLine("</table>");
            anchorBuilder.Append("</p>");
            anchorBuilder.Append(stringBuilder);
            return(anchorBuilder.ToString());
        }
예제 #19
0
 ErrorData(ComponentCategory category, IComponentOld component, ErrorTypes errorType)
 {
     Category = category;
     Component = component;
     ErrorType = errorType;
 }
예제 #20
0
 public ErrorData(ComponentCategory category, IComponentOld component, ErrorTypes errorType, Type missingComponentType)
     : this(category, component, errorType)
 {
     MissingComponentType = missingComponentType;
 }
예제 #21
0
        void ShowComponentCategories()
        {
            EditorGUI.BeginChangeCheck();

            var style = new GUIStyle("popup")
            {
                alignment = TextAnchor.MiddleCenter,
                fontStyle = FontStyle.Bold,
            };

            for (int i = 0; i < categories.Length; i++)
            {
                var category = categories[i];

                if (category.Components.Count == 0)
                    continue;

                if (i > 0)
                    GUILayout.Space(5f);

                BeginBox(CustomEditorStyles.ColoredBox(new Color(0.5f, 0.5f, 0.5f, 0.25f), 0));

                currentCategory = categories[i];

                ArrayFoldout(currentCategory.DummyValue,
                    currentCategory.Name.ToGUIContent(),
                    disableOnPlay: false,
                    foldoutDrawer: ShowComponentCategoryFoldout,
                    elementDrawer: ShowComponent,
                    onPreElementDraw: OnPreComponent,
                    onPostElementDraw: OnPostComponent,
                    deleteCallback: DeleteComponent,
                    reorderCallback: ReorderComponent);

                GUILayout.Space(4f);
                EndBox();
            }

            if (entity.GetAllComponents().Count > 0)
                Separator();

            int index = EditorGUILayout.Popup(0, AddOptions, style);
            if (EditorGUI.EndChangeCheck() && index > 0)
                AddComponent(AddTypes[index]);
        }