/// <summary>
        /// Initializes the form and sets event listeners
        /// </summary>
        public MainWindow()
        {
            _config = new Config();

            // Web client setup
            var webClient = new WebClient {
                Encoding = System.Text.Encoding.UTF8
            };

            webClient.Headers.Add("user-agent", $"{_config.ProgramTitle} {_config.ProgramVersion}");
            ServicePointManager.SecurityProtocol =
                SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            // Define event handlers
            ClipboardNotification.ClipboardUpdate += Event_clipboard;
            MouseHook.MouseAction += Event_mouse;

            // Initialize the UI components
            InitializeComponent();

            // Set objects that need to be accessed from outside
            _console = console_window;

            // Object setup
            _settingsWindow = new SettingsWindow(_config, Log);
            _priceManager   = new PriceManager(_config, webClient, Log);
            _priceBox       = new PriceboxWindow();
            var updateWindow = new UpdateWindow(_config, webClient, Log);

            _leagueManager = new LeagueManager(_config, webClient, Log);

            // Set window title
            Title = $"{_config.ProgramTitle} {_config.ProgramVersion}";
            Log($"{_config.ProgramTitle} {_config.ProgramVersion} by Siegrest");

            Task.Run(() =>
            {
                // Check for updates
                updateWindow.Run();
                // Query PoE API for active league list and add them to settings selectors
                UpdateLeagues();
            });
        }