~inkscape.dev/inkscape-devlibs/devlibs-gtk3

« back to all changes in this revision

Viewing changes to share/gtk-2.0/demo/dialog.c

  • Committer: JazzyNico
  • Date: 2013-01-21 10:11:05 UTC
  • Revision ID: nicoduf@yahoo.fr-20130121101105-i8d8slkq9ng4olx8
Adding gtk2 libraries.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Dialog and Message Boxes
 
2
 *
 
3
 * Dialog widgets are used to pop up a transient window for user feedback.
 
4
 */
 
5
 
 
6
#include <gtk/gtk.h>
 
7
 
 
8
static GtkWidget *window = NULL;
 
9
static GtkWidget *entry1 = NULL;
 
10
static GtkWidget *entry2 = NULL;
 
11
 
 
12
static void
 
13
message_dialog_clicked (GtkButton *button,
 
14
                        gpointer   user_data)
 
15
{
 
16
  GtkWidget *dialog;
 
17
  static gint i = 1;
 
18
 
 
19
  dialog = gtk_message_dialog_new (GTK_WINDOW (window),
 
20
                                   GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
 
21
                                   GTK_MESSAGE_INFO,
 
22
                                   GTK_BUTTONS_OK,
 
23
                                   "This message box has been popped up the following\n"
 
24
                                   "number of times:");
 
25
  gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
 
26
                                            "%d", i);
 
27
  gtk_dialog_run (GTK_DIALOG (dialog));
 
28
  gtk_widget_destroy (dialog);
 
29
  i++;
 
30
}
 
31
 
 
32
static void
 
33
interactive_dialog_clicked (GtkButton *button,
 
34
                            gpointer   user_data)
 
35
{
 
36
  GtkWidget *dialog;
 
37
  GtkWidget *hbox;
 
38
  GtkWidget *stock;
 
39
  GtkWidget *table;
 
40
  GtkWidget *local_entry1;
 
41
  GtkWidget *local_entry2;
 
42
  GtkWidget *label;
 
43
  gint response;
 
44
 
 
45
  dialog = gtk_dialog_new_with_buttons ("Interactive Dialog",
 
46
                                        GTK_WINDOW (window),
 
47
                                        GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT,
 
48
                                        GTK_STOCK_OK,
 
49
                                        GTK_RESPONSE_OK,
 
50
                                        "_Non-stock Button",
 
51
                                        GTK_RESPONSE_CANCEL,
 
52
                                        NULL);
 
53
 
 
54
  hbox = gtk_hbox_new (FALSE, 8);
 
55
  gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
 
56
  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox, FALSE, FALSE, 0);
 
57
 
 
58
  stock = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
 
59
  gtk_box_pack_start (GTK_BOX (hbox), stock, FALSE, FALSE, 0);
 
60
 
 
61
  table = gtk_table_new (2, 2, FALSE);
 
62
  gtk_table_set_row_spacings (GTK_TABLE (table), 4);
 
63
  gtk_table_set_col_spacings (GTK_TABLE (table), 4);
 
64
  gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
 
65
  label = gtk_label_new_with_mnemonic ("_Entry 1");
 
66
  gtk_table_attach_defaults (GTK_TABLE (table),
 
67
                             label,
 
68
                             0, 1, 0, 1);
 
69
  local_entry1 = gtk_entry_new ();
 
70
  gtk_entry_set_text (GTK_ENTRY (local_entry1), gtk_entry_get_text (GTK_ENTRY (entry1)));
 
71
  gtk_table_attach_defaults (GTK_TABLE (table), local_entry1, 1, 2, 0, 1);
 
72
  gtk_label_set_mnemonic_widget (GTK_LABEL (label), local_entry1);
 
73
 
 
74
  label = gtk_label_new_with_mnemonic ("E_ntry 2");
 
75
  gtk_table_attach_defaults (GTK_TABLE (table),
 
76
                             label,
 
77
                             0, 1, 1, 2);
 
78
 
 
79
  local_entry2 = gtk_entry_new ();
 
80
  gtk_entry_set_text (GTK_ENTRY (local_entry2), gtk_entry_get_text (GTK_ENTRY (entry2)));
 
81
  gtk_table_attach_defaults (GTK_TABLE (table), local_entry2, 1, 2, 1, 2);
 
82
  gtk_label_set_mnemonic_widget (GTK_LABEL (label), local_entry2);
 
83
  
 
84
  gtk_widget_show_all (hbox);
 
