public override void TerminatePlugin() { base.TerminatePlugin(); IStartupContextSupplier s = (IStartupContextSupplier)_poderosaWorld.GetAdapter(typeof(IStartupContextSupplier)); Flush(); //ファイルの有無に関わらず内部のStorageNodeは更新しとく if (s.PreferenceFileName != null) { string preferenceFileName = s.PreferenceFileName; string tempPreferenceFileName = preferenceFileName + ".tmp"; string prevPreferenceFileName = preferenceFileName + ".prev"; try { using (TextWriter writer = new StreamWriter(tempPreferenceFileName, false, System.Text.Encoding.Default)) { WritePreference(writer); } if (File.Exists(preferenceFileName)) { File.Delete(prevPreferenceFileName); File.Move(preferenceFileName, prevPreferenceFileName); } File.Move(tempPreferenceFileName, preferenceFileName); } catch (Exception ex) { RuntimeUtil.ReportException(ex); } } }
public void InitializeExtension() { IStartupContextSupplier s = (IStartupContextSupplier)_poderosaWorld.GetAdapter(typeof(IStartupContextSupplier)); int index = 0; foreach (IPreferenceSupplier supplier in _extensionPoint.GetExtensions()) { PlugInHost ph = new PlugInHost(this, supplier, s.Preferences, index++); ph.Build(); //Note 遅延読み込みをしてもいいかも _idToHosts[ph.PreferenceSupplier.PreferenceID] = ph; } }
public void WritePreference(TextWriter writer) { IStartupContextSupplier s = (IStartupContextSupplier)_poderosaWorld.GetAdapter(typeof(IStartupContextSupplier)); new TextStructuredTextWriter(writer).Write(s.Preferences); }