private void SaveGroupDat_Click(object sender, RoutedEventArgs e)
        {
            if (this.GroupsList.SelectedIndex == -1)
            {
                return;
            }

            var dialog = new SaveFileDialog();

            dialog.AddExtension = true;
            dialog.DefaultExt   = ".dat";
            dialog.Filter       = "DAT files (*.dat)|*.dat";

            string fileName;

            if (dialog.ShowDialog(this) == true)
            {
                fileName = dialog.FileName;
            }
            else
            {
                return;
            }

            var groups = this.GroupsList.SelectedItems;

            this.RunBusyAction(disp =>
            {
                var dat = new DatFile();

                foreach (DatGroup group in groups)
                {
                    var datGroup = new DatGroup(group.GroupId);
                    dat.Groups.Add(datGroup);

                    foreach (DatImage image in group.Images)
                    {
                        DatImage datImage = DatImage.FromMemory(
                            image.GroupId,
                            image.ImageId,
                            image.Format,
                            image.Width,
                            image.Height,
                            image.ColorsCount,
                            image.GetRawData());

                        datGroup.Images.Add(datImage);
                    }
                }

                dat.Save(fileName);
            });
        }
        private void AddGroup_Click(object sender, RoutedEventArgs e)
        {
            var dat = this.DatFile;

            if (dat == null)
            {
                return;
            }

            short groupId = this.DatGroupId;

            this.RunBusyAction(disp =>
            {
                var group = new DatGroup(groupId);

                dat.Groups.Add(group);

                disp(() => this.DatFile = dat);
                disp(() => this.GroupsList.SelectedIndex = this.GroupsList.Items.Count - 1);
            });
        }