コード例 #1
0
 public ProjectHost(IObservable <BuildProject> buildProject, ProjectPreview preview, IProject project, Action <ProjectHost> dispose)
 {
     BuildProject = buildProject;
     Preview      = preview;
     Project      = project;
     _dispose     = dispose;
 }
コード例 #2
0
        private void Compare(ProjectPreview expected, ProjectPreview actual)
        {
            Assert.Equal(expected.Code, actual.Code);
            Assert.Equal(expected.Description, actual.Description);
            Assert.Equal(expected.DisplayName, actual.DisplayName);

            Assert.Equal(expected.PosterDescription, actual.PosterDescription);
            Assert.Equal(expected.PosterUrl, actual.PosterUrl);
            Assert.Equal(expected.ReleaseDate, actual.ReleaseDate);

            Compare(expected.Category, actual.Category);
        }
コード例 #3
0
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;

            if (grid.SelectedRows.Count == 1)
            {
                DataGridViewRow row     = grid.SelectedRows[0];
                var             id      = (int)row.Cells["Id"].Value;
                var             preview = new ProjectPreview(id);
                preview.Show();
            }
        }
コード例 #4
0
 public ViewportFactory(
     ProjectPreview preview,
     IProperty <bool> selectionEnabled,
     int port,
     IProject project,
     IFuse fuse,
     IObserver <OpenGlVersion> glVersion)
 {
     _preview          = preview;
     _selectionEnabled = selectionEnabled;
     _assembly         = preview.Assembly.Replay(1).RefCount();
     _port             = port;
     _project          = project;
     _fuse             = fuse;
     _glVersion        = glVersion;
 }
コード例 #5
0
        public ViewportController(
            VirtualDevice initialDevice,
            Action <ViewportController> onFocus,
            Action <ViewportController> onClose,
            Func <ViewportController, Menu> menu,
            ProjectPreview preview,
            IObservable <AssemblyBuilt> assembly,
            int port,
            IFuse fuse,
            Action <IUnoHostControl> initialize,
            IObserver <OpenGlVersion> glVersion)
        {
            VirtualDevice = new BehaviorSubject <VirtualDevice>(initialDevice);
            _onClose      = onClose;
            _onFocus      = onFocus;

            var simulatorControl = assembly
                                   .Select(assemblyPath =>
                                           Observable.Start(() =>
                                                            Observable.Using(() =>
                                                                             preview.LockBuild(assemblyPath.BuildDirectory),
                                                                             assemblyLock =>
                                                                             Observable.Using(() =>
                                                                                              SpawnUnoHost(assemblyPath, port, fuse, menu(this), initialize, glVersion),
                                                                                              unoHost =>
                                                                                              Observable
                                                                                              // never end stream, we don't want to dispose until we've gotten a new one
                                                                                              .Never <Optional <IUnoHostControl> >()
                                                                                              .StartWith(Optional.Some(unoHost)))))
                                           .Switch()
                                           .StartWith(Optional.None <IUnoHostControl>()))
                                   .Switch()
                                   .Replay(1);

            _subscription = simulatorControl.Connect();

            Control = simulatorControl
                      .StartWith(Optional.None <IUnoHostControl>())
                      .Select(c => c.Select(cc => cc.Control).Or(() => CreateLoadingIndicator()))
                      .Switch()
                      .WithBackground(Color.White);

            var realControl = simulatorControl.NotNone().Replay(1).RefCount();

            _send = message => realControl.Take(1).Subscribe(unoHost => unoHost.MessagesTo.OnNext(message));
        }
