Ejemplo n.º 1
0
        public instructor_list()
        {
            InitializeComponent();
            default_auth = new AuthSetting[] {
                new AuthSetting(Authority.InstructorManage)
            };
            template = new ListTemplate();

            var cargs = new CreateArgs("api/auth/instructors/", User.Api, "创建辅导员用户", Margin: new Thickness(0, 10, 0, 10));

            cargs.items.Add(new CreateArgs.Item("username", "工号", "text"));
            cargs.items.Add(new CreateArgs.Item("password", "密码", "text"));
            cargs.items.Add(new CreateArgs.Item("name", "姓名", "text"));
            cargs.items.Add(new CreateArgs.Item("gender", "性别", "choice", data: gender_choices.ToArray()));
            var args = new ListArgs("api/auth/instructors/", User.Api, Title, Searchable: true, Createable: true, Createargs: cargs);

            args.columns.Add(new ListArgs.Column("id", "工号", ordering: "id",
                                                 hyperlink: ListArgs.autohyperlink("instructor-other-document").add("id").lambda));
            args.columns.Add(new ListArgs.Column("user", "姓名", ordering: "username",
                                                 hyperlink: ListArgs.autohyperlink("instructor-other-document").add("id").lambda));
            args.columns.Add(new ListArgs.Column("gender_related", "性别", type: "choice", data: gender_choices));

            template.Construct(args);
            ContentGrid.Children.Add(template);
        }
        public class_list()
        {
            InitializeComponent();
            default_auth = new AuthSetting[] {
                new AuthSetting(Authority.ClassManage)
            };
            template = new ListTemplate();

            var cargs = new CreateArgs("api/classes/", User.Api, "创建班级", Margin: new Thickness(0, 10, 0, 10));

            cargs.items.Add(new CreateArgs.Item("id", "班级编号", "text"));
            cargs.items.Add(new CreateArgs.Item("grade", "年级", "text"));
            cargs.items.Add(new CreateArgs.Item("college", "学院", "text"));
            cargs.items.Add(new CreateArgs.Item("major", "专业", "text"));
            cargs.items.Add(new CreateArgs.Item("number", "班级", "text"));
            cargs.items.Add(new CreateArgs.Item("as_instructor_set", "辅导员列表(工号)", "multitext"));
            cargs.items.Add(new CreateArgs.Item("as_student_set", "学生列表(学号)", "multitext"));

            var args = new ListArgs("api/classes/", User.Api, Title, Searchable: true, Createable: true, Createargs: cargs);

            args.columns.Add(new ListArgs.Column("id", "班级编号",
                                                 hyperlink: ListArgs.autohyperlink("class-instance").add("id").lambda));
            args.columns.Add(new ListArgs.Column("grade", "年级", ordering: "grade"));
            args.columns.Add(new ListArgs.Column("college", "学院", ordering: "college"));
            args.columns.Add(new ListArgs.Column("major", "专业", ordering: "major"));
            args.columns.Add(new ListArgs.Column("number", "班级", ordering: "number"));

            template.Construct(args);
            ContentGrid.Children.Add(template);
        }
Ejemplo n.º 3
0
        private void RealTimeQuery(bool applyauth)
        {
            try
            {
                UnableToolBarAll();

                //if(applyauth)
                //    UICommonHelper.ApplyAuth(_context, _context.ViewID, OperationEnum.Query);

                CreateArgs e = new CreateArgs();
                //authstring
                RemoteDataHelper rdh = new RemoteDataHelper();
                e.colauthstring = rdh.GetColAuthString(ClientReportContext.Login.U8Login, _context.ViewID);

                EngineHelper eh         = CreateEngine();
                string       allcolumns = eh.Engine.LoadFormat(null, _context.ViewID, null, null, null, null, null);
                if (!string.IsNullOrEmpty(allcolumns))
                {
                    string        columns = System.Text.RegularExpressions.Regex.Split(allcolumns, "@;@")[0].Replace("[", "").Replace("]", "");
                    RowAuthFacade raf     = new RowAuthFacade();
                    string        rowauth = raf.GetRowAuth(_context.ViewID, "", columns, ClientReportContext.Login, false);
                    _context.FilterArgs.Args.Add("RowAuthString", rowauth);
                }

                e.bfilter = false;
                e.bgetsql = true;
                ParameterizedThreadStart ts = new ParameterizedThreadStart(eh.CreateReport);
                Thread t = new Thread(ts);
                t.Start(e);
            }
            catch (Exception ex)
            {
                ShowErrorMessage(ex.Message);
            }
        }
        public admin_schedule()
        {
            InitializeComponent();

            default_auth = new AuthSetting[] {
                new AuthSetting(Authority.Admin)
            };
            template = new ListTemplate();

            var cargs = new CreateArgs("api/schedule/system-schedules/", User.Api, "创建时间表", Margin: new Thickness(0, 10, 0, 10));

            cargs.items.Add(new CreateArgs.Item("year", "学年", "text"));
            cargs.items.Add(new CreateArgs.Item("term", "学期", "text"));
            cargs.items.Add(new CreateArgs.Item("begin", "开始时间", "text"));
            cargs.items.Add(new CreateArgs.Item("end", "结束时间", "text"));


            var args = new ListArgs("api/schedule/system-schedules/", User.Api, Title, Searchable: true, Createable: true, Createargs: cargs);

            args.columns.Add(new ListArgs.Column("id", "编号", ordering: "id",
                                                 hyperlink: ListArgs.autohyperlink("admin-admin-schedule-instance").add("id").lambda));
            args.columns.Add(new ListArgs.Column("year", "学年"));
            args.columns.Add(new ListArgs.Column("term", "学期"));
            args.columns.Add(new ListArgs.Column("begin", "开始时间"));
            args.columns.Add(new ListArgs.Column("end", "结束时间"));

            template.Construct(args);
            ContentGrid.Children.Add(template);
        }
Ejemplo n.º 5
0
        public static Secret CreateRegistrySecret(
            Output <string> @namespace,
            AutoDevOpsSettings.RegistrySettings registrySettings,
            ProviderResource?providerResource = null
            )
        {
            const string secretName = "gitlab-registry";

            var creds = $"{registrySettings.User}:{registrySettings.Password}".Base64Encode();

            var content =
                $"{{\"auths\":{{\"{registrySettings.Server}\":{{\"email\":\"{registrySettings.Email}\", \"auth\":\"{creds}\"}}}}}}"
                .Base64Encode();

            return(new Secret(
                       secretName,
                       new SecretArgs {
                Metadata = CreateArgs.GetMeta(secretName, @namespace),
                Type = "kubernetes.io/dockerconfigjson",
                Data = new InputMap <string> {
                    { ".dockerconfigjson", content }
                }
            },
                       new CustomResourceOptions {
                Provider = providerResource
            }
                       ));
        }
