private void btnExchangeFile_Clicked(object sender, EventArgs e)
        {
            IDataExchanger exchanger = Exchanger;

            FileChooserFilter ff = new FileChooserFilter
            {
                Name      = string.Format("{0} ({1})", exchanger.ExchangeType, string.Join("; ", exchanger.FileMasks)),
                FileMasks = exchanger.FileMasks
            };

            string fileName;

            if (IsExport)
            {
                string title         = Translator.GetString("Select Export File");
                string initialFolder = this.GetInitialFolder();
                string initialFile   = string.Format("{0}{1}", this.defaultFileName, exchanger.DefaultFileExtension);
                if (PresentationDomain.OSIntegration.ChooseFileForSave(title, initialFolder, initialFile, out fileName, ff))
                {
                    SetExchangeFileName(fileName);
                }
            }
            else
            {
                if (PresentationDomain.OSIntegration.ChooseFileForOpen(Translator.GetString("Select Import File"), GetInitialFolder(), out fileName, ff))
                {
                    SetExchangeFileName(fileName);
                }
            }
        }
        private void grid_SelectionChanged(object sender, EventArgs args)
        {
            IDataExchanger exchanger = (IDataExchanger)grid.Model [grid.Selection [0]];
            bool           usesFile  = exchanger.UsesFile;

            algExchangeFile.Visible = usesFile;

            if (usesFile)
            {
                if (string.IsNullOrWhiteSpace(txtExchangeFile.Text) && !string.IsNullOrEmpty(defaultFileName))
                {
                    SetExchangeFileName(Path.Combine(GetInitialFolder(), defaultFileName + exchanger.DefaultFileExtension));
                }
                else if (!string.IsNullOrWhiteSpace(txtExchangeFile.Text) && !string.IsNullOrEmpty(defaultFileName))
                {
                    string folder = Path.GetDirectoryName(txtExchangeFile.Text);
                    string file   = Path.GetFileNameWithoutExtension(txtExchangeFile.Text);
                    SetExchangeFileName(Path.Combine(folder ?? string.Empty, file + exchanger.DefaultFileExtension));
                }
                if (chkExchangeFile.Active)
                {
                    chkOpenFile.Sensitive = true;
                }
                chkOpenFile.Active = BusinessDomain.AppConfiguration.OpenExportedFile;
            }
            else
            {
                chkOpenFile.Active = chkOpenFile.Sensitive = false;
            }

            algCustomWidget.DestroyChild();

            Widget customWidget = exchanger.GetCustomWidget(data) as Widget;

            if (customWidget != null)
            {
                algCustomWidget.Add(customWidget);
            }
        }