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; }
protected override void OnSizeRequested(ref Gtk.Requisition req) { req = table.SizeRequest(); }