protected override bool OnSave(Metadata.SaveContext context, TextBlock block, ref bool skipSave, out string error) { if (!base.OnSave(context, block, ref skipSave, out error)) { return(false); } return(true); }
//static Component LoadComponentFromTextBlockInternal( Metadata.LoadContext overrideContextObject, TextBlock block, string loadedFromFile, //Resource.Instance createdByResource, bool? componentSetEnabled, bool componentCreateHierarchyController, out string error ) //public static Component LoadComponentFromTextBlock( Resource.Instance createdByResource, Metadata.LoadContext overrideContextObject, // bool? componentSetEnabled, bool componentCreateHierarchyController, out string error ) //{ // var block = createdByResource.Owner.LoadedBlock; // var loadedFromFile = createdByResource.Owner.Name; // return LoadComponentFromTextBlockInternal( createdByResource, block, loadedFromFile, overrideContextObject, componentSetEnabled, // componentCreateHierarchyController, out error ); //} //public static Component LoadComponentFromTextBlock( TextBlock block, string loadedFromFile, Metadata.LoadContext overrideContextObject, // bool? componentSetEnabled, bool componentCreateHierarchyController, out string error ) //{ // return LoadComponentFromTextBlockInternal( null, block, loadedFromFile, overrideContextObject, componentSetEnabled, // componentCreateHierarchyController, out error ); //} //public static Component LoadComponentFromTextBlockXX( Resource.Instance ins, Metadata.LoadContext overrideContextObject, //bool? componentSetEnabled, bool componentCreateHierarchyController, out string error ) ////public static Component LoadComponentFromTextBlock( TextBlock block, string loadedFromFile, Metadata.LoadContext overrideContextObject, //// out string error ) //{ // var block = ins.Owner.LoadedBlock; // var loadedFromFile = ins.Owner.Name; // loadedFromFile = VirtualPathUtils.NormalizePath( loadedFromFile ); // Metadata.LoadContext context = overrideContextObject; // if( context == null ) // context = new Metadata.LoadContext(); // context.virtualFileName = loadedFromFile; // error = ""; // if( block.Children.Count != 1 ) // { // //!!!! // Log.Fatal( "impl" ); // } // TextBlock componentBlock = block.Children[ 0 ]; // if( componentBlock.Name != ".component" ) // { // //!!!! // Log.Fatal( "impl" ); // } // if( string.IsNullOrEmpty( componentBlock.Data ) ) // { // //!!!! // Log.Fatal( "impl" ); // } // Metadata.TypeInfo type = MetadataManager.GetType( componentBlock.Data ); // if( type == null ) // { // //!!!! // Log.Fatal( "impl" ); // } // var component = (Component)type.InvokeInstance( null ); // xx xx; // //set ResultObject for resource instance // ins.ResultObject = component; // //create disabled hierarchy controller // if( componentCreateHierarchyController ) // ComponentUtils.CreateHierarchyControllerForRootComponent( component, ins, false );//, true ); // //create context, init tree structure of components // context.rootComponentItem = new Metadata.LoadContext.ComponentItem(); // context.rootComponentItem.textBlock = componentBlock; // LoadContext_InitComponentItemsRecursive( context.rootComponentItem ); // xx xx; // //processing // bool changed; // do // { // LoadContext_ProcessNotCompiledComponentItems( context, out changed ); // } while( changed ); // if( !context.rootComponentItem.loaded ) // { // //!!!! // Log.Fatal( "impl" ); // } // xx xx;//сортировать компоненты где-то // if( componentSetEnabled != null ) // component.Enabled = componentSetEnabled.Value; // //enable hierarchy controller // if( component.HierarchyController != null ) // component.HierarchyController.HierarchyEnabled = true; // xx xx;//всё в этом методе // //!!!!_LoadComponentFromTextBlockInternal // string error4; // if( !component._LoadHierarchy( context, componentBlock, out error4 ) ) // { // //!!!! // Log.Fatal( "impl" ); // //!!!!!? // component = null; // } // xx xx; // string error3; // if( !component._LoadFromTextBlock( context, componentBlock, out error3 ) ) // { // //!!!! // Log.Fatal( "impl" ); // //!!!!!? // component = null; // } // return component; //} //!!!!такой метод полезен или открыть Component._Save //public static bool SaveComponentToTextBlock( Component component, string realFileName, Component.SaveContext overrideContextObject, // out string error ) //{ //} public static bool SaveComponentToFile(Component component, string realFileName, Metadata.SaveContext overrideContextObject, out string error) { realFileName = VirtualPathUtility.NormalizePath(realFileName); Metadata.SaveContext context = overrideContextObject; if (context == null) { context = new Metadata.SaveContext(); } context.realFileName = realFileName; component.HierarchyController?.ProcessDelayedOperations(); //!!!!было //map.fileName = virtualFileName; string realDirectoryName = Path.GetDirectoryName(realFileName); if (!Directory.Exists(realDirectoryName)) { try { Directory.CreateDirectory(realDirectoryName); } catch { error = string.Format("Unable to create directory \"{0}\".", realDirectoryName); return(false); } } TextBlock rootBlock = new TextBlock(); //!!!!!".createdBy" //mapBlock.SetAttribute( ".engineVersion", EngineVersionInformation.Version ); //!!!!_SaveToTextBlockInternal component._SaveToTextBlock(context, rootBlock, out _, out error); if (!string.IsNullOrEmpty(error)) { return(false); } try { using (StreamWriter writer = new StreamWriter(realFileName)) { writer.Write(rootBlock.DumpToString()); } } catch { error = string.Format("Unable to save file \"{0}\".", realFileName); return(false); } //Map.Instance.savedRealFileDirectory = Map.Instance.GetRealFileDirectory(); error = ""; return(true); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public static bool _SaveToTextBlockInternal(Component component, Metadata.SaveContext context, TextBlock parentBlock, out bool skipSave, out string error) { return(component._SaveToTextBlock(context, parentBlock, out skipSave, out error)); }