コード例 #1
0
        private void UpdateExtensionInfo(bool extensionSelected)
        {
            if (!extensionSelected)
            {
                EExtensionLogoPctbx.Image = Resources.Tanji;
            }
            else
            {
                ExtensionBase extension = EExtensionsLstvw.GetItemExtension();
                if (extension == null || extension.UIContext == null)
                {
                    return;
                }

                EExtensionLogoPctbx.Image = extension.Logo ?? Resources.Tanji;

                if (EExtensionLogoPctbx.Size.Width < 64 || EExtensionLogoPctbx.Image.Size.Height < 64)
                {
                    EExtensionLogoPctbx.SizeMode = PictureBoxSizeMode.CenterImage;
                }
                else
                {
                    EExtensionLogoPctbx.SizeMode = PictureBoxSizeMode.Zoom;
                }

                extension.UIContext.BringToFront();
            }

            ExtensionsActiveTxt.Text = string.Format(EXTENSIONS_FORMAT,
                                                     _contractor.ExtensionsRunning.Count, _contractor.Extensions.Count);
        }
コード例 #2
0
        public void InitializeItemExtension()
        {
            ExtensionBase extension = GetItemExtension();

            if (extension == null)
            {
                return;
            }

            ((Contractor)extension.Contractor).Initialize(extension);
        }
コード例 #3
0
        public void Install(ExtensionBase extension)
        {
            if (extension == null)
            {
                return;
            }

            ListViewItem item = FocusAdd(extension.Name,
                                         extension.Author, extension.Version.ToString());

            _items[extension] = item;
            _extensions[item] = extension;
        }
コード例 #4
0
ファイル: Function.cs プロジェクト: Creepsky/Nexus
        public override void Template(TemplateContext context, IGenerationElement concreteElement)
        {
            if (!(concreteElement is FunctionCall functionCall))
            {
                throw new TemplateGenerationException(this, $"Can not create a function from a {concreteElement.GetType().Name}");
            }

            Context = context;

            if (ExtensionBase != null)
            {
                AddThisPointer();
            }

            if (functionCall.Object != null)
            {
                var functionCallExtensionBase = functionCall.Object.GetResultType(context.CallerContext);

                if (ExtensionBase == null)
                {
                    throw new TemplateGenerationException(this, "Generated function has no extension base, " +
                                                          $"but the function call has the extension base {functionCallExtensionBase}");
                }

                ExtensionBase.Template(context, functionCallExtensionBase);
            }
            else if (ExtensionBase != null)
            {
                throw new TemplateGenerationException(this, $"Generated function has the extension base {ExtensionBase}," +
                                                      " but the function call has no extension base");
            }

            if (functionCall.Parameter.Count != Parameter.Count)
            {
                throw new TemplateGenerationException(this, $"Expected {functionCall.Parameter.Count} parameters, got {Parameter.Count}");
            }

            for (var i = 0; i < functionCall.Parameter.Count; ++i)
            {
                Parameter[i].Template(context, functionCall.Parameter[i].GetResultType(context.CallerContext));
            }

            ReturnType.Template(context, null);

            foreach (var i in Body)
            {
                i.Template(context, null);
            }
        }
コード例 #5
0
        protected override void RemoveItem(ListViewItem listViewItem)
        {
            ExtensionBase extension = GetItemExtension();

            if (extension == null)
            {
                return;
            }
            ((Contractor)extension.Contractor).Uninstall(extension);

            _items.Remove(extension);
            _extensions.Remove(listViewItem);

            base.RemoveItem(listViewItem);
        }
コード例 #6
0
ファイル: Function.cs プロジェクト: Creepsky/Nexus
 public override object Clone()
 {
     return(new Function
     {
         Column = Column,
         Line = Line,
         FilePath = FilePath,
         ReturnType = (SimpleType)ReturnType.CloneDeep(),
         ExtensionBase = ExtensionBase?.CloneDeep() as SimpleType,
         Parameter = Parameter.Select(i => (Variable)i.CloneDeep()).ToList(),
         Body = Body.Select(i => (IStatement)i.CloneDeep()).ToList(),
         TemplateList = TemplateList?.CloneDeep() as TemplateList,
         Name = Name,
         Static = Static
     });
 }
コード例 #7
0
ファイル: Function.cs プロジェクト: Creepsky/Nexus
        public override string ToString()
        {
            var name = ReturnType.ToString() + ' ';

            if (ExtensionBase != null)
            {
                name += ExtensionBase.ToString() + '.';
            }

            name += Name;

            if (TemplateList != null)
            {
                name += TemplateList;
            }

            name += $"({string.Join(',', Parameter.Select(i => i.Type))})";

            return(name);
        }
コード例 #8
0
    private void CreateInstance(ExtensionField field)
    {
        if (field.targetType == null)
        {
            UnityEngine.Debug.Log($"[Area::{this.name}]: Unable to load extesion type of \"{field.targetType}\".");
            return;
        }

        ExtensionBase extensionInstance = ExtensionSingletons
                                          .Where(t => t.GetType().IsAssignableFrom(field.targetType))
                                          .FirstOrDefault();

        if (extensionInstance == null)
        {
            extensionInstance = (ExtensionBase)System.Activator.CreateInstance(field.targetType);
            ExtensionSingletons.Add(extensionInstance);
        }

        System.Threading.CancellationToken token = WorkerTokenSource.Token;
        workers[field.targetType] = extensionInstance.GetWorker(token, this);
    }
コード例 #9
0
ファイル: Function.cs プロジェクト: Creepsky/Nexus
        private void PrintFunctionHeader(PrintType type, Printer printer)
        {
            ReturnType.Print(type, printer);
            printer.Write(" ");
            if (Static)
            {
                ExtensionBase.Print(PrintType.WithoutModifiers, printer);
                printer.Write("_");
            }
            printer.Write($"{Name}(");

            if (!Static && ExtensionBase != null)
            {
                var thisVariable = new Variable
                {
                    Line   = Line,
                    Column = Column,
                    Name   = "__this",
                    Type   = ExtensionBase
                };

                thisVariable.Print(type, printer);

                if (Parameter.Any())
                {
                    printer.Write(", ");
                }
            }

            foreach (var i in Parameter)
            {
                i.Print(type, printer);
                if (i != Parameter.Last())
                {
                    printer.Write(", ");
                }
            }

            printer.Write(")");
        }
コード例 #10
0
        ///////////////////////////////////////////////////////////////////////////////////////////
        private static Option <ExtensionBase> LoadExtension(string path)
        {
            if (!File.Exists(path))
            {
                return(Option.None);
            }

            Assembly assembly = Assembly.LoadFrom(path);
            string   typeName = Path.GetFileName(path);

            typeName = typeName.Substring(0, typeName.Length - ExtensionExtension.Length) + "." + ExtensionClassName;
            Type type = assembly.GetType(typeName);

            if (type == null)
            {
                return(Option.None);
            }

            ExtensionBase extension = (ExtensionBase)Activator.CreateInstance(type);

            return(((ExtensionBase)Activator.CreateInstance(type)).AsOption());
        }
コード例 #11
0
 public HueUIControl(ExtensionBase ext)
 {
     InitializeComponent();
 }
コード例 #12
0
ファイル: SKoreForm.cs プロジェクト: scottstamp/Sulakore
 public SKoreForm(ExtensionBase extension)
     : this()
 {
     Extension = extension;
 }