public PluginInfo Initialise(IntPtr apiInterfacePtr)
        {
            try
            {
                _mbApiInterface = new MusicBeeApiInterface();
                _mbApiInterface.Initialise(apiInterfacePtr);
                _about.PluginInfoVersion = PluginInfoVersion;
                _about.Name              = MusicBeeExporterConstants.Name;
                _about.Description       = MusicBeeExporterConstants.Description;
                _about.Author            = MusicBeeExporterConstants.Author;
                _about.TargetApplication =
                    MusicBeeExporterConstants
                    .TargetApplication;
                _about.Type                 = PluginType.General;
                _about.VersionMajor         = MusicBeeExporterConstants.VersionMajor;
                _about.VersionMinor         = MusicBeeExporterConstants.VersionMinor;
                _about.Revision             = MusicBeeExporterConstants.Revision;
                _about.MinInterfaceVersion  = MinInterfaceVersion;
                _about.MinApiRevision       = MinApiRevision;
                _about.ReceiveNotifications =
                    ReceiveNotificationFlags.PlayerEvents | ReceiveNotificationFlags.TagEvents;
                _about.ConfigurationPanelHeight =
                    MusicBeeExporterConstants.ConfigurationPanelHeight;

                // Initialize the plugin after music bee api interface is initialized and the PersistentStoragePath is accessible
                IPersistenceSettings persistenceSettings = new PersistenceSettings
                {
                    MusicBeeAllocatedStoragePath = _mbApiInterface.Setting_GetPersistentStoragePath()
                };


                // Create Plugin Storage folder
                Directory.CreateDirectory(persistenceSettings.PluginStorageDirectory);

                _repo = new Persistence(persistenceSettings);

                // Load exporter settings if it exists, otherwise create a new settings file.
                var settingJson = _repo.LoadPluginSettings();

                if (!string.IsNullOrWhiteSpace(settingJson))
                {
                    _pluginSettings = JsonConvert.DeserializeObject <MusicBeeExporterSettings>(settingJson);
                }
                else
                {
                    _pluginSettings = new MusicBeeExporterSettings(persistenceSettings);
                    _repo.SavePluginSettings(_pluginSettings);
                }

                CreateMenuItem();
            }
            catch (Exception ex)
            {
                UIHelper.DisplayExceptionDialog(ex);
            }

            return(_about);
        }
        /// <summary>
        ///     Saves the plugin settings json string into <see cref="PersistenceSettings.PluginStorageDirectory" />
        /// </summary>
        public void SavePluginSettings(IMusicBeeExporterSettings settings)
        {
            var customSettingJson = JsonConvert.SerializeObject(settings, Formatting.Indented);

            using (var sw = new StreamWriter(_persistenceSettings.MusicBeeExporterSettingsFilePath, false))
            {
                sw.Write(customSettingJson);
            }
        }
Exemplo n.º 3
0
 public SettingsForm(IMusicBeeExporterSettings settings, IPersistence repo)
 {
     _settings = settings;
     _repo     = repo;
     InitializeComponent();
 }
 public GenerateCustomizedOutputForm(IMusicBeeExporterSettings settings)
 {
     _settings = settings;
     InitializeComponent();
 }