public FileSelectorDialog(string title, Gtk.FileChooserAction action) : base(title, action)
        {
            LocalOnly = true;

            // Add the text encoding selector
            Table table = new Table(2, 2, false);

            table.RowSpacing    = 6;
            table.ColumnSpacing = 6;

            encodingLabel        = new Label(GettextCatalog.GetString("_Character Coding:"));
            encodingLabel.Xalign = 0;
            table.Attach(encodingLabel, 0, 1, 0, 1, AttachOptions.Fill, AttachOptions.Fill, 0, 0);

            encodingMenu = new Gtk.OptionMenu();
            FillEncodings();
            encodingMenu.SetHistory(0);
            table.Attach(encodingMenu, 1, 2, 0, 1, AttachOptions.Expand | AttachOptions.Fill, AttachOptions.Expand | AttachOptions.Fill, 0, 0);

            encodingMenu.Changed += EncodingChanged;

            // Add the viewer selector
            viewerLabel        = new Label(GettextCatalog.GetString("Open With:"));
            viewerLabel.Xalign = 0;
            table.Attach(viewerLabel, 0, 1, 1, 2, AttachOptions.Fill, AttachOptions.Fill, 0, 0);

            Gtk.HBox box = new HBox(false, 6);
            viewerSelector = Gtk.ComboBox.NewText();
            box.PackStart(viewerSelector, true, true, 0);
            closeWorkspaceCheck        = new CheckButton(GettextCatalog.GetString("Close current workspace"));
            closeWorkspaceCheck.Active = true;
            box.PackStart(closeWorkspaceCheck, false, false, 0);
            table.Attach(box, 1, 2, 1, 2, AttachOptions.Expand | AttachOptions.Fill, AttachOptions.Expand | AttachOptions.Fill, 0, 0);
            FillViewers();
            viewerSelector.Changed += OnViewerChanged;

            table.ShowAll();
            this.ExtraWidget = table;

            // Give back the height that the extra widgets take
            int w, h;

            GetSize(out w, out h);
            Resize(w, h + table.SizeRequest().Height);

            if (action == Gtk.FileChooserAction.SelectFolder)
            {
                ShowEncodingSelector = false;
            }

            if (action != Gtk.FileChooserAction.Open)
            {
                closeWorkspaceCheck.Visible = ShowViewerSelector = false;
            }
        }
		public FileSelectorDialog (string title, Gtk.FileChooserAction action): base (title, action)
		{
			LocalOnly = true;
			
			// Add the text encoding selector
			Table table = new Table (2, 2, false);
			table.RowSpacing = 6;
			table.ColumnSpacing = 6;
			
			encodingLabel = new Label (GettextCatalog.GetString ("_Character Coding:"));
			encodingLabel.Xalign = 0;
			table.Attach (encodingLabel, 0, 1, 0, 1, AttachOptions.Fill, AttachOptions.Fill, 0, 0);
			
			encodingMenu = new Gtk.OptionMenu ();
			FillEncodings ();
			encodingMenu.SetHistory (0);
			table.Attach (encodingMenu, 1, 2, 0, 1, AttachOptions.Expand|AttachOptions.Fill, AttachOptions.Expand|AttachOptions.Fill, 0, 0);

			encodingMenu.Changed += EncodingChanged;
			
			// Add the viewer selector
			viewerLabel = new Label (GettextCatalog.GetString ("Open With:"));
			viewerLabel.Xalign = 0;
			table.Attach (viewerLabel, 0, 1, 1, 2, AttachOptions.Fill, AttachOptions.Fill, 0, 0);
			
			Gtk.HBox box = new HBox (false, 6);
			viewerSelector = Gtk.ComboBox.NewText ();
			box.PackStart (viewerSelector, true, true, 0);
			closeWorkspaceCheck = new CheckButton (GettextCatalog.GetString ("Close current workspace"));
			closeWorkspaceCheck.Active = true;
			box.PackStart (closeWorkspaceCheck, false, false, 0);
			table.Attach (box, 1, 2, 1, 2, AttachOptions.Expand|AttachOptions.Fill, AttachOptions.Expand|AttachOptions.Fill, 0, 0);
			FillViewers ();
			viewerSelector.Changed += OnViewerChanged;
			
			table.ShowAll ();
			this.ExtraWidget = table;
			
			// Give back the height that the extra widgets take
			int w, h;
			GetSize (out w, out h);
			Resize (w, h + table.SizeRequest ().Height);
			
			if (action == Gtk.FileChooserAction.SelectFolder)
				ShowEncodingSelector = false;
				
			if (action != Gtk.FileChooserAction.Open)
				closeWorkspaceCheck.Visible = ShowViewerSelector = false;
		}