private void ReadFile(string filename)
        {
            try
            {
                if (!VerifyImportArchive(filename))
                {
                    System.Windows.MessageBox.Show("Archive does not contain button data file " + StreamDeckConstants.BUTTON_EXPORT_FILENAME + ". Choose an other file.", "Invalid export file", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                /*
                 * Copy zip to temp folder and work on it there
                 */
                StreamDeckCommon.CleanDCSFPTemporaryFolder();
                var tempFolder = StreamDeckCommon.GetDCSFPTemporaryFolder();
                _extractedFilesFolder = tempFolder + "\\extracted_files";

                if (!Directory.Exists(_extractedFilesFolder))
                {
                    Directory.CreateDirectory(_extractedFilesFolder);
                }

                File.Copy(filename, tempFolder + "\\" + Path.GetFileName(filename));
                filename = tempFolder + "\\" + Path.GetFileName(filename);

                /*
                 * Extract files to folder extracted_files
                 */
                ZipArchiver.ExtractZipFile(filename, _extractedFilesFolder);

                Clear();

                var fileContents = File.ReadAllText(_extractedFilesFolder + "\\" + StreamDeckConstants.BUTTON_EXPORT_FILENAME);

                TranslateJSON(fileContents);

                ShowButtons();
            }
            finally
            {
                Mouse.OverrideCursor = System.Windows.Input.Cursors.Arrow;
            }
        }