42
42
gboolean debug_mode;
43
43
gboolean allow_logout;
44
44
GdkRectangle geometry;
45
gboolean show_extensions;
46
45
GsmShellExtensions *extensions;
47
GtkWidget *extensions_box;
50
48
G_DEFINE_TYPE (GsmFailWhaleDialog, gsm_fail_whale_dialog, GTK_TYPE_WINDOW);
179
177
GtkRequisition *requisition)
181
179
GsmFailWhaleDialog *fail_dialog;
183
180
GdkRectangle old_geometry;
184
181
int position_changed = FALSE;
185
182
int size_changed = FALSE;
187
184
fail_dialog = GSM_FAIL_WHALE_DIALOG (widget);
188
bin = GTK_BIN (widget);
190
if (gtk_bin_get_child (bin) &&
191
gtk_widget_get_visible (gtk_bin_get_child (bin))) {
192
gtk_widget_size_request (gtk_bin_get_child (bin), requisition);
195
186
old_geometry = fail_dialog->priv->geometry;
279
on_extension_switched (GObject *object,
281
GsmFailWhaleDialog *fail_dialog)
286
uuid = g_object_get_data (object, "uuid");
287
g_object_get (object, "active", &enabled, NULL);
289
gsm_shell_extensions_set_enabled (fail_dialog->priv->extensions,
295
build_extension_toggle (GsmShellExtensions *extensions,
296
GsmShellExtension *extension,
299
GsmFailWhaleDialog *fail_dialog = GSM_FAIL_WHALE_DIALOG (data);
304
hbox = gtk_hbox_new (FALSE, 0);
305
gtk_widget_set_size_request (hbox, 600, -1);
306
gtk_widget_set_halign (hbox, GTK_ALIGN_CENTER);
307
gtk_widget_show (hbox);
308
gtk_box_pack_start (GTK_BOX (fail_dialog->priv->extensions_box),
309
hbox, FALSE, FALSE, 0);
311
label = gtk_label_new (gsm_shell_extension_get_name (extension));
313
gtk_widget_show (label);
314
gtk_widget_set_halign (label, GTK_ALIGN_START);
315
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
317
sw = gtk_switch_new ();
318
gtk_switch_set_active (GTK_SWITCH (sw),
319
gsm_shell_extension_get_is_enabled (extension));
321
g_object_set_data (G_OBJECT (sw),
323
gsm_shell_extension_get_uuid (extension));
324
g_signal_connect (G_OBJECT (sw),
326
G_CALLBACK (on_extension_switched),
328
gtk_widget_set_halign (label, GTK_ALIGN_END);
329
gtk_widget_show (sw);
330
gtk_box_pack_end (GTK_BOX (hbox), sw, FALSE, FALSE, 0);
334
270
setup_window (GsmFailWhaleDialog *fail_dialog)
336
272
GsmFailWhaleDialogPrivate *priv;
364
298
gtk_container_add (GTK_CONTAINER (fail_dialog), alignment);
365
299
g_object_set (alignment, "valign", GTK_ALIGN_CENTER, NULL);
367
box = gtk_vbox_new (FALSE, 10);
301
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
368
302
gtk_widget_show (box);
369
303
gtk_container_add (GTK_CONTAINER (alignment), box);
383
317
if (!priv->allow_logout)
384
318
message_label = gtk_label_new (_("A problem has occurred and the system can't recover. Please contact a system administrator"));
385
else if (priv->show_extensions && gsm_shell_extensions_n_extensions (priv->extensions) > 0)
386
message_label = gtk_label_new (_("A problem has occurred and the system can't recover. Some of the extensions below may have caused this.\nPlease try disabling some of these, and then log out and try again."));
319
else if (priv->extensions != NULL && gsm_shell_extensions_n_extensions (priv->extensions) > 0)
320
message_label = gtk_label_new (_("A problem has occurred and the system can't recover. All extensions have been disabled as a precaution."));
388
322
message_label = gtk_label_new (_("A problem has occurred and the system can't recover.\nPlease log out and try again."));
393
327
gtk_box_pack_start (GTK_BOX (box),
394
328
message_label, FALSE, FALSE, 0);
396
if (priv->allow_logout && priv->show_extensions) {
397
extensions_vbox = gtk_vbox_new (TRUE, 6);
398
gtk_widget_show (extensions_vbox);
399
fail_dialog->priv->extensions_box = extensions_vbox;
401
extensions_scroll = gtk_scrolled_window_new (NULL, NULL);
402
gtk_widget_show (extensions_scroll);
404
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (extensions_scroll),
407
gtk_box_pack_start (GTK_BOX (box),
408
extensions_scroll, FALSE, FALSE, 0);
410
gsm_shell_extensions_foreach (priv->extensions,
411
build_extension_toggle,
412
(gpointer) fail_dialog);
415
button_box = gtk_hbutton_box_new ();
330
button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
416
331
gtk_container_set_border_width (GTK_CONTAINER (button_box), 20);
417
332
gtk_widget_show (button_box);
418
333
gtk_box_pack_end (GTK_BOX (box),
432
347
gsm_fail_whale_dialog_init (GsmFailWhaleDialog *fail_dialog)
434
349
fail_dialog->priv = GSM_FAIL_WHALE_DIALOG_GET_PRIVATE (fail_dialog);
435
fail_dialog->priv->extensions = g_object_new (GSM_TYPE_SHELL_EXTENSIONS, NULL);
439
gsm_fail_whale_dialog_we_failed (gboolean debug_mode,
440
gboolean allow_logout,
441
gboolean show_extensions)
353
gsm_fail_whale_dialog_we_failed (gboolean debug_mode,
354
gboolean allow_logout,
355
GsmShellExtensions *extensions)
444
358
static GsmFailWhaleDialog *current_dialog = NULL;
451
365
fail_dialog = g_object_new (GSM_TYPE_FAIL_WHALE_DIALOG, NULL);
452
366
fail_dialog->priv->debug_mode = debug_mode;
453
367
fail_dialog->priv->allow_logout = allow_logout;
454
fail_dialog->priv->show_extensions = show_extensions;
368
fail_dialog->priv->extensions = extensions;
455
370
setup_window (fail_dialog);
457
372
current_dialog = fail_dialog;