Ejemplo n.º 6
0
        public static Ingress Create(
            Output <string> namespaceName,
            AutoDevOpsSettings settings,
            string ingressClass,
            Dictionary <string, string>?annotations = null,
            ProviderResource?providerResource       = null
            )
        {
            var ingressLabels = settings.BaseLabels();
            var tlsEnabled    = settings.Ingress.Tls?.Enabled == true;

            var ingressAnnotations = (annotations ?? new Dictionary <string, string>())
                                     .AsInputMap()
                                     .AddPair("kubernetes.io/ingress.class", ingressClass)
                                     .AddPairIf(tlsEnabled, "kubernetes.io/tls-acme", "true")
                                     .AddPairIf(
                settings.Prometheus.Metrics && ingressClass.Contains("nginx"),
                "nginx.ingress.kubernetes.io/server-snippet",
                "location /metrics { deny all; }"
                );

            var uri = new Uri(settings.Deploy.Url);

            var ingress = new IngressArgs {
                Metadata = CreateArgs.GetMeta(settings.FullName(), namespaceName, ingressAnnotations, ingressLabels),
                Spec     = new IngressSpecArgs {
                    Rules = CreateArgs.IngressRule(uri.Host, settings.FullName(), settings.Service.ExternalPort),
                    Tls   = tlsEnabled
                        ? new[] {
Ejemplo n.º 7
0
        public classroom_list()
        {
            InitializeComponent();
            default_auth = new AuthSetting[] {
                new AuthSetting(Authority.ClassroomManage)
            };
            template = new ListTemplate();

            var cargs = new CreateArgs("api/classrooms/basic/", User.Api, "创建教室", Margin: new Thickness(0, 10, 0, 10));

            cargs.items.Add(new CreateArgs.Item("id", "教室编号", "text"));
            cargs.items.Add(new CreateArgs.Item("name", "教室名称", "text"));
            cargs.items.Add(new CreateArgs.Item("size", "教室大小", "text"));
            cargs.items.Add(new CreateArgs.Item("password", "教室密码", "text"));

            var args = new ListArgs("api/classrooms/basic/", User.Api, Title, Searchable: true, Createable: true, Createargs: cargs);

            args.columns.Add(new ListArgs.Column("id", "教室编号",
                                                 hyperlink: ListArgs.autohyperlink("classroom-instance").add("id").lambda));
            args.columns.Add(new ListArgs.Column("name", "教室名称", ordering: "name",
                                                 hyperlink: ListArgs.autohyperlink("classroom-instance").add("id").lambda));
            args.columns.Add(new ListArgs.Column("size", "教室大小", ordering: "size"));

            template.Construct(args);
            ContentGrid.Children.Add(template);
        }
Ejemplo n.º 8
0
        public course_list()
        {
            InitializeComponent();
            default_auth = new AuthSetting[] {
                new AuthSetting(Authority.CourseManage)
            };
            template = new ListTemplate();

            var cargs = new CreateArgs("api/courses/basic/", User.Api, "创建课程", Margin: new Thickness(0, 10, 0, 10));

            cargs.items.Add(new CreateArgs.Item("id", "课程编号", "text"));
            cargs.items.Add(new CreateArgs.Item("name", "课程名称", "text"));
            cargs.items.Add(new CreateArgs.Item("teacher", "教师(工号)", "text"));
            cargs.items.Add(new CreateArgs.Item("as_student_set", "学生列表(学号)", "multitext"));


            var args = new ListArgs("api/courses/basic/", User.Api, Title, Searchable: true, Createable: true, Createargs: cargs);

            args.columns.Add(new ListArgs.Column("id", "课程编号", ordering: "id",
                                                 hyperlink: ListArgs.autohyperlink("course-instance").add("id").lambda));
            args.columns.Add(new ListArgs.Column("name", "课程名称", ordering: "name",
                                                 hyperlink: ListArgs.autohyperlink("course-instance").add("id").lambda));
            args.columns.Add(new ListArgs.Column("teacher", "任课教师", ordering: "teacher",
                                                 hyperlink: ListArgs.autohyperlink("teacher-other-document").add("id", "teacher").lambda));

            template.Construct(args);
            ContentGrid.Children.Add(template);
        }
Ejemplo n.º 9
0
            public async Task Create_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
            {
                var args = new CreateArgs();
                await args.ReadAsync(iprot, cancellationToken);

                await iprot.ReadMessageEndAsync(cancellationToken);

                var result = new CreateResult();

                try
                {
                    result.Success = await _iAsync.CreateAsync(args.Person, cancellationToken);

                    await oprot.WriteMessageBeginAsync(new TMessage("Create", TMessageType.Reply, seqid), cancellationToken);

                    await result.WriteAsync(oprot, cancellationToken);
                }
                catch (TTransportException)
                {
                    throw;
                }
                catch (Exception ex)
                {
                    Console.Error.WriteLine("Error occurred in processor:");
                    Console.Error.WriteLine(ex.ToString());
                    var x = new TApplicationException(TApplicationException.ExceptionType.InternalError, " Internal error.");
                    await oprot.WriteMessageBeginAsync(new TMessage("Create", TMessageType.Exception, seqid), cancellationToken);

                    await x.WriteAsync(oprot, cancellationToken);
                }
                await oprot.WriteMessageEndAsync(cancellationToken);

                await oprot.Transport.FlushAsync(cancellationToken);
            }
Ejemplo n.º 10
0
        public static UISliderRail Create(CreateArgs input)
        {
            GameObject go = new GameObject(input.widgetName);

            go.tag   = "UICollider";
            go.layer = LayerMask.NameToLayer("CameraHidden");

            // Find the anchor of the parent if it is a UIElement
            Vector3 parentAnchor = Vector3.zero;

            if (input.parent)
            {
                UIElement elem = input.parent.gameObject.GetComponent <UIElement>();
                if (elem)
                {
                    parentAnchor = elem.Anchor;
                }
            }

            UISliderRail uiSliderRail = go.AddComponent <UISliderRail>();

            uiSliderRail.transform.parent        = input.parent;
            uiSliderRail.transform.localPosition = parentAnchor + input.relativeLocation;
            uiSliderRail.transform.localRotation = Quaternion.identity;
            uiSliderRail.transform.localScale    = Vector3.one;
            uiSliderRail.width     = input.width;
            uiSliderRail.height    = input.height;
            uiSliderRail.thickness = input.thickness;
            uiSliderRail.margin    = input.margin;

            // Setup the Meshfilter
            MeshFilter meshFilter = go.GetComponent <MeshFilter>();

            if (meshFilter != null)
            {
                meshFilter.sharedMesh = UIUtils.BuildRoundedBox(input.width, input.height, input.margin, input.thickness);
            }

            // Setup the MeshRenderer
            MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>();

            if (meshRenderer != null && input.material != null)
            {
                Material newMaterial = Instantiate(input.material);
                newMaterial.name            = "UISliderRail_Material";
                meshRenderer.sharedMaterial = newMaterial;

                uiSliderRail._color.useConstant = false;
                uiSliderRail._color.constant    = input.c.value;
                uiSliderRail._color.reference   = input.c;
                meshRenderer.sharedMaterial.SetColor("_BaseColor", uiSliderRail.Color);

                meshRenderer.shadowCastingMode  = UnityEngine.Rendering.ShadowCastingMode.Off;
                meshRenderer.renderingLayerMask = 2; // "LightLayer 1"
            }

            return(uiSliderRail);
        }
Ejemplo n.º 11
0
        public static Deployment Create(
            Output <string> namespaceName,
            AutoDevOpsSettings settings,
            int replicas,
            Secret?imagePullSecret = null,
            Secret?appSecret       = null,
            IEnumerable <ContainerArgs>?sidecars        = null,
            Action <ContainerArgs>?configureContainer   = null,
            Action <PodSpecArgs>?configurePod           = null,
            Action <DeploymentArgs>?configureDeployment = null,
            ProviderResource?providerResource           = null
            )
        {
            var appLabels         = settings.AppLabels();
            var gitLabAnnotations = settings.GitLabAnnotations();

            var containers = CreateArgs.GetAppContainers(
                settings.Application,
                settings.Deploy,
                settings.GitLab,
                appSecret,
                sidecars,
                configureContainer
                );

            var deployment = new DeploymentArgs {
                Metadata = CreateArgs.GetMeta(settings.FullName(), namespaceName, gitLabAnnotations, appLabels),
                Spec     = new DeploymentSpecArgs {
                    Selector = new LabelSelectorArgs {
                        MatchLabels = appLabels
                    },
                    Replicas = replicas,
                    Template = CreateArgs.GetPodTemplate(
                        namespaceName,
                        containers,
                        imagePullSecret,
                        appLabels,
                        gitLabAnnotations,
                        60,
                        configurePod
                        )
                }
            };

            configureDeployment?.Invoke(deployment);

            return(new Deployment(
                       settings.PulumiName("deployment"),
                       deployment,
                       new CustomResourceOptions {
                Provider = providerResource
            }
                       ));
        }
Ejemplo n.º 12
0
        public static UIVerticalSliderKnob Create(CreateArgs input)
        {
            GameObject go = new GameObject(input.widgetName);

            go.tag   = "UICollider";
            go.layer = LayerMask.NameToLayer("CameraHidden");

            // Find the anchor of the parent if it is a UIElement
            Vector3 parentAnchor = Vector3.zero;

            if (input.parent)
            {
                UIElement elem = input.parent.gameObject.GetComponent <UIElement>();
                if (elem)
                {
                    parentAnchor = elem.Anchor;
                }
            }

            UIVerticalSliderKnob uiSliderKnob = go.AddComponent <UIVerticalSliderKnob>();

            uiSliderKnob.transform.parent        = input.parent;
            uiSliderKnob.transform.localPosition = parentAnchor + input.relativeLocation;
            uiSliderKnob.transform.localRotation = Quaternion.identity;
            uiSliderKnob.transform.localScale    = Vector3.one;
            uiSliderKnob.radius = input.radius;
            uiSliderKnob.depth  = input.depth;

            // Setup the Meshfilter
            MeshFilter meshFilter = go.GetComponent <MeshFilter>();

            if (meshFilter != null)
            {
                meshFilter.sharedMesh = UIUtils.BuildRoundedBox(2.0f * input.radius, 2.0f * input.radius, input.radius, input.depth);
            }

            // Setup the MeshRenderer
            MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>();

            if (meshRenderer != null && input.material != null)
            {
                meshRenderer.sharedMaterial     = Instantiate(input.material);
                uiSliderKnob._color.useConstant = false;
                uiSliderKnob._color.reference   = input.c;
                meshRenderer.sharedMaterial.SetColor("_BaseColor", uiSliderKnob.Color);

                meshRenderer.shadowCastingMode  = UnityEngine.Rendering.ShadowCastingMode.Off;
                meshRenderer.renderingLayerMask = 2; // "LightLayer 1"
            }

            return(uiSliderKnob);
        }
Ejemplo n.º 13
0
        public admin_schedule_instance()
        {
            InitializeComponent();
            //生成概要信息区域
            template = new InstanceTemplate();
            var args = new InstanceArgs("api/schedule/system-schedules/", null, User.Api, Title);

            args.margin = new Thickness(0, 10, 0, 10);
            args.items.Add(new InstanceArgs.Item("id", "编号", "text"));
            args.items.Add(new InstanceArgs.Item("year", "学年", "text", EditAbleStatus.Writeable));
            args.items.Add(new InstanceArgs.Item("term", "学期", "text", EditAbleStatus.Writeable));
            args.items.Add(new InstanceArgs.Item("begin", "开始时间", "text", EditAbleStatus.Writeable));
            args.items.Add(new InstanceArgs.Item("end", "结束时间", "text", EditAbleStatus.Writeable));
            template.Construct(args);
            ContentGrid.Children.Add(template);
            //生成列表区域
            list_temp = new ListTemplate();
            var clargs = new CreateArgs("api/schedule/system-schedule-items/", User.Api, "创建时间表项");

            clargs.items.Add(new CreateArgs.Item("no", "节次", "text"));
            clargs.items.Add(new CreateArgs.Item("begin", "上课时间", "text"));
            clargs.items.Add(new CreateArgs.Item("end", "下课时间", "text"));
            clargs.items.Add(new CreateArgs.Item("system_schedule", "系统时间表", "hidden", data: "system_schedule"));

            var largs = new ListArgs("api/schedule/system-schedule-items/", User.Api, "时间表项", Createable: true, Createargs: clargs);

            largs.columns.Add(new ListArgs.Column("id", "编号", customaction: UpdateScheduleItemInstance));
            largs.columns.Add(new ListArgs.Column("no", "节次", customaction: UpdateScheduleItemInstance));
            largs.columns.Add(new ListArgs.Column("begin", "上课时间"));
            largs.columns.Add(new ListArgs.Column("end", "下课时间"));

            list_temp.Construct(largs);
            ListGrid.Children.Add(list_temp);
            //生成项的详情区域
            instance_temp = new InstanceTemplate();
            var iargs = new InstanceArgs("api/schedule/system-schedule-items/", null, User.Api, "表项信息");

            iargs.items.Add(new InstanceArgs.Item("id", "编号", "text"));
            iargs.items.Add(new InstanceArgs.Item("no", "节次", "text", EditAbleStatus.Writeable));
            iargs.items.Add(new InstanceArgs.Item("begin", "上课时间", "text", EditAbleStatus.Writeable));
            iargs.items.Add(new InstanceArgs.Item("end", "下课时间", "text", EditAbleStatus.Writeable));
            iargs.deleteaction = () => {       //当按下子项的删除按钮时
                InstanceGrid.Children.Clear(); //仅仅是不显示该区域。
                list_temp.UpdateData();        //刷新列表。
            };

            instance_temp.Construct(iargs);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Create the application secret from CI variables, which are prefixed with K8S_SECRET_
        /// </summary>
        /// <param name="namespaceName">Namespace, where the secret should be created</param>
        /// <param name="settings">AutoDevOps settings</param>
        /// <param name="providerResource">Optional: customer Kubernetes provider</param>
        /// <returns></returns>
        public static Secret?CreateAppSecret(
            Output <string> namespaceName,
            AutoDevOpsSettings settings,
            ProviderResource?providerResource = null
            )
        {
            var env = GetEnvironmentVariables();

            var vars = new Dictionary <string, string>();

            foreach (DictionaryEntry entry in env)
            {
                var key = (string)entry.Key;

                if (key.StartsWith("K8S_SECRET_") && entry.Value != null)
                {
                    vars[key.Remove(0, 11)] = (string)entry.Value;
                }
            }

            if (settings.Env != null)
            {
                foreach (var(name, value) in settings.Env)
                {
                    vars[name] = value;
                }
            }

            if (vars.Count == 0)
            {
                return(null);
            }

            var secretName = $"{settings.Application.Name}-secret";

            return(new Secret(
                       secretName,
                       new SecretArgs {
                Metadata = CreateArgs.GetMeta(secretName, namespaceName),
                Type = "opaque",
                StringData = vars
            },
                       new CustomResourceOptions {
                Provider = providerResource
            }
                       ));
        }
Ejemplo n.º 15
0
        static Service Create(
            Output <string> namespaceName,
            AutoDevOpsSettings settings,
            InputMap <string> selector,
            Dictionary <string, string>?annotations = null,
            Action <ServiceArgs>?configureService   = null,
            ProviderResource?providerResource       = null
            )
        {
            var serviceLabels = settings.BaseLabels();

            var serviceAnnotations = (annotations ?? new Dictionary <string, string>())
                                     .AsInputMap();

            if (settings.Prometheus.Metrics && !settings.Prometheus.Operator)
            {
                serviceAnnotations
                .AddPair("prometheus.io/scrape", "true")
                .AddPair("prometheus.io/path", settings.Prometheus.Path)
                .AddPair("prometheus.io/port", settings.Service.ExternalPort.ToString());
            }

            var serviceArgs =
                new ServiceArgs {
                Metadata =
                    CreateArgs.GetMeta(settings.FullName(), namespaceName, serviceAnnotations, serviceLabels),
                Spec = new ServiceSpecArgs {
                    Type  = settings.Service.Type,
                    Ports = new List <ServicePortArgs> {
                        new() {
                            Name       = "web",
                            Port       = settings.Service.ExternalPort,
                            TargetPort = settings.Application.Port,
                            Protocol   = "TCP"
                        }
                    },
Ejemplo n.º 16
0
            public async Task <bool> CreateAsync(Person person, CancellationToken cancellationToken)
            {
                await OutputProtocol.WriteMessageBeginAsync(new TMessage("Create", TMessageType.Call, SeqId), cancellationToken);

                var args = new CreateArgs();

                args.Person = person;

                await args.WriteAsync(OutputProtocol, cancellationToken);

                await OutputProtocol.WriteMessageEndAsync(cancellationToken);

                await OutputProtocol.Transport.FlushAsync(cancellationToken);

                var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);

                if (msg.Type == TMessageType.Exception)
                {
                    var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);

                    await InputProtocol.ReadMessageEndAsync(cancellationToken);

                    throw x;
                }

                var result = new CreateResult();
                await result.ReadAsync(InputProtocol, cancellationToken);

                await InputProtocol.ReadMessageEndAsync(cancellationToken);

                if (result.__isset.success)
                {
                    return(result.Success);
                }
                throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "Create failed: unknown result");
            }
Ejemplo n.º 17
0
 public void Create(CreateArgs args)
 {
     throw new SubjectException("EPIC FAIL!");
 }
Ejemplo n.º 18
0
        public static void Create(CreateArgs input)
        {
            GameObject go = new GameObject(input.widgetName);

            go.tag = "UICollider";

            // Find the anchor of the parent if it is a UIElement
            Vector3 parentAnchor = Vector3.zero;

            if (input.parent)
            {
                UIElement elem = input.parent.gameObject.GetComponent <UIElement>();
                if (elem)
                {
                    parentAnchor = elem.Anchor;
                }
            }

            UITimeBar uiTimeBar = go.AddComponent <UITimeBar>(); // NOTE: also creates the MeshFilter, MeshRenderer and Collider components

            uiTimeBar.relativeLocation        = input.relativeLocation;
            uiTimeBar.transform.parent        = input.parent;
            uiTimeBar.transform.localPosition = parentAnchor + input.relativeLocation;
            uiTimeBar.transform.localRotation = Quaternion.identity;
            uiTimeBar.transform.localScale    = Vector3.one;
            uiTimeBar.width                 = input.width;
            uiTimeBar.height                = input.height;
            uiTimeBar.thickness             = input.thickness;
            uiTimeBar.minValue              = input.min_slider_value;
            uiTimeBar.maxValue              = input.max_slider_value;
            uiTimeBar.currentValue          = input.cur_slider_value;
            uiTimeBar.baseColor.useConstant = false;
            uiTimeBar.baseColor.reference   = input.background_color;

            // Setup the Meshfilter
            MeshFilter meshFilter = go.GetComponent <MeshFilter>();

            if (meshFilter != null)
            {
                // TODO: new mesh, with time ticks texture
                meshFilter.sharedMesh = UIUtils.BuildBoxEx(input.width, input.height, input.thickness);
                uiTimeBar.Anchor      = Vector3.zero;
                BoxCollider coll = go.GetComponent <BoxCollider>();
                if (coll != null)
                {
                    Vector3 initColliderCenter = meshFilter.sharedMesh.bounds.center;
                    Vector3 initColliderSize   = meshFilter.sharedMesh.bounds.size;
                    if (initColliderSize.z < UIElement.collider_min_depth_shallow)
                    {
                        coll.center = new Vector3(initColliderCenter.x, initColliderCenter.y, UIElement.collider_min_depth_shallow / 2.0f);
                        coll.size   = new Vector3(initColliderSize.x, initColliderSize.y, UIElement.collider_min_depth_shallow);
                    }
                    else
                    {
                        coll.center = initColliderCenter;
                        coll.size   = initColliderSize;
                    }
                    coll.isTrigger = true;
                }
            }

            // Setup the MeshRenderer
            MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>();

            if (meshRenderer != null && input.background_material != null)
            {
                // Clone the material.
                meshRenderer.sharedMaterial = Instantiate(input.background_material);

                meshRenderer.shadowCastingMode  = UnityEngine.Rendering.ShadowCastingMode.Off;
                meshRenderer.renderingLayerMask = (1 << 3);

                uiTimeBar.SetColor(input.background_color.value);
            }

            // KNOB
            GameObject K = new GameObject("Knob");

            uiTimeBar.knob = K.transform;

            UIUtils.SetRecursiveLayer(go, "CameraHidden");
        }
        /// <summary>
        /// Gets the view models.
        /// </summary>
        /// <param name="entity">The entity object.</param>
        /// <returns>The generated view models.</returns>
        public async Task <IList <ItemGroup> > GetViewModels(SitefinityDataEntity entity)
        {
            var viewModels = new List <ItemGroup>();
            var itemType   = "pressreleases";
            var provider   = "OpenAccessProvider";

            // when using the OData client, the url is automatically prefixed with the value of web the service and the sitefinity instance url
            // we use an expand the get the related image

            var getAllArgs = new GetAllArgs
            {
                // required parameter, specifies the items to work with
                Type = itemType
            };

            // optional parameter, specifies the fields to be returned, if not specified
            // the default service response fields will be returned
            getAllArgs.Fields.Add("Title");

            // "*" returns all the fields, even those that are available when requesting a single item only
            // getAllArgs.Fields.Add("*");

            // specifies the related fields to be included in the response (like related data or parent relationships)
            if (!entity.HideImage)
            {
                getAllArgs.Fields.Add("RelatedMediaSingle");
            }

            // optional parameter, specifies the maximum items to be returned
            getAllArgs.Take = 20;

            // optional parameter, specifies the items to be skipped
            getAllArgs.Skip = 0;

            // optional paramteter, specifies an ordering clause
            getAllArgs.OrderBy.Add(new OrderBy()
            {
                Name = "Title",
                Type = OrderType.Ascending
            });

            // optional parameter, specifies if the total count of the items should be returned
            getAllArgs.Count = true;

            // optional parameter, if nothing is specified, the default for the site will be used
            getAllArgs.Provider = provider;

            // The generic parameter here is a plain DTO for a one to one relationship with the model on the server
            // It contains a representation for every kind of field that is currently supported by the system
            getAllArgs.Filter = null;
            var responseWithoutFilter = await this.service.GetItems <Item>(getAllArgs).ConfigureAwait(true);

            viewModels.Add(new ItemGroup()
            {
                Name  = "Items without filter",
                Items = responseWithoutFilter.Items.Select(x => this.GetItemViewModel(x)).ToArray(),
            });

            getAllArgs.Filter = new FilterClause()
            {
                FieldName  = "Title",
                FieldValue = "test",
                Operator   = FilterClause.Operators.Equal
            };

            var responseWithBasicFilter = await this.service.GetItems <Item>(getAllArgs).ConfigureAwait(true);

            viewModels.Add(new ItemGroup()
            {
                Name  = "Items with simple filter",
                Items = responseWithBasicFilter.Items.Select(x => this.GetItemViewModel(x)).ToArray(),
            });

            var filterTitle = new FilterClause()
            {
                FieldName  = "Title",
                FieldValue = "test",
                Operator   = FilterClause.Operators.Equal,
            };

            var filterTitle2 = new FilterClause()
            {
                FieldName  = "Title",
                FieldValue = "test",
                Operator   = FilterClause.Operators.NotEqual,
            };

            var filterTitle3 = new FilterClause()
            {
                FieldName  = "Title",
                FieldValue = "test",
                Operator   = FilterClause.StringOperators.StartsWith,
            };

            var filterTitle4 = new FilterClause()
            {
                FieldName  = "Title",
                FieldValue = "test",
                Operator   = FilterClause.StringOperators.EndsWith,
            };

            var filtersByTitle = new CombinedFilter()
            {
                Operator     = CombinedFilter.LogicalOperators.Or,
                ChildFilters = new FilterClause[] { filterTitle, filterTitle2 },
            };

            var filtersByTitleWithStringOperators = new CombinedFilter()
            {
                Operator     = CombinedFilter.LogicalOperators.Or,
                ChildFilters = new FilterClause[] { filterTitle3, filterTitle4 },
            };

            var multipleFiltersCombined = new CombinedFilter
            {
                Operator     = CombinedFilter.LogicalOperators.And,
                ChildFilters = new CombinedFilter[] { filtersByTitle, filtersByTitleWithStringOperators },
            };

            getAllArgs.Filter = multipleFiltersCombined;
            var responseWithComplexFilter = await this.service.GetItems <Item>(getAllArgs).ConfigureAwait(true);

            viewModels.Add(new ItemGroup()
            {
                Name  = "Items with complex filter",
                Items = responseWithComplexFilter.Items.Select(x => this.GetItemViewModel(x)).ToArray(),
            });

            // in order to execute /create/read/update operations a token must be acquired from the web server
            var createItemArgs = new CreateArgs()
            {
                // required parameter, specifies the items to work with
                Type = itemType,

                // required parameter, specifies the data to be passed to the server
                Data = new Item()
                {
                    Title                = "Test",
                    DateAndTime          = DateTime.UtcNow,
                    Number               = 123456,
                    ChoicesSingle        = SingleChoice.FirstChoice,
                    ChociesMultiple      = MultipleChoice.FirstChoice | MultipleChoice.SecondChoice,
                    LongText             = "LongText",
                    ShortText            = "ShortText",
                    ArrayOfGuids         = new [] { Guid.NewGuid() },
                    GUIDField            = Guid.NewGuid(),
                    MetaTitle            = "Test",
                    MetaDescription      = "Test",
                    OpenGraphDescription = "Test",
                    OpenGraphTitle       = "Test",
                    Tags    = new [] { Guid.NewGuid() },
                    UrlName = "test" + Guid.NewGuid().ToString(),
                    YesNo   = true,

                    // related, properties are added through relation request
                    // RelatedMediaSingle
                },

                // optional parameter, if nothing is specified, the default for the site will be used
                Provider = provider
            };

            try
            {
                // reference to documentation on how to retrieve bearer tokens
                // https://www.progress.com/documentation/sitefinity-cms/request-access-token-for-calling-web-services
                var token = "Bearer ...";
                createItemArgs.AdditionalHeaders.Add(HeaderNames.Authorization, token);

                var createResponse = await this.service.CreateItem <Item>(createItemArgs);

                var getSingleArgs = new GetItemArgs()
                {
                    // required parameter, specifies the id of the item to update
                    Id = createResponse.Id.ToString(),

                    // required parameter, specifies the items to work with
                    Type = itemType,

                    // optional parameter, if nothing is specified, the default for the site will be used
                    Provider = provider
                };

                var getSingleResponse = await this.service.GetItem <Item>(getSingleArgs);

                var updateArgs = new UpdateArgs()
                {
                    // required parameter, specifies the id of the item to update
                    Id = getSingleResponse.Id.ToString(),

                    // required parameter, specifies the items to work with
                    Type = itemType,

                    // required parameter, specifies the data to be passed to the server
                    Data = new Item()
                    {
                        Title = "updated title",
                    },

                    // optional parameter, if nothing is specified, the default for the site will be used
                    Provider = provider
                };
                updateArgs.AdditionalHeaders.Add(HeaderNames.Authorization, token);

                await this.service.UpdateItem(updateArgs);

                var deleteArgs = new DeleteArgs()
                {
                    // required parameter, specifies the id of the item to update
                    Id = getSingleResponse.Id.ToString(),

                    // required parameter, specifies the items to work with
                    Type = itemType,

                    // optional parameter, if nothing is specified, the default for the site will be used
                    Provider = provider
                };

                deleteArgs.AdditionalHeaders.Add(HeaderNames.Authorization, token);

                await this.service.DeleteItem(deleteArgs);
            }
            catch (ErrorCodeException error)
            {
                this.logger.LogError($"Cannot create/update/delete items. Actual error is {error.Message}");
            }

            return(viewModels);
        }
Ejemplo n.º 20
0
 public void Create(CreateArgs.DependencyCreateArgs args)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 21
0
        public static void Create(CreateArgs input)
        {
            GameObject go = new GameObject(input.widgetName);

            go.tag = "UICollider";

            // Find the anchor of the parent if it is a UIElement
            Vector3 parentAnchor = Vector3.zero;

            if (input.parent)
            {
                UIElement elem = input.parent.gameObject.GetComponent <UIElement>();
                if (elem)
                {
                    parentAnchor = elem.Anchor;
                }
            }

            UIVerticalSlider uiSlider = go.AddComponent <UIVerticalSlider>(); // NOTE: also creates the MeshFilter, MeshRenderer and Collider components

            uiSlider.relativeLocation        = input.relativeLocation;
            uiSlider.transform.parent        = input.parent;
            uiSlider.transform.localPosition = parentAnchor + input.relativeLocation;
            uiSlider.transform.localRotation = Quaternion.identity;
            uiSlider.transform.localScale    = Vector3.one;
            uiSlider.width                     = input.width;
            uiSlider.height                    = input.height;
            uiSlider.margin                    = input.margin;
            uiSlider.thickness                 = input.thickness;
            uiSlider.sliderPositionBegin       = input.sliderBegin;
            uiSlider.sliderPositionEnd         = input.sliderEnd;
            uiSlider.railMargin                = input.railMargin;
            uiSlider.railThickness             = input.railThickness;
            uiSlider.knobRadius                = input.knobRadius;
            uiSlider.knobDepth                 = input.knobDepth;
            uiSlider.dataSource                = input.dataSource;
            uiSlider.minValue                  = input.minValue;
            uiSlider.maxValue                  = input.maxValue;
            uiSlider.currentValue              = input.currentValue;
            uiSlider.textContent               = input.caption;
            uiSlider.sourceMaterial            = input.material;
            uiSlider.sourceRailMaterial        = input.railMaterial;
            uiSlider.sourceKnobMaterial        = input.knobMaterial;
            uiSlider.textValueAlign            = input.textValueAlign;
            uiSlider.baseColor.useConstant     = false;
            uiSlider.baseColor.reference       = input.color;
            uiSlider.textColor.useConstant     = false;
            uiSlider.textColor.reference       = input.textColor;
            uiSlider.pushedColor.useConstant   = false;
            uiSlider.pushedColor.reference     = input.pushedColor;
            uiSlider.selectedColor.useConstant = false;
            uiSlider.selectedColor.reference   = input.selectedColor;

            // Setup the Meshfilter
            MeshFilter meshFilter = go.GetComponent <MeshFilter>();

            if (meshFilter != null)
            {
                meshFilter.sharedMesh = UIUtils.BuildRoundedBox(input.width, input.height, input.margin, input.thickness);
                uiSlider.Anchor       = Vector3.zero;
                BoxCollider coll = go.GetComponent <BoxCollider>();
                if (coll != null)
                {
                    Vector3 initColliderCenter = meshFilter.sharedMesh.bounds.center;
                    Vector3 initColliderSize   = meshFilter.sharedMesh.bounds.size;
                    if (initColliderSize.z < UIElement.collider_min_depth_shallow)
                    {
                        coll.center = new Vector3(initColliderCenter.x, initColliderCenter.y, UIElement.collider_min_depth_shallow / 2.0f);
                        coll.size   = new Vector3(initColliderSize.x, initColliderSize.y, UIElement.collider_min_depth_shallow);
                    }
                    else
                    {
                        coll.center = initColliderCenter;
                        coll.size   = initColliderSize;
                    }
                    coll.isTrigger = true;
                }
            }

            // Setup the MeshRenderer
            MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>();

            if (meshRenderer != null && input.material != null)
            {
                // Clone the material.
                meshRenderer.sharedMaterial = Instantiate(input.material);

                meshRenderer.shadowCastingMode  = UnityEngine.Rendering.ShadowCastingMode.Off;
                meshRenderer.renderingLayerMask = 2; // "LightLayer 1"

                uiSlider.SetColor(input.color.value);
            }

            //
            // RAIL
            //

            float   railWidth     = 2 * uiSlider.railMargin;
            float   railHeight    = (input.height - 2 * input.margin) * (input.sliderEnd - input.sliderBegin);
            float   railThickness = uiSlider.railThickness;
            float   railMargin    = uiSlider.railMargin;
            Vector3 railPosition  = new Vector3(input.width / 2.0f - railMargin, -input.height + input.margin + (input.height - 2 * input.margin) * uiSlider.sliderPositionEnd, -railThickness);

            uiSlider.rail = UIVerticalSliderRail.Create(
                new UIVerticalSliderRail.CreateArgs
            {
                parent           = go.transform,
                widgetName       = "Rail",
                relativeLocation = railPosition,
                width            = railWidth,
                height           = railHeight,
                thickness        = railThickness,
                margin           = railMargin,
                material         = input.railMaterial,
                c = input.railColor
            }
                );

            //
            // KNOB
            //

            float newKnobRadius = uiSlider.knobRadius;
            float newKnobDepth  = uiSlider.knobDepth;

            float pct = (uiSlider.currentValue - uiSlider.minValue) / (uiSlider.maxValue - uiSlider.minValue);
            float heightWithoutMargins = input.height - 2.0f * input.margin;
            float startY = -input.height + input.margin + heightWithoutMargins * uiSlider.sliderPositionBegin + railMargin;
            float endY   = -input.height + input.margin + heightWithoutMargins * uiSlider.sliderPositionEnd - railMargin;
            float posY   = startY + pct * (endY - startY);

            Vector3 knobPosition = new Vector3((input.width / 2.0f) - uiSlider.knobRadius, posY + uiSlider.knobRadius, -uiSlider.knobDepth);

            uiSlider.knob = UIVerticalSliderKnob.Create(
                new UIVerticalSliderKnob.CreateArgs
            {
                widgetName       = "Knob",
                parent           = go.transform,
                relativeLocation = knobPosition,
                radius           = newKnobRadius,
                depth            = newKnobDepth,
                material         = input.knobMaterial,
                c = input.knobColor
            }
                );

            //
            // CANVAS (to hold the image)
            //

            GameObject canvas = new GameObject("Canvas");

            canvas.transform.parent = uiSlider.transform;

            Canvas c = canvas.AddComponent <Canvas>();

            c.renderMode = RenderMode.WorldSpace;

            RectTransform rt = canvas.GetComponent <RectTransform>(); // auto added when adding Canvas

            rt.localScale    = Vector3.one;
            rt.localRotation = Quaternion.identity;
            rt.anchorMin     = new Vector2(0, 1);
            rt.anchorMax     = new Vector2(0, 1);
            rt.pivot         = new Vector2(0, 1); // top left
            rt.sizeDelta     = new Vector2(uiSlider.width, uiSlider.height);
            rt.localPosition = Vector3.zero;      // top left

            CanvasScaler cs = canvas.AddComponent <CanvasScaler>();

            cs.dynamicPixelsPerUnit   = 300; // 300 dpi, sharp font
            cs.referencePixelsPerUnit = 100; // default?

            float minSide = Mathf.Min(uiSlider.width, uiSlider.height);

            // Add an Image under the Canvas
            if (input.icon != null)
            {
                GameObject image = new GameObject("Image");
                image.transform.parent = canvas.transform;

                Image img = image.AddComponent <Image>();
                img.sprite = input.icon;
                img.color  = input.textColor.value;

                RectTransform trt = image.GetComponent <RectTransform>();
                trt.localScale    = Vector3.one;
                trt.localRotation = Quaternion.identity;
                trt.anchorMin     = new Vector2(0, 1);
                trt.anchorMax     = new Vector2(0, 1);
                trt.pivot         = new Vector2(0, 1); // top left
                // TODO: non square icons ratio...
                trt.sizeDelta     = new Vector2(minSide - 2.0f * input.margin, minSide - 2.0f * input.margin);
                trt.localPosition = new Vector3(input.margin, -input.margin, -0.001f); // top-left minus margins
            }

            // Text VALUE
            {
                GameObject text = new GameObject("TextValue");
                text.transform.parent = canvas.transform;

                TextMeshProUGUI t = text.AddComponent <TextMeshProUGUI>();
                t.text             = input.currentValue.ToString("#0.00");
                t.enableAutoSizing = true;
                t.fontSizeMin      = 1;
                t.fontSizeMax      = 500;
                t.fontStyle        = FontStyles.Normal;
                t.alignment        = TextAlignmentOptions.Right;
                t.color            = input.textColor.value;

                RectTransform trt = t.GetComponent <RectTransform>();
                trt.localScale    = 0.01f * Vector3.one;
                trt.localRotation = Quaternion.identity;
                trt.anchorMin     = new Vector2(0, 1);
                trt.anchorMax     = new Vector2(0, 1);
                trt.pivot         = new Vector2(1, 1);                                   // top right?
                trt.sizeDelta     = new Vector2(5, uiSlider.knobRadius * 2.0f * 100.0f); // size = 5, enough to hold the 0.00 float.
                float textPosRight = -2.0f * uiSlider.margin;                            // TMP: au pif pour le moment
                trt.localPosition = new Vector3(textPosRight, knobPosition.y, -0.002f);
            }

            UIUtils.SetRecursiveLayer(go, "CameraHidden");
        }
Ejemplo n.º 22
0
        public static UISpinner Create(CreateArgs input)
        {
            GameObject go = new GameObject(input.widgetName);

            go.tag = "UICollider";

            // Find the anchor of the parent if it is a UIElement
            Vector3 parentAnchor = Vector3.zero;

            if (input.parent)
            {
                UIElement elem = input.parent.gameObject.GetComponent <UIElement>();
                if (elem)
                {
                    parentAnchor = elem.Anchor;
                }
            }

            UISpinner uiSpinner = go.AddComponent <UISpinner>(); // NOTE: also creates the MeshFilter, MeshRenderer and Collider components

            uiSpinner.relativeLocation        = input.relativeLocation;
            uiSpinner.transform.parent        = input.parent;
            uiSpinner.transform.localPosition = parentAnchor + input.relativeLocation;
            uiSpinner.transform.localRotation = Quaternion.identity;
            uiSpinner.transform.localScale    = Vector3.one;
            uiSpinner.width                      = input.width;
            uiSpinner.height                     = input.height;
            uiSpinner.margin                     = input.margin;
            uiSpinner.thickness                  = input.thickness;
            uiSpinner.separationPositionPct      = input.spinner_separation_pct;
            uiSpinner.textAndValueVisibilityType = input.visibility_type;
            uiSpinner.spinnerValueType           = input.value_type;
            uiSpinner.minValue                   = input.min_spinner_value;
            uiSpinner.maxValue                   = input.max_spinner_value;
            uiSpinner.currentValue               = input.cur_spinner_value;
            uiSpinner.valueRate                  = input.spinner_value_rate;
            uiSpinner.valueRateRay               = input.spinner_value_rate_ray;
            uiSpinner.textContent                = input.caption;
            uiSpinner.baseColor.useConstant      = false;
            uiSpinner.baseColor.reference        = input.background_color;
            uiSpinner.textColor.useConstant      = false;
            uiSpinner.textColor.reference        = input.textColor;
            uiSpinner.pushedColor.useConstant    = false;
            uiSpinner.pushedColor.reference      = input.pushedColor;
            uiSpinner.selectedColor.useConstant  = false;
            uiSpinner.selectedColor.reference    = input.selectedColor;
            uiSpinner.sourceMaterial             = input.background_material;

            // Setup the Meshfilter
            MeshFilter meshFilter = go.GetComponent <MeshFilter>();

            if (meshFilter != null)
            {
                meshFilter.sharedMesh = UIUtils.BuildRoundedBox(input.width, input.height, input.margin, input.thickness);
                uiSpinner.Anchor      = Vector3.zero;
                BoxCollider coll = go.GetComponent <BoxCollider>();
                if (coll != null)
                {
                    Vector3 initColliderCenter = meshFilter.sharedMesh.bounds.center;
                    Vector3 initColliderSize   = meshFilter.sharedMesh.bounds.size;
                    if (initColliderSize.z < UIElement.collider_min_depth_shallow)
                    {
                        coll.center = new Vector3(initColliderCenter.x, initColliderCenter.y, UIElement.collider_min_depth_shallow / 2.0f);
                        coll.size   = new Vector3(initColliderSize.x, initColliderSize.y, UIElement.collider_min_depth_shallow);
                    }
                    else
                    {
                        coll.center = initColliderCenter;
                        coll.size   = initColliderSize;
                    }
                    coll.isTrigger = true;
                }
            }

            // Setup the MeshRenderer
            MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>();

            if (meshRenderer != null && input.background_material != null)
            {
                // Clone the material.
                meshRenderer.sharedMaterial = Instantiate(input.background_material);

                meshRenderer.shadowCastingMode  = UnityEngine.Rendering.ShadowCastingMode.Off;
                meshRenderer.renderingLayerMask = 2; // "LightLayer 1"

                uiSpinner.SetColor(input.background_color.value);
            }

            //
            // CANVAS (to hold the 2 texts)
            //

            GameObject canvas = new GameObject("Canvas");

            canvas.transform.parent = uiSpinner.transform;

            Canvas c = canvas.AddComponent <Canvas>();

            c.renderMode = RenderMode.WorldSpace;

            RectTransform rt = canvas.GetComponent <RectTransform>(); // auto added when adding Canvas

            rt.localScale    = Vector3.one;
            rt.localRotation = Quaternion.identity;
            rt.anchorMin     = new Vector2(0, 1);
            rt.anchorMax     = new Vector2(0, 1);
            rt.pivot         = new Vector2(0, 1); // top left
            rt.sizeDelta     = new Vector2(uiSpinner.width, uiSpinner.height);
            rt.localPosition = Vector3.zero;

            CanvasScaler cs = canvas.AddComponent <CanvasScaler>();

            cs.dynamicPixelsPerUnit   = 300; // 300 dpi, sharp font
            cs.referencePixelsPerUnit = 100; // default?

            bool hasText = (input.visibility_type == TextAndValueVisibilityType.ShowTextAndValue);

            // Add a Text under the Canvas
            {
                GameObject text = new GameObject("Text");
                text.transform.parent = canvas.transform;

                TextMeshProUGUI t = text.AddComponent <TextMeshProUGUI>();
                t.text             = input.caption;
                t.enableAutoSizing = true;
                t.fontSizeMin      = 1;
                t.fontSizeMax      = 500;
                t.fontStyle        = FontStyles.Normal;
                t.alignment        = TextAlignmentOptions.Left;
                t.color            = input.textColor.value;

                RectTransform trt = t.GetComponent <RectTransform>();
                trt.localScale    = 0.01f * Vector3.one;
                trt.localRotation = Quaternion.identity;
                trt.anchorMin     = new Vector2(0, 1);
                trt.anchorMax     = new Vector2(0, 1);
                trt.pivot         = new Vector2(0, 1); // top left
                trt.sizeDelta     = new Vector2(
                    (uiSpinner.width - 2 * uiSpinner.margin) * uiSpinner.separationPositionPct * 100.0f,
                    (uiSpinner.height - 2 * uiSpinner.margin) * 100.0f);
                float textPosLeft = uiSpinner.margin;
                trt.localPosition = new Vector3(textPosLeft, -uiSpinner.margin, -0.002f);

                // hide if ValueOnly
                text.SetActive(hasText);
            }

            // Text VALUE
            {
                GameObject text = new GameObject("TextValue");
                text.transform.parent = canvas.transform;

                TextMeshProUGUI t = text.AddComponent <TextMeshProUGUI>();
                t.text = (input.value_type == SpinnerValueType.Float)
                    ? input.cur_spinner_value.ToString(default_value_format)
                    : Mathf.RoundToInt(input.cur_spinner_value).ToString();
                t.enableAutoSizing = true;
                t.fontSizeMin      = 1;
                t.fontSizeMax      = 500;
                t.fontStyle        = FontStyles.Normal;
                t.alignment        = hasText ? TextAlignmentOptions.Right : TextAlignmentOptions.Center;
                t.color            = input.textColor.value;

                RectTransform trt = t.GetComponent <RectTransform>();
                trt.localScale    = 0.01f * Vector3.one;
                trt.localRotation = Quaternion.identity;
                trt.anchorMin     = new Vector2(0, 1);
                trt.anchorMax     = new Vector2(0, 1);
                trt.pivot         = new Vector2(1, 1); // top right?
                trt.sizeDelta     = hasText ?
                                    new Vector2(
                    (uiSpinner.width - 2 * uiSpinner.margin) * (1 - uiSpinner.separationPositionPct) * 100.0f,
                    (uiSpinner.height - 2 * uiSpinner.margin) * 100.0f)
                    : new Vector2(
                    (uiSpinner.width - 2 * uiSpinner.margin) * 100.0f,
                    (uiSpinner.height - 2 * uiSpinner.margin) * 100.0f);
                float textPos = hasText ?
                                uiSpinner.width - uiSpinner.margin // right
                    : uiSpinner.width - uiSpinner.margin;          // or middle
                trt.localPosition = new Vector3(textPos, -uiSpinner.margin, -0.002f);
            }

            UIUtils.SetRecursiveLayer(go, "CameraHidden");

            return(uiSpinner);
        }
Ejemplo n.º 23
0
        public static UISlider Create(CreateArgs input)
        {
            GameObject go = new GameObject(input.widgetName);

            go.tag = "UICollider";

            // Find the anchor of the parent if it is a UIElement
            Vector3 parentAnchor = Vector3.zero;

            if (input.parent)
            {
                UIElement elem = input.parent.gameObject.GetComponent <UIElement>();
                if (elem)
                {
                    parentAnchor = elem.Anchor;
                }
            }

            UISlider uiSlider = go.AddComponent <UISlider>(); // NOTE: also creates the MeshFilter, MeshRenderer and Collider components

            uiSlider.relativeLocation        = input.relativeLocation;
            uiSlider.transform.parent        = input.parent;
            uiSlider.transform.localPosition = parentAnchor + input.relativeLocation;
            uiSlider.transform.localRotation = Quaternion.identity;
            uiSlider.transform.localScale    = Vector3.one;
            uiSlider.width                     = input.width;
            uiSlider.height                    = input.height;
            uiSlider.margin                    = input.margin;
            uiSlider.thickness                 = input.thickness;
            uiSlider.sliderPositionBegin       = input.sliderBegin;
            uiSlider.sliderPositionEnd         = input.sliderEnd;
            uiSlider.railMargin                = input.railMargin;
            uiSlider.railThickness             = input.railThickness;
            uiSlider.knobRadius                = input.knobRadius;
            uiSlider.knobDepth                 = input.knobDepth;
            uiSlider.dataSource                = input.dataSource;
            uiSlider.minValue                  = input.minValue;
            uiSlider.maxValue                  = input.maxValue;
            uiSlider.currentValue              = input.currentValue;
            uiSlider.textContent               = input.caption;
            uiSlider.sourceMaterial            = input.material;
            uiSlider.sourceRailMaterial        = input.railMaterial;
            uiSlider.sourceKnobMaterial        = input.knobMaterial;
            uiSlider.baseColor.useConstant     = false;
            uiSlider.baseColor.reference       = input.color;
            uiSlider.textColor.useConstant     = false;
            uiSlider.textColor.reference       = input.textColor;
            uiSlider.pushedColor.useConstant   = false;
            uiSlider.pushedColor.reference     = input.pushedColor;
            uiSlider.selectedColor.useConstant = false;
            uiSlider.selectedColor.reference   = input.selectedColor;

            // Setup the Meshfilter
            MeshFilter meshFilter = go.GetComponent <MeshFilter>();

            if (meshFilter != null)
            {
                meshFilter.sharedMesh = UIUtils.BuildRoundedBox(input.width, input.height, input.margin, input.thickness);
                uiSlider.Anchor       = Vector3.zero;
                BoxCollider coll = go.GetComponent <BoxCollider>();
                if (coll != null)
                {
                    Vector3 initColliderCenter = meshFilter.sharedMesh.bounds.center;
                    Vector3 initColliderSize   = meshFilter.sharedMesh.bounds.size;
                    if (initColliderSize.z < UIElement.collider_min_depth_shallow)
                    {
                        coll.center = new Vector3(initColliderCenter.x, initColliderCenter.y, UIElement.collider_min_depth_shallow / 2.0f);
                        coll.size   = new Vector3(initColliderSize.x, initColliderSize.y, UIElement.collider_min_depth_shallow);
                    }
                    else
                    {
                        coll.center = initColliderCenter;
                        coll.size   = initColliderSize;
                    }
                    coll.isTrigger = true;
                }
            }

            // Setup the MeshRenderer
            MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>();

            if (meshRenderer != null && input.material != null)
            {
                // Clone the material.
                meshRenderer.sharedMaterial = Instantiate(input.material);

                meshRenderer.shadowCastingMode  = UnityEngine.Rendering.ShadowCastingMode.Off;
                meshRenderer.renderingLayerMask = 2; // "LightLayer 1"

                uiSlider.SetColor(input.color.value);
            }

            //
            // RAIL
            //

            float   railWidth     = (input.width - 2 * input.margin) * (input.sliderEnd - input.sliderBegin);
            float   railHeight    = 3 * uiSlider.railMargin; // TODO: see if we can tie this to another variable, like height.
            float   railThickness = uiSlider.railThickness;
            float   railMargin    = uiSlider.railMargin;
            Vector3 railPosition  = new Vector3(input.margin + (input.width - 2 * input.margin) * input.sliderBegin, -input.height / 2, -railThickness); // put z = 0 back

            uiSlider.rail = UISliderRail.Create(
                new UISliderRail.CreateArgs
            {
                parent           = go.transform,
                widgetName       = "Rail",
                relativeLocation = railPosition,
                width            = railWidth,
                height           = railHeight,
                thickness        = railThickness,
                margin           = railMargin,
                material         = input.railMaterial,
                c = input.railColor
            }
                );

            // KNOB
            float newKnobRadius = uiSlider.knobRadius;
            float newKnobDepth  = uiSlider.knobDepth;

            float pct = (uiSlider.currentValue - uiSlider.minValue) / (uiSlider.maxValue - uiSlider.minValue);

            float widthWithoutMargins = input.width - 2.0f * input.margin;
            float startX = input.margin + widthWithoutMargins * uiSlider.sliderPositionBegin + railMargin;
            float endX   = input.margin + widthWithoutMargins * uiSlider.sliderPositionEnd - railMargin;
            float posX   = startX + pct * (endX - startX);

            Vector3 knobPosition = new Vector3(posX - uiSlider.knobRadius, uiSlider.knobRadius - (uiSlider.height / 2.0f), -uiSlider.knobDepth);

            uiSlider.knob = UISliderKnob.Create(
                new UISliderKnob.CreateArgs
            {
                widgetName       = "Knob",
                parent           = go.transform,
                relativeLocation = knobPosition,
                radius           = newKnobRadius,
                depth            = newKnobDepth,
                material         = input.knobMaterial,
                c = input.knobColor
            }
                );

            //
            // CANVAS (to hold the 2 texts)
            //

            GameObject canvas = new GameObject("Canvas");

            canvas.transform.parent = uiSlider.transform;

            Canvas c = canvas.AddComponent <Canvas>();

            c.renderMode = RenderMode.WorldSpace;

            RectTransform rt = canvas.GetComponent <RectTransform>(); // auto added when adding Canvas

            rt.localScale    = Vector3.one;
            rt.localRotation = Quaternion.identity;
            rt.anchorMin     = new Vector2(0, 1);
            rt.anchorMax     = new Vector2(0, 1);
            rt.pivot         = new Vector2(0, 1); // top left
            rt.sizeDelta     = new Vector2(uiSlider.width, uiSlider.height);
            rt.localPosition = Vector3.zero;

            CanvasScaler cs = canvas.AddComponent <CanvasScaler>();

            cs.dynamicPixelsPerUnit   = 300; // 300 dpi, sharp font
            cs.referencePixelsPerUnit = 100; // default?

            // Add a Text under the Canvas
            if (input.caption.Length > 0)
            {
                GameObject text = new GameObject("Text");
                text.transform.parent = canvas.transform;

                TextMeshProUGUI t = text.AddComponent <TextMeshProUGUI>();
                t.text             = input.caption;
                t.enableAutoSizing = true;
                t.fontSizeMin      = 1;
                t.fontSizeMax      = 500;
                t.fontStyle        = FontStyles.Normal;
                t.alignment        = TextAlignmentOptions.Left;
                t.color            = input.textColor.value;
                t.ForceMeshUpdate();

                RectTransform trt = t.GetComponent <RectTransform>();
                trt.localScale    = 0.01f * Vector3.one;
                trt.localRotation = Quaternion.identity;
                trt.anchorMin     = new Vector2(0, 1);
                trt.anchorMax     = new Vector2(0, 1);
                trt.pivot         = new Vector2(0, 1); // top left
                trt.sizeDelta     = new Vector2((uiSlider.width - 2 * uiSlider.margin) * uiSlider.sliderPositionBegin * 100.0f, (input.height - 2.0f * input.margin) * 100.0f);
                float textPosLeft = uiSlider.margin;
                trt.localPosition = new Vector3(textPosLeft, -uiSlider.margin, -0.002f);
            }

            // Text VALUE
            //if (caption.Length > 0)
            {
                GameObject text = new GameObject("TextValue");
                text.transform.parent = canvas.transform;

                TextMeshProUGUI t = text.AddComponent <TextMeshProUGUI>();
                t.text             = input.currentValue.ToString("#0.00");
                t.enableAutoSizing = true;
                t.fontSizeMin      = 1;
                t.fontSizeMax      = 500;
                t.fontSize         = 1.85f;
                t.fontStyle        = FontStyles.Normal;
                t.alignment        = TextAlignmentOptions.Right;
                t.color            = input.textColor.value;

                RectTransform trt = t.GetComponent <RectTransform>();
                trt.localScale    = 0.01f * Vector3.one;
                trt.localRotation = Quaternion.identity;
                trt.anchorMin     = new Vector2(0, 1);
                trt.anchorMax     = new Vector2(0, 1);
                trt.pivot         = new Vector2(1, 1); // top right?
                trt.sizeDelta     = new Vector2((uiSlider.width - 2 * uiSlider.margin) * (1 - uiSlider.sliderPositionEnd) * 100.0f, (input.height - 2.0f * input.margin) * 100.0f);
                float textPosRight = uiSlider.width - uiSlider.margin;
                trt.localPosition = new Vector3(textPosRight, -uiSlider.margin, -0.002f);
            }

            UIUtils.SetRecursiveLayer(go, "CameraHidden");

            return(uiSlider);
        }
Ejemplo n.º 24
0
        public static void Create(CreateArgs input)
        {
            GameObject go = new GameObject(input.widgetName);
            //go.tag = "UICollider"; le colorpicker en lui meme n'a pas de geometrie a collider, seulement ses enfants.

            // Find the anchor of the parent if it is a UIElement
            Vector3 parentAnchor = Vector3.zero;

            if (input.parent)
            {
                UIElement elem = input.parent.gameObject.GetComponent <UIElement>();
                if (elem)
                {
                    parentAnchor = elem.Anchor;
                }
            }

            UIColorPicker uiColorPicker = go.AddComponent <UIColorPicker>();

            uiColorPicker.relativeLocation        = input.relativeLocation;
            uiColorPicker.transform.parent        = input.parent;
            uiColorPicker.transform.localPosition = parentAnchor + input.relativeLocation;
            uiColorPicker.transform.localRotation = Quaternion.identity;
            uiColorPicker.transform.localScale    = Vector3.one;
            uiColorPicker.width          = input.width;
            uiColorPicker.height         = input.height;
            uiColorPicker.thickness      = input.thickness;
            uiColorPicker.padding        = input.padding;
            uiColorPicker.trianglePct    = input.trianglePct;
            uiColorPicker.innerCirclePct = input.innerCirclePct;
            uiColorPicker.outerCirclePct = input.outerCirclePct;

            //
            // Sub Components
            //

            //      HSV

            Vector3 hsvPosition  = new Vector3(0.0f, 0.0f, 0.0f);
            float   hsvWidth     = input.width;
            float   hsvHeight    = (1.0f - input.alphaToSaturationRatio) * (input.height - input.padding);
            float   hsvThickness = input.thickness;

            uiColorPicker.hsv = UIColorPickerHSV.Create(
                new UIColorPickerHSV.CreateParams {
                parent           = go.transform,
                widgetName       = "Hsv",
                relativeLocation = hsvPosition,
                width            = hsvWidth,
                height           = hsvHeight,
                thickness        = hsvThickness
            });
            uiColorPicker.hsv.colorPicker = uiColorPicker;

            //      Alpha

            Vector3 alphaPosition  = new Vector3(0.0f, (1.0f - input.alphaToSaturationRatio) * -(input.height - input.padding) - input.padding, 0.0f);
            float   alphaWidth     = input.alphaToPreviewRatio * (input.width - input.padding);
            float   alphaHeight    = input.alphaToSaturationRatio * (input.height - input.padding);
            float   alphaThickness = input.thickness;

            uiColorPicker.alpha = UIColorPickerAlpha.Create(
                "Alpha", go.transform,
                alphaPosition, alphaWidth, alphaHeight, alphaThickness,
                input.alphaMaterial, input.alphaCursorPrefab);
            uiColorPicker.alpha.colorPicker = uiColorPicker;

            //      Preview

            Vector3 previewPosition  = new Vector3(input.alphaToPreviewRatio * (input.width - input.padding) + input.padding, (1.0f - input.alphaToSaturationRatio) * -(input.height - input.padding) - input.padding, 0.0f);
            float   previewWidth     = (1.0f - input.alphaToPreviewRatio) * (input.width - input.padding);
            float   previewHeight    = input.alphaToSaturationRatio * (input.height - input.padding);
            float   previewThickness = input.thickness;

            uiColorPicker.preview = UIColorPickerPreview.CreateUIColorPickerPreview(
                "Preview", go.transform,
                previewPosition, previewWidth, previewHeight, previewThickness,
                input.previewMaterial);

            UIUtils.SetRecursiveLayer(go, "CameraHidden");
        }
Ejemplo n.º 25
0
			public void Create(CreateArgs args)
			{
				throw new SubjectException("EPIC FAIL!");
			}
Ejemplo n.º 26
0
    public static Frame ReadColumns(ByteStream stream, Header header, int[] columnOffsets, CreateArgs createArgs)
    {
        try {
            Texture2D texture = new Texture2D(header.W, header.H, createArgs.TextureFormat, createArgs.bMipmap, false);

            texture.anisoLevel = createArgs.AnisoLevel;
            texture.filterMode = createArgs.FilterMode;
            texture.wrapMode = createArgs.WrapMode;

            Color32[] pixels = new Color32[header.W*header.H];
            byte[] column = new byte[header.H];
            bool bIsTransparent = (header.Transparent & 0x8) != 0;

            for (int x = 0; x < header.W; ++x) {
                if (columnOffsets != null) {
                    stream.SeekSet(columnOffsets[x]);
                }

                DecodeColumn(stream, column, header.Compressed);

                if (createArgs.TextureFormat == TextureFormat.Alpha8) {
                    int pixelOfs = x;

                    for (int y = 0; y < header.H; ++y, pixelOfs += header.W) {
                        byte color = column[y];
                        pixels[pixelOfs] = new Color32(color, color, color, color);
                    }

                } else {
                    int pixelOfs = x;

                    for (int y = 0; y < header.H; ++y, pixelOfs += header.W) {
                        byte color = column[y];

                        if (bIsTransparent && (color == 0)) {
                            pixels[pixelOfs] = PAL.Transparent;
                        } else {
                            pixels[pixelOfs] = createArgs.Pal.Colors[color];
                        }
                    }
                }
            }

            texture.SetPixels32(pixels);
            texture.Apply();

            return new Frame(texture, bIsTransparent);
        } catch (UnityException e) {
            throw e;
        }
    }
Ejemplo n.º 27
0
    private void ParseBitmap(ByteStream stream, CreateArgs createArgs)
    {
        if ((stream.ReadString(3) != "BM ") || (stream.ReadByte() != 0x1e)){
            throw new InvalidDataException("Not a BM file.");
        }

        Header header = ReadHeader(stream, EHeaderType.FileHeader);
        DebugCheck.Assert(stream.Position == 32);

        if ((header.W == 1) && (header.H != 1)) {
            // multiple bitmaps in this file.
            _fps = stream.ReadByte();
            stream.Skip(1);

            long baseOfs = stream.Position;

            int[] offsets = new int[header.IY];
            for (int i = 0; i < offsets.Length; ++i) {
                offsets[i] = stream.ReadLittleInt32();
            }

            for (int i = 0; i < offsets.Length; ++i) {
                stream.SeekSet(offsets[i] + baseOfs);
                Header subHeader = ReadHeader(stream, EHeaderType.SubHeader);
                Frame frame = ReadColumns(stream, subHeader, null, createArgs);
                _frames.Add(frame);
            }
        } else {
            int[] columnOffsets = null;

            if (header.Compressed != 0) {
                // read column offsets.
                stream.SeekSet(header.DataSize);
                columnOffsets = new int[header.W];

                for (int i = 0; i < columnOffsets.Length; ++i) {
                    columnOffsets[i] = stream.ReadLittleInt32() + 32;
                }
            }

            Frame frame = ReadColumns(stream, header, columnOffsets, createArgs);
            _frames.Add(frame);
        }
    }
Ejemplo n.º 28
0
        public static UIRangeKnob Create(CreateArgs input)
        {
            GameObject go = new GameObject(input.widgetName);

            go.tag   = "UICollider";
            go.layer = LayerMask.NameToLayer("CameraHidden");

            // Find the anchor of the parent if it is a UIElement
            Vector3 parentAnchor = Vector3.zero;

            if (input.parent)
            {
                UIElement elem = input.parent.gameObject.GetComponent <UIElement>();
                if (elem)
                {
                    parentAnchor = elem.Anchor;
                }
            }

            UIRangeKnob uiRangeKnob = go.AddComponent <UIRangeKnob>();

            uiRangeKnob.transform.parent        = input.parent;
            uiRangeKnob.transform.localPosition = parentAnchor + input.relativeLocation;
            uiRangeKnob.transform.localRotation = Quaternion.identity;
            uiRangeKnob.transform.localScale    = Vector3.one;
            uiRangeKnob.width  = input.width;
            uiRangeKnob.radius = input.radius;
            uiRangeKnob.depth  = input.depth;
            uiRangeKnob.nbSubdivCornerFixed      = input.nbSubdivCornerFixed;
            uiRangeKnob.nbSubdivCornerPerUnit    = input.nbSubdivCornerPerUnit;
            uiRangeKnob.baseColor.useConstant    = false;
            uiRangeKnob.baseColor.reference      = input.baseColor;
            uiRangeKnob.pushedColor.useConstant  = false;
            uiRangeKnob.pushedColor.reference    = input.pushedColor;
            uiRangeKnob.hoveredColor.useConstant = false;
            uiRangeKnob.hoveredColor.reference   = input.hoveredColor;
            uiRangeKnob.textColor.useConstant    = false;
            uiRangeKnob.textColor.reference      = input.textColor;

            // Setup the Meshfilter
            MeshFilter meshFilter = go.GetComponent <MeshFilter>();

            if (meshFilter != null)
            {
                meshFilter.sharedMesh = UIUtils.BuildRoundedBoxEx(input.width, 2.0f * input.radius, input.radius, input.depth, input.nbSubdivCornerFixed, input.nbSubdivCornerPerUnit);
            }

            // Setup the MeshRenderer
            MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>();

            if (meshRenderer != null && input.material != null)
            {
                meshRenderer.sharedMaterial = Instantiate(input.material);
                meshRenderer.sharedMaterial.SetColor("_BaseColor", uiRangeKnob.BaseColor);

                meshRenderer.shadowCastingMode  = UnityEngine.Rendering.ShadowCastingMode.Off;
                meshRenderer.renderingLayerMask = 2; // "LightLayer 1"
            }

            //
            // CANVAS (to hold the text)
            //

            GameObject canvas = new GameObject("Canvas");

            canvas.transform.parent = uiRangeKnob.transform;

            Canvas c = canvas.AddComponent <Canvas>();

            c.renderMode = RenderMode.WorldSpace;

            RectTransform rt = canvas.GetComponent <RectTransform>(); // auto added when adding Canvas

            rt.localScale    = Vector3.one;
            rt.localRotation = Quaternion.identity;
            rt.anchorMin     = new Vector2(0, 1);
            rt.anchorMax     = new Vector2(0, 1);
            rt.pivot         = new Vector2(0, 1); // top left
            rt.sizeDelta     = new Vector2(uiRangeKnob.width, 2.0f * uiRangeKnob.radius);
            rt.localPosition = Vector3.zero;      // top left

            CanvasScaler cs = canvas.AddComponent <CanvasScaler>();

            cs.dynamicPixelsPerUnit   = 300; // 300 dpi, sharp font
            cs.referencePixelsPerUnit = 100; // default?

            // Text VALUE
            {
                GameObject text = new GameObject("TextValue");
                text.transform.parent = canvas.transform;

                TextMeshProUGUI t = text.AddComponent <TextMeshProUGUI>();
                t.text                     = input.initialValue.ToString("#0");
                t.enableAutoSizing         = true;
                t.fontSizeMin              = 1;
                t.fontSizeMax              = 500;
                t.characterWidthAdjustment = 50.0f;
                t.fontStyle                = FontStyles.Normal;
                t.alignment                = TextAlignmentOptions.Center;
                t.enableWordWrapping       = false;
                t.overflowMode             = TextOverflowModes.Truncate;
                t.color                    = input.textColor.value;

                RectTransform trt = t.GetComponent <RectTransform>();
                trt.localScale    = 0.01f * Vector3.one;
                trt.localRotation = Quaternion.identity;
                trt.anchorMin     = new Vector2(0, 1);
                trt.anchorMax     = new Vector2(0, 1);
                trt.pivot         = new Vector2(0, 1); // top left
                trt.sizeDelta     = new Vector2(uiRangeKnob.radius * 2.0f * 100.0f, uiRangeKnob.radius * 2.0f * 100.0f);
                if (input.textBehavior == TextBehavior.Hidden)
                {
                    trt.localPosition = new Vector3(0, 0, -0.002f);
                    text.SetActive(false);
                }
                else if (input.textBehavior == TextBehavior.Center)
                {
                    trt.localPosition = new Vector3(0.0f, -uiRangeKnob.radius, -0.002f);
                }
                else if (input.textBehavior == TextBehavior.Bottom)
                {
                    trt.localPosition = new Vector3(0.0f, -2.0f * uiRangeKnob.radius, -0.002f);
                }
                else if (input.textBehavior == TextBehavior.Top)
                {
                    trt.localPosition = new Vector3(0.0f, uiRangeKnob.radius, -0.002f);
                }
            }

            return(uiRangeKnob);
        }