private void btnDeserialize_Click(object sender, RoutedEventArgs e)
        {
            if (comboBox.SelectedItem == null)
            {
                MessageBox.Show("Choose deserialization type", "Deserialization");
                return;
            }

            var      type = comboBox.Text;
            DishList list;

            switch (type)
            {
            case "XML":
                list = Serializator.XMLDeserialize();
                break;

            case "Binary":
                list = Serializator.BinaryDeserialize();
                break;

            default: return;
            }

            if (list != null)
            {
                Menu = list;
                RefreshMenuGrid(dishGrid, Menu);
                MessageBox.Show("Successfully deserialized", "Deserialization");
            }
            else
            {
                MessageBox.Show("Deserialization error", "Deserialization");
            }
        }
        private void btnSerialize_Click(object sender, RoutedEventArgs e)
        {
            if (comboBox.SelectedItem == null)
            {
                MessageBox.Show("Choose serialization type", "Serialization");
                return;
            }
            var    type = comboBox.Text;
            string path, msg = string.Empty;

            switch (type)
            {
            case "XML":
                path = Serializator.XMLSerialize(Menu);
                break;

            case "Binary":
                path = Serializator.BinarySerialize(Menu);
                break;

            default: return;
            }
            msg = "Successfully serialized.";
            if (path == null)
            {
                msg = "Serialization error";
            }
            else if (ChosenPlugin != null && UsePlugins)
            {
                try
                {
                    ChosenPlugin.Compress(path);
                    msg = "Successfully serialized and compressed";
                }
                catch (Exception ex)
                {
                    msg = "Compression error: " + ex.Message;
                }
            }
            MessageBox.Show(msg, "Serialization");
        }
        private void btnOpen_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog fileDlg = new OpenFileDialog();

            fileDlg.Filter = "Archive files|*.zip;*.gz";
            fileDlg.ShowDialog();
            string path = fileDlg.FileName;

            if (string.IsNullOrEmpty(path))
            {
                return;
            }
            if (PluginList.Count == 0)
            {
                var result = MessageBox.Show("Plugins cannot be found. Please choose plugin directory.", "Error", MessageBoxButton.YesNo);
                if (result != MessageBoxResult.Yes)
                {
                    return;
                }
                FillPluginList();
            }
            else
            {
                string msg = string.Empty;
                foreach (IPlugin plugin in PluginList)
                {
                    if (plugin.ArchiveType == Path.GetExtension(path))
                    {
                        try
                        {
                            string resPath = plugin.Decompress(path);
                            path = Path.GetFullPath(resPath);
                            var      ext  = Path.GetExtension(path);
                            DishList list = null;
                            switch (ext)
                            {
                            case ".dat":
                                list = Serializator.BinaryDeserialize();
                                break;

                            case ".xml":
                                list = Serializator.XMLDeserialize();
                                break;
                            }

                            if (list != null)
                            {
                                Menu = list;
                                RefreshMenuGrid(dishGrid, Menu);
                                msg = "Successfully decompressed.";
                            }
                            else
                            {
                                msg = "Deserialization error";
                            }
                        }
                        catch (Exception ex)
                        {
                            msg = "File cannot be decompressed: " + ex.Message;
                        }
                    }
                }
                MessageBox.Show(msg, "Decompression");
            }
        }