public void DrawPackagePage(Rect bounds, UFramePackageDescriptor package)
        {
            var imageBounds = new Rect(bounds.x + 5, bounds.y + 5, 150, 150);
            var titleBounds = new Rect(imageBounds)
            {
                x      = imageBounds.xMax + 5,
                width  = bounds.width - imageBounds.width - 10,
                height = 20
            };
            var descriptionBounds = new Rect(titleBounds)
            {
                y      = titleBounds.yMax + 10,
                height = 120,
                width  = 400
            };

            var backButtonRect = new Rect(descriptionBounds)
            {
                y      = descriptionBounds.yMax + 20,
                height = 30,
                width  = 100
            };

            GUI.DrawTexture(imageBounds, GetImage(package.ProjectIconUrl), ScaleMode.ScaleToFit, true);
            GUI.Label(titleBounds, package.Title, ProjectPreviewTitleStyle);
            GUI.Label(descriptionBounds, package.Description, ProjectPageDescriptionStyle);

            if (GUI.Button(backButtonRect, "Back"))
            {
                InvertApplication.ExecuteInBackground(new SelectPackageCommand()
                {
                    Id = null
                });
            }

            var revButtonRect = new Rect(backButtonRect)
            {
                x     = backButtonRect.xMax + 5,
                width = 200
            };

            foreach (var revision in KoinoniaSystem.SelectedPackageRevisions)
            {
                if (GUI.Button(revButtonRect, string.Format("Install {1} {0}", revision.VersionTag, package.Title)))
                {
                    InvertApplication.ExecuteInBackground(new QueueRevisionForInstallCommand()
                    {
                        PackageDescriptor  = package,
                        RevisionDescriptor = revision
                    });
                    //Debug.Log("Will download revision from "+ revision.SnapshotUri);
                }

                revButtonRect = new Rect(revButtonRect)
                {
                    y = revButtonRect.yMax
                };
            }
        }
        public static void OpenPackageControlPanelWindow(Rect position, UFramePackageDescriptor package)
        {
            var packageControlPanel = EditorWindow.CreateInstance <PackageControlPanel>();

            packageControlPanel.minSize = packageControlPanel.maxSize = new Vector2(200, 200);
            packageControlPanel.Package = package;
            Debug.Log("Showing at position " + position.x + " , " + position.y);
            packageControlPanel.ShowAsDropDown(position, new Vector2(200, 200));
            packageControlPanel.Repaint();
            packageControlPanel.Focus();
        }
示例#3
0
        private void UpdateCacheWithPackageDescriptor(UFramePackageDescriptor descriptor)
        {
            var oldEntry = Cache.All <UFramePackageDescriptor>().FirstOrDefault(d => d.Id == descriptor.Id);

            if (oldEntry != null)
            {
                Cache.Remove(oldEntry);
            }
            descriptor.CacheExpireTime = DateTime.Now.AddMinutes(30);
            Cache.Add(descriptor);
            Cache.Commit();
        }
示例#4
0
        public void DownloadAndExtractPackage(UFramePackageDescriptor package, UFramePackageRevisionDescriptor revision)
        {
            GlobalProgressMessage = string.Format("Downloading {0} {1}...", package.Title, revision.VersionTag);

            WWW    req      = null;
            string dataPath = null;

            byte[] bytes = null;

            var d = ThreadingUtils.WaitOnMainThread(() =>
            {
                //Pre
                if (req == null)
                {
                    dataPath = Application.dataPath;
                    //var snapshotUri = command.RevisionDescriptor.SnapshotUri;
                    req = new WWW(revision.SnapshotUri);
                }

                if (req.isDone)
                {
                    //Post
                    bytes = req.bytes;
                    //GlobalProgressMessage = string.Format("Extracting {0} {1}...", command.PackageDescriptor.Title, command.RevisionDescriptor.VersionTag);
                    return(true);
                }

                return(false);
            });

            while (!d.Done)
            {
                Thread.Sleep(100);
            }

            GlobalProgressMessage = string.Format("Extracting {0} {1}...", package.Title, revision.VersionTag);

            var stream       = new MemoryStream(bytes);
            var packagesPath = Path.Combine(dataPath, "uFramePackages");

            EnsurePath(packagesPath);

            var packagePath = Path.Combine(packagesPath, package.Id);

            EnsurePath(packagePath);
            ExtractZipFile(stream, packagePath);
        }
示例#5
0
        public IEnumerable <UFramePackageRevisionDescriptor> GetRevisionsByProject(UFramePackageDescriptor package)
        {
            var revisionsToRequest = package.RevisionIds.Where(CachedRevisionDescriptorNeedsUpdate).ToArray();
            var upToDateRevisions  = package.RevisionIds.Except(revisionsToRequest);
            var newRevisions       = RequestPackageRevisionsByIds(revisionsToRequest).ToArray();

            foreach (var revision in newRevisions)
            {
                UpdateCacheWithPackageRevisionDescriptor(revision);
            }

            Cache.Commit();
            //Get new updated revisions
            //Concat with up-to-date shit
            //?????
            //Profit
            return(upToDateRevisions.Select(_ => GetRevisionById(_)).Concat(newRevisions));
        }
        private void DrawPackagePreview(Rect bounds, UFramePackageDescriptor descriptor, Action leftClick = null, Action rightClick = null)
        {
            var borderRect       = new Rect(bounds);
            var previewImageRect = new Rect(borderRect)
            {
                x      = borderRect.x + 5,
                y      = borderRect.y + 5,
                width  = bounds.width - 10,
                height = bounds.width - 10
            };

            //var latestVersionRect = new Rect()
            //{
            //    x = previewImageRect.x + previewImageRect.width/2,
            //    y = previewImageRect.yMax - 15,
            //    width = previewImageRect.width/2,
            //    height = 15
            //};

            var titleRect = new Rect()
            {
                x      = previewImageRect.x,
                y      = previewImageRect.yMax,
                width  = previewImageRect.width,
                height = bounds.height - 10 - previewImageRect.height
            };


            if (GUI.Button(borderRect, ""))
            {
                if (leftClick != null)
                {
                    leftClick();
                }
            }


            GUI.DrawTexture(previewImageRect, GetImage(descriptor.ProjectIconUrl), ScaleMode.ScaleToFit, true);
            //GUI.Label(latestVersionRect,descriptor.LatestPublicVersionTag,ProjectPreviewVersionStyle);
            GUI.Label(titleRect, descriptor.Title, ProjectPreviewTitleStyle);
        }