mirror of
https://github.com/vczh-libraries/Release.git
synced 2026-05-28 19:30:46 +08:00
...
This commit is contained in:
+4
-3
@@ -43434,7 +43434,7 @@ GuiResourceFolder
|
||||
}
|
||||
}
|
||||
|
||||
void GuiResourceFolder::InitializeResourceFolder(GuiResourcePrecompileContext& context)
|
||||
void GuiResourceFolder::InitializeResourceFolder(GuiResourceInitializeContext& context)
|
||||
{
|
||||
FOREACH(Ptr<GuiResourceItem>, item, items.Values())
|
||||
{
|
||||
@@ -43744,7 +43744,7 @@ GuiResource
|
||||
}
|
||||
}
|
||||
|
||||
void GuiResource::Initialize()
|
||||
void GuiResource::Initialize(GuiResourceUsage usage)
|
||||
{
|
||||
auto precompiledFolder = GetFolder(L"Precompiled");
|
||||
if (!precompiledFolder)
|
||||
@@ -43753,10 +43753,11 @@ GuiResource
|
||||
return;
|
||||
}
|
||||
|
||||
GuiResourcePrecompileContext context;
|
||||
GuiResourceInitializeContext context;
|
||||
context.rootResource = this;
|
||||
context.resolver = new GuiResourcePathResolver(this, workingDirectory);
|
||||
context.targetFolder = precompiledFolder;
|
||||
context.usage = usage;
|
||||
|
||||
vint maxPass = GetResourceResolverManager()->GetMaxInitializePassIndex();
|
||||
for (vint i = 0; i <= maxPass; i++)
|
||||
|
||||
+16
-3
@@ -3363,6 +3363,7 @@ Resource Structure
|
||||
class DocumentModel;
|
||||
class GuiResourcePathResolver;
|
||||
struct GuiResourcePrecompileContext;
|
||||
struct GuiResourceInitializeContext;
|
||||
|
||||
/// <summary>Resource item.</summary>
|
||||
class GuiResourceItem : public GuiResourceNodeBase, public Description<GuiResourceItem>
|
||||
@@ -3430,7 +3431,7 @@ Resource Structure
|
||||
void LoadResourceFolderFromBinary(DelayLoadingList& delayLoadings, stream::internal::Reader& reader, collections::List<WString>& typeNames, collections::List<WString>& errors);
|
||||
void SaveResourceFolderToBinary(stream::internal::Writer& writer, collections::List<WString>& typeNames);
|
||||
void PrecompileResourceFolder(GuiResourcePrecompileContext& context, collections::List<WString>& errors);
|
||||
void InitializeResourceFolder(GuiResourcePrecompileContext& context);
|
||||
void InitializeResourceFolder(GuiResourceInitializeContext& context);
|
||||
public:
|
||||
/// <summary>Create a resource folder.</summary>
|
||||
GuiResourceFolder();
|
||||
@@ -3493,6 +3494,12 @@ Resource Structure
|
||||
/***********************************************************************
|
||||
Resource
|
||||
***********************************************************************/
|
||||
|
||||
enum class GuiResourceUsage
|
||||
{
|
||||
DevelopmentTool,
|
||||
Application,
|
||||
};
|
||||
|
||||
/// <summary>Resource. A resource is a root resource folder that does not have a name.</summary>
|
||||
class GuiResource : public GuiResourceFolder, public Description<GuiResource>
|
||||
@@ -3542,7 +3549,7 @@ Resource
|
||||
void Precompile(collections::List<WString>& errors);
|
||||
|
||||
/// <summary>Initialize a precompiled resource.</summary>
|
||||
void Initialize();
|
||||
void Initialize(GuiResourceUsage usage);
|
||||
|
||||
/// <summary>Get a contained document model using a path like "Packages\Application\Name". If the path does not exists or the type does not match, an exception will be thrown.</summary>
|
||||
/// <returns>The containd resource object.</returns>
|
||||
@@ -3689,6 +3696,12 @@ Resource Type Resolver
|
||||
virtual void Precompile(Ptr<GuiResourceItem> resource, GuiResourcePrecompileContext& context, collections::List<WString>& errors) = 0;
|
||||
};
|
||||
|
||||
/// <summary>Provide a context for resource initializing</summary>
|
||||
struct GuiResourceInitializeContext : GuiResourcePrecompileContext
|
||||
{
|
||||
GuiResourceUsage usage;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Represents a precompiler for resources of a specified type.
|
||||
/// Current resources that needs precompiling:
|
||||
@@ -3706,7 +3719,7 @@ Resource Type Resolver
|
||||
/// <param name="resource">The resource to initializer.</param>
|
||||
/// <param name="context">The context for initializing.</param>
|
||||
/// <param name="errors">All collected errors during loading a resource.</param>
|
||||
virtual void Initialize(Ptr<GuiResourceItem> resource, GuiResourcePrecompileContext& context) = 0;
|
||||
virtual void Initialize(Ptr<GuiResourceItem> resource, GuiResourceInitializeContext& context) = 0;
|
||||
};
|
||||
|
||||
/// <summary>Represents a symbol type for loading a resource without a preload type.</summary>
|
||||
|
||||
@@ -977,12 +977,12 @@ GuiInstanceLoaderManager
|
||||
return GlobalStringKey::Empty;
|
||||
}
|
||||
|
||||
bool SetResource(const WString& name, Ptr<GuiResource> resource)override
|
||||
bool SetResource(const WString& name, Ptr<GuiResource> resource, GuiResourceUsage usage)override
|
||||
{
|
||||
vint index = resources.Keys().IndexOf(name);
|
||||
if (index != -1) return false;
|
||||
|
||||
resource->Initialize();
|
||||
resource->Initialize(usage);
|
||||
resources.Add(name, resource);
|
||||
GetClassesInResource(resource, resource);
|
||||
return true;
|
||||
@@ -1588,7 +1588,7 @@ Compiled Workflow Type Resolver (Script)
|
||||
return 2;
|
||||
}
|
||||
|
||||
void Initialize(Ptr<GuiResourceItem> resource, GuiResourcePrecompileContext& context)override
|
||||
void Initialize(Ptr<GuiResourceItem> resource, GuiResourceInitializeContext& context)override
|
||||
{
|
||||
if (auto compiled = resource->GetContent().Cast<GuiInstanceCompiledWorkflow>())
|
||||
{
|
||||
@@ -1597,7 +1597,10 @@ Compiled Workflow Type Resolver (Script)
|
||||
case 0:
|
||||
if (compiled->type == GuiInstanceCompiledWorkflow::ViewModel)
|
||||
{
|
||||
compiled->Initialize(false);
|
||||
if (context.usage == GuiResourceUsage::DevelopmentTool)
|
||||
{
|
||||
compiled->Initialize(false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
|
||||
@@ -589,7 +589,7 @@ Instance Loader Manager
|
||||
virtual description::ITypeDescriptor* GetTypeDescriptorForType(GlobalStringKey typeName) = 0;
|
||||
virtual void GetVirtualTypes(collections::List<GlobalStringKey>& typeNames) = 0;
|
||||
virtual GlobalStringKey GetParentTypeForVirtualType(GlobalStringKey virtualType) = 0;
|
||||
virtual bool SetResource(const WString& name, Ptr<GuiResource> resource) = 0;
|
||||
virtual bool SetResource(const WString& name, Ptr<GuiResource> resource, GuiResourceUsage usage = GuiResourceUsage::Application) = 0;
|
||||
virtual Ptr<GuiResource> GetResource(const WString& name) = 0;
|
||||
virtual Ptr<GuiInstanceConstructorResult> RunInstanceConstructor(const WString& classFullName, description::Value instance) = 0;
|
||||
};
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user