コード例 #6
0
ファイル: Build.cs プロジェクト: yongaru/fuse-studio
        public Build(IProject project, ProjectPreview preview, PreviewOnDevice previewOnDevice, Command enableUsbMode, BuildArgs args)
        {
            var buildLibraries = new BehaviorSubject <bool>(false);

            var rebuilt = new Subject <object>();

            Rebuilt = rebuilt;

            Rebuild = Command.Enabled(() =>
            {
                rebuilt.OnNext(new object());
                preview.Rebuild();
            });

            Refresh = Command.Enabled(preview.Refresh);

            var buildFlagsWindowVisible = new BehaviorSubject <bool>(false);

            BuildFlags = Command.Enabled(() => buildFlagsWindowVisible.OnNext(true));

            Application.Desktop.CreateSingletonWindow(
                isVisible: buildFlagsWindowVisible,
                window: window => BuildFlagsWindow.Create(buildFlagsWindowVisible, args));

            BuildArguments = Observable.CombineLatest(
                args.Defines, buildLibraries, args.Verbose, project.FilePath,
                (d, bl, vb, pp) => new BuildProject(pp.NativePath, List.Create(d.ToArray()), bl, vb));

            Menu =
                Menu.Item("Refresh", Refresh, hotkey: HotKey.Create(ModifierKeys.Meta, Key.R))
                + Menu.Item("Rebuild", Rebuild, hotkey: HotKey.Create(ModifierKeys.Meta | ModifierKeys.Shift, Key.R))
                + Menu.Separator
                + Menu.Item("Reconnect USB (Android)", enableUsbMode)
                + Menu.Separator
                + previewOnDevice.Menu
                + Menu.Separator
                + Menu.Item("Build flags", BuildFlags);
        }
コード例 #7
0
        public async Task <ProjectPreview> GetPreviewAsync(string userEmail, string projectId, GetResourceDetailsResponseModel resourceDetails,
                                                           GetProjectDetailsResponseModel projectDetails,
                                                           KEntity languageEntity,
                                                           GetPartialPagesDetailsResponseModel partialPages,
                                                           string fpTag, string userId)
        {
            var    watch        = new Stopwatch();
            string compilerTime = "";

            watch.Start();

            ProjectPreview result = null;

            if (projectId != null && resourceDetails != null)
            {
                var doc = new HtmlAgilityPack.HtmlDocument();

                var compileResult = KitsuneCompiler.CompileHTML(new CompileResourceRequest
                {
                    UserEmail   = userEmail,
                    FileContent = resourceDetails.HtmlSourceString,
                    IsDev       = true,
                    IsPublish   = true,
                    ProjectId   = projectId,
                    SourcePath  = resourceDetails.SourcePath,
                    ClassName   = resourceDetails.ClassName,
                    IsPreview   = true
                }, out doc, projectDetails, languageEntity, partialPages);
                compilerTime += ", CompileHTML : " + watch.ElapsedMilliseconds.ToString();

                watch.Restart();
                var previewRes = "";
                if (!compileResult.Success)
                {
                    previewRes = ErrorCodeConstants.CompilationError;
                }
                else if (resourceDetails.IsStatic)
                {
                    previewRes = compileResult.CompiledString;
                }
                else
                {
                    try
                    {
                        var client = new HttpClient();
                        client.BaseAddress = new Uri("http://kitsune-demo-identifier-952747768.ap-south-1.elb.amazonaws.com");
                        byte[] bytes  = Encoding.UTF8.GetBytes(compileResult.CompiledString);
                        string base64 = Convert.ToBase64String(bytes);
                        var    obData = new KitsunePreviewModel
                        {
                            DeveloperId       = userId,
                            FileContent       = base64,
                            NoCacheQueryParam = null,
                            ProjectId         = projectId,
                            View       = resourceDetails.SourcePath,
                            WebsiteTag = fpTag
                        };
                        var jsonData = JsonConvert.SerializeObject(obData);

                        var response = await client.PostAsync("/home/kpreview", new StringContent(jsonData, Encoding.UTF8, "application/json"));

                        if (!((int)response.StatusCode >= 200 && (int)response.StatusCode <= 300))//If status code is not 20X, error.
                        {
                            // Log(response?.Content?.ReadAsStringAsync()?.Result);
                            throw new Exception(ErrorCodeConstants.UnableToGetPreview);
                        }
                        previewRes = response.Content.ReadAsStringAsync().Result;
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
                var previewTime = watch.ElapsedMilliseconds;
                result = new ProjectPreview
                {
                    HtmlString   = previewRes,
                    CompilerTime = compilerTime,
                    PreviewTime  = previewTime
                };
            }
            return(result);
        }