mirror of
https://github.com/vczh-libraries/Release.git
synced 2026-06-01 06:14:11 +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())
|
FOREACH(Ptr<GuiResourceItem>, item, items.Values())
|
||||||
{
|
{
|
||||||
@@ -43744,7 +43744,7 @@ GuiResource
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiResource::Initialize()
|
void GuiResource::Initialize(GuiResourceUsage usage)
|
||||||
{
|
{
|
||||||
auto precompiledFolder = GetFolder(L"Precompiled");
|
auto precompiledFolder = GetFolder(L"Precompiled");
|
||||||
if (!precompiledFolder)
|
if (!precompiledFolder)
|
||||||
@@ -43753,10 +43753,11 @@ GuiResource
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiResourcePrecompileContext context;
|
GuiResourceInitializeContext context;
|
||||||
context.rootResource = this;
|
context.rootResource = this;
|
||||||
context.resolver = new GuiResourcePathResolver(this, workingDirectory);
|
context.resolver = new GuiResourcePathResolver(this, workingDirectory);
|
||||||
context.targetFolder = precompiledFolder;
|
context.targetFolder = precompiledFolder;
|
||||||
|
context.usage = usage;
|
||||||
|
|
||||||
vint maxPass = GetResourceResolverManager()->GetMaxInitializePassIndex();
|
vint maxPass = GetResourceResolverManager()->GetMaxInitializePassIndex();
|
||||||
for (vint i = 0; i <= maxPass; i++)
|
for (vint i = 0; i <= maxPass; i++)
|
||||||
|
|||||||
+16
-3
@@ -3363,6 +3363,7 @@ Resource Structure
|
|||||||
class DocumentModel;
|
class DocumentModel;
|
||||||
class GuiResourcePathResolver;
|
class GuiResourcePathResolver;
|
||||||
struct GuiResourcePrecompileContext;
|
struct GuiResourcePrecompileContext;
|
||||||
|
struct GuiResourceInitializeContext;
|
||||||
|
|
||||||
/// <summary>Resource item.</summary>
|
/// <summary>Resource item.</summary>
|
||||||
class GuiResourceItem : public GuiResourceNodeBase, public Description<GuiResourceItem>
|
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 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 SaveResourceFolderToBinary(stream::internal::Writer& writer, collections::List<WString>& typeNames);
|
||||||
void PrecompileResourceFolder(GuiResourcePrecompileContext& context, collections::List<WString>& errors);
|
void PrecompileResourceFolder(GuiResourcePrecompileContext& context, collections::List<WString>& errors);
|
||||||
void InitializeResourceFolder(GuiResourcePrecompileContext& context);
|
void InitializeResourceFolder(GuiResourceInitializeContext& context);
|
||||||
public:
|
public:
|
||||||
/// <summary>Create a resource folder.</summary>
|
/// <summary>Create a resource folder.</summary>
|
||||||
GuiResourceFolder();
|
GuiResourceFolder();
|
||||||
@@ -3494,6 +3495,12 @@ Resource Structure
|
|||||||
Resource
|
Resource
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
|
enum class GuiResourceUsage
|
||||||
|
{
|
||||||
|
DevelopmentTool,
|
||||||
|
Application,
|
||||||
|
};
|
||||||
|
|
||||||
/// <summary>Resource. A resource is a root resource folder that does not have a name.</summary>
|
/// <summary>Resource. A resource is a root resource folder that does not have a name.</summary>
|
||||||
class GuiResource : public GuiResourceFolder, public Description<GuiResource>
|
class GuiResource : public GuiResourceFolder, public Description<GuiResource>
|
||||||
{
|
{
|
||||||
@@ -3542,7 +3549,7 @@ Resource
|
|||||||
void Precompile(collections::List<WString>& errors);
|
void Precompile(collections::List<WString>& errors);
|
||||||
|
|
||||||
/// <summary>Initialize a precompiled resource.</summary>
|
/// <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>
|
/// <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>
|
/// <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;
|
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>
|
/// <summary>
|
||||||
/// Represents a precompiler for resources of a specified type.
|
/// Represents a precompiler for resources of a specified type.
|
||||||
/// Current resources that needs precompiling:
|
/// Current resources that needs precompiling:
|
||||||
@@ -3706,7 +3719,7 @@ Resource Type Resolver
|
|||||||
/// <param name="resource">The resource to initializer.</param>
|
/// <param name="resource">The resource to initializer.</param>
|
||||||
/// <param name="context">The context for initializing.</param>
|
/// <param name="context">The context for initializing.</param>
|
||||||
/// <param name="errors">All collected errors during loading a resource.</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>
|
/// <summary>Represents a symbol type for loading a resource without a preload type.</summary>
|
||||||
|
|||||||
@@ -977,12 +977,12 @@ GuiInstanceLoaderManager
|
|||||||
return GlobalStringKey::Empty;
|
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);
|
vint index = resources.Keys().IndexOf(name);
|
||||||
if (index != -1) return false;
|
if (index != -1) return false;
|
||||||
|
|
||||||
resource->Initialize();
|
resource->Initialize(usage);
|
||||||
resources.Add(name, resource);
|
resources.Add(name, resource);
|
||||||
GetClassesInResource(resource, resource);
|
GetClassesInResource(resource, resource);
|
||||||
return true;
|
return true;
|
||||||
@@ -1588,7 +1588,7 @@ Compiled Workflow Type Resolver (Script)
|
|||||||
return 2;
|
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>())
|
if (auto compiled = resource->GetContent().Cast<GuiInstanceCompiledWorkflow>())
|
||||||
{
|
{
|
||||||
@@ -1597,7 +1597,10 @@ Compiled Workflow Type Resolver (Script)
|
|||||||
case 0:
|
case 0:
|
||||||
if (compiled->type == GuiInstanceCompiledWorkflow::ViewModel)
|
if (compiled->type == GuiInstanceCompiledWorkflow::ViewModel)
|
||||||
{
|
{
|
||||||
compiled->Initialize(false);
|
if (context.usage == GuiResourceUsage::DevelopmentTool)
|
||||||
|
{
|
||||||
|
compiled->Initialize(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
|||||||
@@ -589,7 +589,7 @@ Instance Loader Manager
|
|||||||
virtual description::ITypeDescriptor* GetTypeDescriptorForType(GlobalStringKey typeName) = 0;
|
virtual description::ITypeDescriptor* GetTypeDescriptorForType(GlobalStringKey typeName) = 0;
|
||||||
virtual void GetVirtualTypes(collections::List<GlobalStringKey>& typeNames) = 0;
|
virtual void GetVirtualTypes(collections::List<GlobalStringKey>& typeNames) = 0;
|
||||||
virtual GlobalStringKey GetParentTypeForVirtualType(GlobalStringKey virtualType) = 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<GuiResource> GetResource(const WString& name) = 0;
|
||||||
virtual Ptr<GuiInstanceConstructorResult> RunInstanceConstructor(const WString& classFullName, description::Value instance) = 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