1 /* Dialog and Message Boxes 2 * 3 * Dialog widgets are used to pop up a transient window for user feedback. 4 */ 5 6 using System; 7 using Gtk; 8 9 namespace GtkDemo 10 { 11 [Demo ("Dialog and Message Boxes", "DemoDialog.cs")] 12 public class DemoDialog : Gtk.Window 13 { 14 private Entry entry1; 15 private Entry entry2; 16 DemoDialog()17 public DemoDialog () : base ("Dialogs") 18 { 19 BorderWidth = 8; 20 21 Frame frame = new Frame ("Dialogs"); 22 Add (frame); 23 24 VBox vbox = new VBox (false, 8); 25 vbox.BorderWidth = 8; 26 frame.Add (vbox); 27 28 // Standard message dialog 29 HBox hbox = new HBox (false,8); 30 vbox.PackStart (hbox, false, false, 0); 31 Button button = new Button ("_Message Dialog"); 32 button.Clicked += new EventHandler (MessageDialogClicked); 33 hbox.PackStart (button, false, false, 0); 34 vbox.PackStart (new HSeparator(), false, false, 0); 35 36 // Interactive dialog 37 hbox = new HBox (false, 8); 38 vbox.PackStart (hbox, false, false, 0); 39 VBox vbox2 = new VBox (false, 0); 40 41 button = new Button ("_Interactive Dialog"); 42 button.Clicked += new EventHandler (InteractiveDialogClicked); 43 hbox.PackStart (vbox2, false, false, 0); 44 vbox2.PackStart (button, false, false, 0); 45 46 Table table = new Table (2, 2, false); 47 table.RowSpacing = 4; 48 table.ColumnSpacing = 4; 49 hbox.PackStart (table, false, false, 0); 50 51 Label label = new Label ("_Entry1"); 52 table.Attach (label, 0, 1, 0, 1); 53 entry1 = new Entry (); 54 table.Attach (entry1, 1, 2, 0, 1); 55 label.MnemonicWidget = entry1; 56 57 label = new Label ("E_ntry2"); 58 table.Attach (label,0,1,1,2); 59 entry2 = new Entry (); 60 table.Attach (entry2, 1, 2, 1, 2); 61 label.MnemonicWidget = entry2; 62 63 ShowAll (); 64 } 65 OnDeleteEvent(Gdk.Event evt)66 protected override bool OnDeleteEvent (Gdk.Event evt) 67 { 68 Destroy (); 69 return true; 70 } 71 72 private int i = 1; MessageDialogClicked(object o, EventArgs args)73 private void MessageDialogClicked (object o, EventArgs args) 74 { 75 using (Dialog dialog = new MessageDialog (this, 76 DialogFlags.Modal | DialogFlags.DestroyWithParent, 77 MessageType.Info, 78 ButtonsType.Ok, 79 "This message box has been popped up the following\nnumber of times:\n\n {0}", 80 i)) { 81 dialog.Run (); 82 dialog.Hide (); 83 } 84 85 i++; 86 } 87 InteractiveDialogClicked(object o, EventArgs args)88 private void InteractiveDialogClicked (object o, EventArgs args) 89 { 90 Dialog dialog = new Dialog ("Interactive Dialog", this, 91 DialogFlags.Modal | DialogFlags.DestroyWithParent, 92 Gtk.Stock.Ok, ResponseType.Ok, 93 "_Non-stock Button", ResponseType.Cancel); 94 95 HBox hbox = new HBox (false, 8); 96 hbox.BorderWidth = 8; 97 dialog.ContentArea.PackStart (hbox, false, false, 0); 98 99 Image stock = new Image (Stock.DialogQuestion, IconSize.Dialog); 100 hbox.PackStart (stock, false, false, 0); 101 102 Table table = new Table (2, 2, false); 103 table.RowSpacing = 4; 104 table.ColumnSpacing = 4; 105 hbox.PackStart (table, true, true, 0); 106 107 Label label = new Label ("_Entry1"); 108 table.Attach (label, 0, 1, 0, 1); 109 Entry localEntry1 = new Entry (); 110 localEntry1.Text = entry1.Text; 111 table.Attach (localEntry1, 1, 2, 0, 1); 112 label.MnemonicWidget = localEntry1; 113 114 label = new Label ("E_ntry2"); 115 table.Attach (label, 0, 1, 1, 2); 116 Entry localEntry2 = new Entry (); 117 localEntry2.Text = entry2.Text; 118 table.Attach (localEntry2, 1, 2, 1, 2); 119 label.MnemonicWidget = localEntry2; 120 121 hbox.ShowAll (); 122 123 ResponseType response = (ResponseType) dialog.Run (); 124 125 if (response == ResponseType.Ok) { 126 entry1.Text = localEntry1.Text; 127 entry2.Text = localEntry2.Text; 128 } 129 130 dialog.Destroy (); 131 } 132 } 133 } 134