public FormTriggersConfig(
     [NotNull] TriggerManager triggerManager, 
     [NotNull] ISoundManager soundManager,
     [NotNull] IWindowManager windowManager,
     [NotNull] IExporterFactory exporterFactory,
     [NotNull] IImporterFactory importerFactory)
 {
     if (triggerManager == null) throw new ArgumentNullException(nameof(triggerManager));
     if (soundManager == null) throw new ArgumentNullException(nameof(soundManager));
     if (windowManager == null) throw new ArgumentNullException(nameof(windowManager));
     if (exporterFactory == null) throw new ArgumentNullException(nameof(exporterFactory));
     if (importerFactory == null) throw new ArgumentNullException(nameof(importerFactory));
     InitializeComponent();
     this.triggerManager = triggerManager;
     this.soundManager = soundManager;
     this.windowManager = windowManager;
     this.exporterFactory = exporterFactory;
     this.importerFactory = importerFactory;
     BuildFormText();
     UpdateMutedState();
     TriggersListView.SetObjects(this.triggerManager.Triggers);
     timer1.Enabled = true;
 }
 public void BeginImport(IImporterFactory importerFactory, string path, string message)
 {
     throw new NotImplementedException();
 }
 public void BeginImport(IImporterFactory importerFactory, string path, string message)
 {
 }
        public TriggerManager(
            [NotNull] string characterName,
            [NotNull] IWurmApi wurmApi,
            [NotNull] ISoundManager soundManager,
            [NotNull] ILogger logger,
            [NotNull] ITrayPopups trayPopups,
            [NotNull] IActiveTriggersFactory activeTriggersFactory,
            [NotNull] IWindowManager windowManager,
            [NotNull] TriggersDataContext triggersDataContext,
            [NotNull] IExporterFactory exporterFactory,
            [NotNull] IImporterFactory importerFactory)
        {
            if (characterName == null)
            {
                throw new ArgumentNullException(nameof(characterName));
            }
            if (wurmApi == null)
            {
                throw new ArgumentNullException(nameof(wurmApi));
            }
            if (soundManager == null)
            {
                throw new ArgumentNullException(nameof(soundManager));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (trayPopups == null)
            {
                throw new ArgumentNullException(nameof(trayPopups));
            }
            if (activeTriggersFactory == null)
            {
                throw new ArgumentNullException(nameof(activeTriggersFactory));
            }
            if (windowManager == null)
            {
                throw new ArgumentNullException(nameof(windowManager));
            }
            if (triggersDataContext == null)
            {
                throw new ArgumentNullException(nameof(triggersDataContext));
            }
            if (exporterFactory == null)
            {
                throw new ArgumentNullException(nameof(exporterFactory));
            }
            if (importerFactory == null)
            {
                throw new ArgumentNullException(nameof(importerFactory));
            }

            this.CharacterName         = characterName;
            this.wurmApi               = wurmApi;
            this.soundManager          = soundManager;
            this.logger                = logger;
            this.trayPopups            = trayPopups;
            this.activeTriggersFactory = activeTriggersFactory;
            this.windowManager         = windowManager;
            this.exporterFactory       = exporterFactory;
            this.importerFactory       = importerFactory;
            this.triggersConfig        = triggersDataContext.CharacterTriggersConfigs.GetOrCreate(characterName);

            activeTriggers = activeTriggersFactory.CreateActiveTriggers(CharacterName);
            activeTriggers.MutedEvaluator = GetMutedEvaluator();

            //create control for Module UI
            controlUi = new UcPlayerTriggersController();

            //create this notifier UI
            triggersConfigUi = new FormTriggersConfig(this, soundManager, windowManager, exporterFactory, importerFactory);

            UpdateMutedState();
            controlUi.label1.Text            = CharacterName;
            controlUi.buttonMute.Click      += ToggleMute;
            controlUi.buttonConfigure.Click += Configure;
            controlUi.buttonRemove.Click    += StopAndRemove;

            try
            {
                wurmApi.LogsMonitor.Subscribe(this.CharacterName, LogType.AllLogs, OnNewLogEvents);
            }
            catch (DataNotFoundException exception)
            {
                logger.Warn(exception, $"Unable to subscribe LogsMonitor events for character {this.CharacterName}.");
            }
        }