示例#1
0
 public ViewExplorer(IViewFolder viewFolder, string viewPath)
 {
     _viewLoader = new ViewLoader {
         ViewFolder = viewFolder, SyntaxProvider = new DefaultSyntaxProvider(new ParserSettings())
     };
     _viewPath = viewPath;
 }
示例#2
0
        protected override void beforeEach()
        {
            const string viewPath    = "/_Package1_/Handlers/Models/SerieSL.spark";
            var          appRoot     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Templates");
            var          packageRoot = Path.Combine(appRoot, "App", "fubu-packages", "Package1", "WebContent");

            var binding1       = new Template(Path.Combine(packageRoot, "Handlers", "Shared", "bindings.xml"), packageRoot, "Package1");
            var binding2       = new Template(Path.Combine(appRoot, "Shared", "bindings.xml"), appRoot, TemplateConstants.HostOrigin);
            var viewPathPolicy = new ViewPathPolicy <ITemplate>();

            viewPathPolicy.Apply(binding1);
            viewPathPolicy.Apply(binding2);

            _viewFolder = MockFor <IViewFolder>();
            _viewFolder.Expect(x => x.GetViewSource(binding1.ViewPath)).Return(new FileSystemViewFile(binding1.FilePath));
            _viewFolder.Expect(x => x.GetViewSource(binding2.ViewPath)).Return(new FileSystemViewFile(binding2.FilePath));

            _request = new BindingRequest(_viewFolder)
            {
                ViewPath = viewPath
            };

            _templateRegistry = MockFor <ISparkTemplateRegistry>();
            _templateRegistry.Expect(x => x.BindingsForView(viewPath)).Return(new[] { binding1, binding2 });
        }
示例#3
0
 public static void ForEachViewFolder(IViewFolder parentFolder, Game game, ViewFolderProcessing proc)
 {
     foreach (ViewFolder subFolder in parentFolder.SubFolders)
     {
         proc(subFolder, game);
     }
 }
示例#4
0
 public static void ForEachViewFolder(IViewFolder parentFolder, Game game, ViewFolderProcessing proc)
 {
     foreach (ViewFolder subFolder in parentFolder.SubFolders)
     {
         proc(subFolder, game);
     }
 }
示例#5
0
        public ThemedViewFactory()
        {
            var container = SparkEngineStarter.CreateContainer();

            _defaultViewFolder = container.GetService <IViewFolder>();
            _defaultEngine     = container.GetService <IViewEngine>();
        }
示例#6
0
 public static void SetRootViewFolder(Game game, IViewFolder folder)
 {
     ViewFolder default_folder = (ViewFolder)folder;
     if (default_folder != null)
     {
         game.RootViewFolder = default_folder;
     }
 }
示例#7
0
 private static LocateResult Result(IViewFolder viewFolder, string path)
 {
     return(new LocateResult
     {
         Path = path,
         ViewFile = viewFolder.GetViewSource(path)
     });
 }
 private static LocateResult Result(IViewFolder viewFolder, string path)
 {
     return new LocateResult
     {
         Path = path,
         ViewFile = viewFolder.GetViewSource(path)
     };
 }
        private static string ReadContents(IViewFolder adapter, string path)
        {
            Assert.That(adapter.HasView(path), Is.True);
            var source = adapter.GetViewSource(path);
            var stream = source.OpenViewStream();
            var reader = new StreamReader(stream);

            return(reader.ReadToEnd());
        }
示例#10
0
        public static void SetRootViewFolder(Game game, IViewFolder folder)
        {
            ViewFolder default_folder = (ViewFolder)folder;

            if (default_folder != null)
            {
                game.RootViewFolder = default_folder;
            }
        }