85
  response = gtk_dialog_run (GTK_DIALOG (dialog));
 
86
 
 
87
  if (response == GTK_RESPONSE_OK)
 
88
    {
 
89
      gtk_entry_set_text (GTK_ENTRY (entry1), gtk_entry_get_text (GTK_ENTRY (local_entry1)));
 
90
      gtk_entry_set_text (GTK_ENTRY (entry2), gtk_entry_get_text (GTK_ENTRY (local_entry2)));
 
91
    }
 
92
 
 
93
  gtk_widget_destroy (dialog);
 
94
}
 
95
 
 
96
GtkWidget *
 
97
do_dialog (GtkWidget *do_widget)
 
98
{
 
99
  GtkWidget *frame;
 
100
  GtkWidget *vbox;
 
101
  GtkWidget *vbox2;
 
102
  GtkWidget *hbox;
 
103
  GtkWidget *button;
 
104
  GtkWidget *table;
 
105
  GtkWidget *label;
 
106
  
 
107
  if (!window)
 
108
    {
 
109
      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 
110
      gtk_window_set_screen (GTK_WINDOW (window),
 
111
                             gtk_widget_get_screen (do_widget));
 
112
      gtk_window_set_title (GTK_WINDOW (window), "Dialogs");
 
113
 
 
114
      g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
 
115
      gtk_container_set_border_width (GTK_CONTAINER (window), 8);
 
116
 
 
117
      frame = gtk_frame_new ("Dialogs");
 
118
      gtk_container_add (GTK_CONTAINER (window), frame);
 
119
 
 
120
      vbox = gtk_vbox_new (FALSE, 8);
 
121
      gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
 
122
      gtk_container_add (GTK_CONTAINER (frame), vbox);
 
123
 
 
124
      /* Standard message dialog */
 
125
      hbox = gtk_hbox_new (FALSE, 8);
 
126
      gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
 
127
      button = gtk_button_new_with_mnemonic ("_Message Dialog");
 
128
      g_signal_connect (button, "clicked",
 
129
                        G_CALLBACK (message_dialog_clicked), NULL);
 
130
      gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
 
131
 
 
132
      gtk_box_pack_start (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0);
 
133
 
 
134
      /* Interactive dialog*/
 
135
      hbox = gtk_hbox_new (FALSE, 8);
 
136
      gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
 
137
      vbox2 = gtk_vbox_new (FALSE, 0);
 
138
 
 
139
      button = gtk_button_new_with_mnemonic ("_Interactive Dialog");
 
140
      g_signal_connect (button, "clicked",
 
141
                        G_CALLBACK (interactive_dialog_clicked), NULL);
 
142
      gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
 
143
      gtk_box_pack_start (GTK_BOX (vbox2), button, FALSE, FALSE, 0);
 
144
 
 
145
      table = gtk_table_new (2, 2, FALSE);
 
146
      gtk_table_set_row_spacings (GTK_TABLE (table), 4);
 
147
      gtk_table_set_col_spacings (GTK_TABLE (table), 4);
 
148
      gtk_box_pack_start (GTK_BOX (hbox), table, FALSE, FALSE, 0);
 
149
 
 
150
      label = gtk_label_new_with_mnemonic ("_Entry 1");
 
151
      gtk_table_attach_defaults (GTK_TABLE (table),
 
152
                                 label,
 
153
                                 0, 1, 0, 1);
 
154
 
 
155
      entry1 = gtk_entry_new ();
 
156
      gtk_table_attach_defaults (GTK_TABLE (table), entry1, 1, 2, 0, 1);
 
157
      gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry1);
 
158
 
 
159
      label = gtk_label_new_with_mnemonic ("E_ntry 2");
 
160
      
 
161
      gtk_table_attach_defaults (GTK_TABLE (table),
 
162
                                 label,
 
163
                                 0, 1, 1, 2);
 
164
 
 
165
      entry2 = gtk_entry_new ();
 
166
      gtk_table_attach_defaults (GTK_TABLE (table), entry2, 1, 2, 1, 2);
 
167
      gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry2);
 
168
    }
 
169
 
 
170
  if (!gtk_widget_get_visible (window))
 
171
    {
 
172
      gtk_widget_show_all (window);
 
173
    }
 
174
  else
 
175
    {    
 
176
      gtk_widget_destroy (window);
 
177
      window = NULL;
 
178
    }
 
179
 
 
180
  return window;
 
181
}