示例#11
0
 static string ReadToEnd(IViewFolder viewFolder, string path)
 {
     using (var stream = viewFolder.GetViewSource(path).OpenViewStream())
     {
         using (var reader = new StreamReader(stream))
         {
             return(reader.ReadToEnd());
         }
     }
 }
        // end-workaround
        public ThemedViewFactory()
        {
            var container = SparkEngineStarter.CreateContainer();
            _defaultViewFolder = container.GetService<IViewFolder>();
            _defaultEngine = container.GetService<IViewEngine>();

            // workaround
            _defaultViews = CompiledViewHolder.Current;
            // end-workaround
        }
示例#13
0
        private ISparkView CreateView(IViewFolder viewFolder, string template)
        {
            var settings = new SparkSettings().SetPageBaseType(typeof(StubSparkView));

            var engine = new SparkViewEngine(settings)
            {
                ViewFolder = viewFolder
            };

            return(engine.CreateInstance(new SparkViewDescriptor().AddTemplate(template)));
        }
示例#14
0
		}

		public View CreateNewView(IViewFolder createInFolder)
		{
			if (createInFolder == null)
			{
				createInFolder = _views.RootFolder;
			}
			View newView = new View();
			newView.ID = FindAndAllocateAvailableViewID();
			newView.Name = "View" + newView.ID;
			createInFolder.Views.Add(newView);
			NotifyClientsViewsUpdated();
示例#15
0
        public void should_be_able_to_change_view_source_folder_on_the_fly()
        {
            var replacement = MockRepository.GenerateStub <IViewFolder>();

            IViewFolder existing = _factory.ViewFolder;

            existing.ShouldNotBeTheSameAs(replacement);
            existing.ShouldBeTheSameAs(_factory.ViewFolder);

            _factory.ViewFolder = replacement;
            replacement.ShouldBeTheSameAs(_factory.ViewFolder);
            existing.ShouldNotBeTheSameAs(_factory.ViewFolder);
        }
示例#16
0
        public override IEnumerable<Binding> GetBindings(IViewFolder viewFolder)
        {
            if (viewFolder.HasView("bindings.xml") == false)
                return new Binding[0];

            var file = viewFolder.GetViewSource("bindings.xml");
            using (var stream = file.OpenViewStream())
            {
                using (var reader = new StreamReader(stream))
                {
                    return LoadStandardMarkup(reader);
                }
            }
        }
示例#17
0
            public LocateResult LocateMasterFile(IViewFolder viewFolder, string masterName)
            {
                var currentFolder = Path.GetDirectoryName(Path.Combine(_rootPath, _virtualPath.TrimStart('\\')));
                var masterPath = Path.Combine(currentFolder, masterName);
                if (!File.Exists(masterPath))
                {
                    masterPath = Path.Combine(_rootPath, masterName);
                }

                return new LocateResult()
                {
                    Path = masterPath.Replace(_rootPath, "").TrimStart('\\')
                };
            }
示例#18
0
        public void Init()
        {
            viewFolder = MockRepository.GenerateMock <IViewFolder>();
            viewFolder.Stub(x => x.ListViews("home")).Return(new[] { "file.spark", "other.spark", "_comment.spark" });
            viewFolder.Stub(x => x.ListViews("Home")).Return(new[] { "file.spark", "other.spark", "_comment.spark" });
            viewFolder.Stub(x => x.ListViews("Account")).Return(new[] { "index.spark" });
            viewFolder.Stub(x => x.ListViews("Shared")).Return(new[] { "layout.spark", "_header.spark", "default.spark", "_footer.spark" });
            viewFolder.Stub(x => x.ListViews("")).IgnoreArguments().Return(new string[0]);

            syntaxProvider = MockRepository.GenerateMock <ISparkSyntaxProvider>();

            loader = new ViewLoader {
                ViewFolder = viewFolder, SyntaxProvider = syntaxProvider
            };
        }
        private void SetViewFolder(IViewFolder value)
        {
            IViewFolder viewFolder = value;

            foreach (IViewFolderSettings settings in this.Settings.ViewFolders)
            {
                IViewFolder folder2 = this.ActivateViewFolder(settings);
                if (!string.IsNullOrEmpty(settings.Subfolder))
                {
                    folder2 = new SubViewFolder(folder2, settings.Subfolder);
                }
                viewFolder = viewFolder.Append(folder2);
            }
            this._viewFolder = viewFolder;
        }
示例#20
0
        private static string DetectLayout(string template, IViewFolder viewFolder)
        {
            var possibleLayouts = new[]
            {
                Configuration.Configure.Views.Layout ?? string.Empty,
                "layouts/application.spark",
                "views/layouts/application.spark",
                "views/application.spark",
                "views/application.spark",
                Path.Combine(Path.GetDirectoryName(template), "layouts/application.spark"),
                Path.Combine(Path.GetDirectoryName(template), "application.spark")
            };

            return(possibleLayouts.First(x => viewFolder.HasView(x)));
        }
示例#21
0
        private void SetViewFolder(IViewFolder value)
        {
            var aggregateViewFolder = value;

            foreach (var viewFolderSettings in Settings.ViewFolders)
            {
                IViewFolder viewFolder = ActivateViewFolder(viewFolderSettings);
                if (!string.IsNullOrEmpty(viewFolderSettings.Subfolder))
                {
                    viewFolder = new SubViewFolder(viewFolder, viewFolderSettings.Subfolder);
                }
                aggregateViewFolder = aggregateViewFolder.Append(viewFolder);
            }
            _viewFolder = aggregateViewFolder;
        }
示例#22
0
        public override IEnumerable <Binding> GetBindings(IViewFolder viewFolder)
        {
            if (viewFolder.HasView("bindings.xml") == false)
            {
                return(new Binding[0]);
            }

            var file = viewFolder.GetViewSource("bindings.xml");

            using (var stream = file.OpenViewStream())
            {
                using (var reader = new StreamReader(stream))
                {
                    return(LoadStandardMarkup(reader));
                }
            }
        }
 public LocateResult LocateMasterFile(IViewFolder viewFolder, string masterName)
 {
     if (viewFolder.HasView("Layouts\\" + masterName + ".spark"))
     {
         return Result(viewFolder, "Layouts\\" + masterName + ".spark");
     }
     if (viewFolder.HasView("Shared\\" + masterName + ".spark"))
     {
         return Result(viewFolder, "Shared\\" + masterName + ".spark");
     }
     return new LocateResult
            {
                SearchedLocations = new[]
                                    {
                                        "Layouts\\" + masterName + ".spark",
                                        "Shared\\" + masterName + ".spark"
                                    }
            };
 }
示例#24
0
        protected SourceContext CreateSourceContext(string viewPath, IViewFolder viewFolder)
        {
            var viewSource = viewFolder.GetViewSource(viewPath);

            if (viewSource == null)
                throw new FileNotFoundException("View file not found", viewPath);

            using (var stream = viewSource.OpenViewStream())
            {
                string fileName = viewPath;
                if (stream is FileStream)
                    fileName = ((FileStream) stream).Name;

                using (TextReader reader = new StreamReader(stream))
                {
                    return new SourceContext(reader.ReadToEnd(), viewSource.LastModified, fileName);
                }
            }
        }
        public LocateResult LocateMasterFile(IViewFolder viewFolder, string masterName)
        {
            string str  = masterName + Constants.DotSpark;
            string path = Path.Combine(Constants.Layouts, str);

            if (viewFolder.HasView(path))
            {
                return(Result(viewFolder, path));
            }
            string str3 = Path.Combine(Constants.Shared, str);

            if (viewFolder.HasView(str3))
            {
                return(Result(viewFolder, str3));
            }
            return(new LocateResult {
                SearchedLocations = new string[] { path, str3 }
            });
        }
示例#26
0
        public IList<string> FindPartialFiles(string viewPath, IViewFolder viewFolder)
        {
            var results = new List<string>();

            string controllerPath = Path.GetDirectoryName(viewPath);
            foreach (var view in viewFolder.ListViews(controllerPath))
            {
                string baseName = Path.GetFileNameWithoutExtension(view);
                if (baseName.StartsWith("_"))
                    results.Add(baseName.Substring(1));
            }
            foreach (var view in viewFolder.ListViews("Shared"))
            {
                string baseName = Path.GetFileNameWithoutExtension(view);
                if (baseName.StartsWith("_"))
                    results.Add(baseName.Substring(1));
            }
            return results;
        }
示例#27
0
 public LocateResult LocateMasterFile(IViewFolder viewFolder, string masterName)
 {
     if (viewFolder.HasView("Layouts\\" + masterName + ".spark"))
     {
         return(Result(viewFolder, "Layouts\\" + masterName + ".spark"));
     }
     if (viewFolder.HasView("Shared\\" + masterName + ".spark"))
     {
         return(Result(viewFolder, "Shared\\" + masterName + ".spark"));
     }
     return(new LocateResult
     {
         SearchedLocations = new[]
         {
             "Layouts\\" + masterName + ".spark",
             "Shared\\" + masterName + ".spark"
         }
     });
 }
示例#28
0
 // Copied from AGS.Native
 public static int CountViews(IViewFolder folder)
 {
     int highestViewNumber = 0;
     foreach (ViewFolder subFolder in folder.SubFolders)
     {
         int folderView = CountViews(subFolder);
         if (folderView > highestViewNumber)
         {
             highestViewNumber = folderView;
         }
     }
     foreach (View view in folder.Views)
     {
         if (view.ID > highestViewNumber)
         {
             highestViewNumber = view.ID;
         }
     }
     return highestViewNumber;
 }
示例#29
0
        public LocateResult LocateMasterFile(IViewFolder viewFolder, string masterName)
        {
            var masterFile = masterName + Constants.DotSpark;

            var layoutsMaster = Path.Combine(Constants.Layouts, masterFile);
            if (viewFolder.HasView(layoutsMaster))
            {
                return Result(viewFolder, layoutsMaster);
            }

            var sharedMaster = Path.Combine(Constants.Shared, masterFile);
            if (viewFolder.HasView(sharedMaster))
            {
                return Result(viewFolder, sharedMaster);
            }

            return new LocateResult
            {
                SearchedLocations = new[] { layoutsMaster, sharedMaster }
            };
        }
示例#30
0
        // Copied from AGS.Native
        public static int CountViews(IViewFolder folder)
        {
            int highestViewNumber = 0;

            foreach (ViewFolder subFolder in folder.SubFolders)
            {
                int folderView = CountViews(subFolder);
                if (folderView > highestViewNumber)
                {
                    highestViewNumber = folderView;
                }
            }
            foreach (View view in folder.Views)
            {
                if (view.ID > highestViewNumber)
                {
                    highestViewNumber = view.ID;
                }
            }
            return(highestViewNumber);
        }
        public static SourceContext CreateSourceContext(string viewPath, IViewFolder viewFolder)
        {
            SourceContext context;
            IViewFile     viewSource = viewFolder.GetViewSource(viewPath);

            if (viewSource == null)
            {
                throw new FileNotFoundException("View file not found", viewPath);
            }
            using (Stream stream = viewSource.OpenViewStream())
            {
                string fileName = viewPath;
                if (stream is FileStream)
                {
                    fileName = ((FileStream)stream).Name;
                }
                using (TextReader reader = new StreamReader(stream))
                {
                    context = new SourceContext(reader.ReadToEnd(), viewSource.LastModified, fileName);
                }
            }
            return(context);
        }
示例#32
0
        public LocateResult LocateMasterFile(IViewFolder viewFolder, string masterName)
        {
            var masterFile = masterName + Constants.DotSpark;

            var layoutsMaster = Path.Combine(Constants.Layouts, masterFile);

            if (viewFolder.HasView(layoutsMaster))
            {
                return(Result(viewFolder, layoutsMaster));
            }

            var sharedMaster = Path.Combine(Constants.Shared, masterFile);

            if (viewFolder.HasView(sharedMaster))
            {
                return(Result(viewFolder, sharedMaster));
            }

            return(new LocateResult
            {
                SearchedLocations = new[] { layoutsMaster, sharedMaster }
            });
        }
示例#33
0
 public static IViewFolder Append(this IViewFolder viewFolder, IViewFolder additional)
 {
     return new CombinedViewFolder(viewFolder, additional);
 }
示例#34
0
        private ISparkView CreateView(IViewFolder viewFolder, string template)
        {
            CompiledViewHolder.Current = new CompiledViewHolder();

            var settings = new SparkSettings().SetPageBaseType(typeof(StubSparkView));

            var engine = new SparkViewEngine(settings)
                             {
                                 ViewFolder = viewFolder
                             };

            return engine.CreateInstance(new SparkViewDescriptor().AddTemplate(template));
        }
 static string ReadToEnd(IViewFolder viewFolder, string path)
 {
     using (var stream = viewFolder.GetViewSource(path).OpenViewStream())
     {
         using (var reader = new StreamReader(stream))
         {
             return reader.ReadToEnd();
         }
     }
 }
示例#36
0
        private void SetViewFolder(IViewFolder value)
        {
            var aggregateViewFolder = value;
            foreach (var viewFolderSettings in Settings.ViewFolders)
            {
                IViewFolder viewFolder = ActivateViewFolder(viewFolderSettings);
                if (!string.IsNullOrEmpty(viewFolderSettings.Subfolder))
                    viewFolder = new SubViewFolder(viewFolder, viewFolderSettings.Subfolder);
                aggregateViewFolder = aggregateViewFolder.Append(viewFolder);

            }
            _viewFolder = aggregateViewFolder;
        }
        public static IViewFolder AddLayoutsPath(this IViewFolder viewFolder, string virtualPath)
        {
            SubViewFolder additional = new SubViewFolder(new VirtualPathProviderViewFolder(virtualPath), "Layouts");

            return(viewFolder.Append(additional));
        }
 public static IViewFolder Append(this IViewFolder viewFolder, IViewFolder additional)
 {
     return(new CombinedViewFolder(viewFolder, additional));
 }
示例#39
0
 public ThemedViewFactory()
 {
     var container = SparkEngineStarter.CreateContainer();
     _defaultViewFolder = container.GetService<IViewFolder>();
     _defaultEngine = container.GetService<IViewEngine>();
 }
示例#40
0
 public SubViewFolder(IViewFolder viewFolder, string subFolder)
 {
     _viewFolder = viewFolder;
     _subFolder = subFolder.Replace('/', '\\');
 }
示例#41
0
 public bool WriteViews(IViewFolder folder, Game game, CompileMessages errors)
 {
     if (writer == null)
     {
         errors.Add(new CompileError("Could not write views: Invalid stream (NULL)"));
         return false;
     }
     foreach (View view in views)
     {
         // views are not always sequential, so we may have some null entries;
         // but even in that case we must write number of loops (0) to conform
         // to the data format
         short numLoops = (short)(view != null ? view.Loops.Count : 0);
         writer.Write(numLoops);
         for (int i = 0; i < numLoops; ++i)
         {
             short numFrames = (short)view.Loops[i].Frames.Count;
             writer.Write(numFrames);
             writer.Write(view.Loops[i].RunNextLoop ? NativeConstants.LOOPFLAG_RUNNEXTLOOP : 0);
             for (int j = 0; j < numFrames; ++j)
             {
                 ViewFrame frame = view.Loops[i].Frames[j];
                 writer.Write(frame.Image);
                 writer.Write((short)0); // unused x-offset
                 writer.Write((short)0); // unused y-offset
                 writer.Write((short)frame.Delay);
                 writer.Write((short)0); // struct alignment padding
                 writer.Write(frame.Flipped ? NativeConstants.VFLG_FLIPSPRITE : 0);
                 writer.Write(frame.Sound > 0 ? game.GetAudioArrayIndexFromAudioClipIndex(frame.Sound) : -1);
                 writer.Write(0); // unused reservedForFuture[0]
                 writer.Write(0); // unused reservedForFuture[1]
             }
         }
     }
     return true;
 }
 public VirtualPathCompatableViewFolder(string basePath)
 {
     _base = new FileSystemViewFolder(basePath);
 }
示例#43
0
        public void Init()
        {
            viewFolder = MockRepository.GenerateMock<IViewFolder>();
            viewFolder.Stub(x => x.ListViews("home")).Return(new[] { "file.spark", "other.spark", "_comment.spark" });
            viewFolder.Stub(x => x.ListViews("Home")).Return(new[] { "file.spark", "other.spark", "_comment.spark" });
            viewFolder.Stub(x => x.ListViews("Account")).Return(new[] { "index.spark" });
            viewFolder.Stub(x => x.ListViews("Shared")).Return(new[] { "layout.spark", "_header.spark", "default.spark", "_footer.spark" });
            viewFolder.Stub(x => x.ListViews("")).IgnoreArguments().Return(new string[0]);

            syntaxProvider = MockRepository.GenerateMock<ISparkSyntaxProvider>();

            loader = new ViewLoader { ViewFolder = viewFolder, SyntaxProvider = syntaxProvider };
        }
示例#44
0
 public abstract IEnumerable<Binding> GetBindings(IViewFolder viewFolder);
 public VirtualPathCompatableViewFolder(string basePath)
 {
     _base = new FileSystemViewFolder(basePath);
 }
示例#46
0
 public CombinedViewFolder(IViewFolder first, IViewFolder second)
 {
     _first  = first;
     _second = second;
 }
示例#47
0
 public CombinedViewFolder(IViewFolder first, IViewFolder second)
 {
     _first = first;
     _second = second;
 }
示例#48
0
 public Folder(IViewFolder viewFolder)
 {
     _viewFolder = viewFolder;
 }
示例#49
0
 public void PopulateViews(IViewFolder folder, Game game)
 {
     FolderHelper.ForEachViewFolder(folder, game, new FolderHelper.ViewFolderProcessing(PopulateViews));
     foreach (View view in folder.Views)
     {
         views[view.ID - 1] = view;
     }
 }
示例#50
0
 private static string ReadContents(IViewFolder adapter, string path)
 {
     Assert.That(adapter.HasView(path), Is.True);
     var source = adapter.GetViewSource(path);
     var stream = source.OpenViewStream();
     var reader = new StreamReader(stream);
     return reader.ReadToEnd();
 }
示例#51
0
 public BindingRequest(IViewFolder viewFolder)
 {
     ViewFolder = viewFolder;
     ViewPath   = string.Empty;
 }
 public static IViewFolder ApplySettings(this IViewFolder viewFolder, ISparkSettings settings)
 {
     return(viewFolder);
 }
示例#53
0
文件: Game.cs 项目: StormyDay/ags
 public View CreateNewView(IViewFolder createInFolder)
 {
     if (createInFolder == null)
     {
         createInFolder = _views;
     }
     View newView = new View();
     newView.ID = FindAndAllocateAvailableViewID();
     newView.Name = "View" + newView.ID;
     createInFolder.Views.Add(newView);
     NotifyClientsViewsUpdated();
     return newView;
 }
示例#54
0
 public abstract IEnumerable <Binding> GetBindings(IViewFolder viewFolder);
 public CombinedViewFolder(IViewFolder first, IViewFolder second)
 {
     this._first  = first;
     this._second = second;
 }
示例#56
0
 public Folder(IViewFolder viewFolder)
 {
     _viewFolder = viewFolder;
 }
示例#57
0
 public SubViewFolder(IViewFolder viewFolder, string subFolder)
 {
     _viewFolder = viewFolder;
     _subFolder = subFolder.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
 }