37 #include <glib/gi18n.h> 78 g_signal_new (
"response",
79 G_OBJECT_CLASS_TYPE (
class),
81 G_STRUCT_OFFSET (RemminaMessagePanelClass, response),
92 RemminaMessagePanel* mp;
93 mp = (RemminaMessagePanel*)g_object_new(REMMINA_TYPE_MESSAGE_PANEL,
94 "orientation", GTK_ORIENTATION_VERTICAL,
98 priv = remmina_message_panel_get_instance_private(mp);
105 gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(mp)),
"message_panel");
106 gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(mp)),
"background");
112 GtkButton *button, gpointer user_data)
114 TRACE_CALL(__func__);
115 RemminaMessagePanel *mp = (RemminaMessagePanel*)user_data;
120 btn_data = (gint)((gint64)g_object_get_data(G_OBJECT(button),
btn_response_key));
136 TRACE_CALL(__func__);
142 printf(
"WARNING: %s called in a subthread. This should not happen.\n", __func__);
146 hbox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0));
149 w = gtk_spinner_new();
150 gtk_box_pack_start(hbox, w, FALSE, FALSE, 0);
151 gtk_spinner_start(GTK_SPINNER(w));
154 w = gtk_label_new(message);
155 gtk_box_pack_start(hbox, w, TRUE, TRUE, 0);
162 if (response_callback) {
163 w = gtk_button_new_with_label(_(
"Cancel"));
164 gtk_box_pack_end(hbox, w, FALSE, FALSE, 0);
165 g_object_set_data(G_OBJECT(w),
btn_response_key, (
void *)GTK_RESPONSE_CANCEL);
169 gtk_box_pack_start(GTK_BOX(mp), GTK_WIDGET(hbox), TRUE, TRUE, 0);
171 gtk_widget_show_all(GTK_WIDGET(mp));
183 TRACE_CALL(__func__);
189 printf(
"WARNING: %s called in a subthread. This should not happen.\n", __func__);
192 hbox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0));
195 w = gtk_label_new(message);
196 gtk_box_pack_start(hbox, w, TRUE, TRUE, 0);
199 w = gtk_button_new_with_label(_(
"Close"));
200 gtk_box_pack_end(hbox, w, FALSE, FALSE, 0);
208 gtk_box_pack_start(GTK_BOX(mp), GTK_WIDGET(hbox), TRUE, TRUE, 0);
210 gtk_widget_show_all(GTK_WIDGET(mp));
224 TRACE_CALL(__func__);
231 printf(
"WARNING: %s called in a subthread. This should not happen. Raising SIGINT for debugging.\n", __func__);
236 grid = gtk_grid_new();
237 gtk_widget_set_halign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
238 gtk_widget_set_valign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
239 gtk_widget_show(grid);
240 gtk_grid_set_row_spacing(GTK_GRID(grid), 6);
241 gtk_grid_set_column_spacing(GTK_GRID(grid), 6);
244 w = gtk_label_new(NULL);
245 gtk_label_set_markup(GTK_LABEL(w), message);
247 gtk_widget_set_halign(GTK_WIDGET(w), GTK_ALIGN_START);
248 gtk_widget_set_valign(GTK_WIDGET(w), GTK_ALIGN_FILL);
249 gtk_widget_set_margin_top (GTK_WIDGET(w), 18);
250 gtk_widget_set_margin_bottom (GTK_WIDGET(w), 9);
251 gtk_widget_set_margin_start (GTK_WIDGET(w), 18);
252 gtk_widget_set_margin_end (GTK_WIDGET(w), 18);
254 gtk_grid_attach(GTK_GRID(grid), w, 0, 0, 2, 1);
257 bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
258 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_START);
259 gtk_grid_attach(GTK_GRID(grid), bbox, 0, 1, 1, 1);
260 w = gtk_button_new_with_label(_(
"Yes"));
261 gtk_widget_set_valign(GTK_WIDGET(w), GTK_ALIGN_CENTER);
265 gtk_container_add(GTK_CONTAINER(bbox), w);
267 w = gtk_button_new_with_label(_(
"No"));
268 gtk_widget_set_valign(GTK_WIDGET(w), GTK_ALIGN_CENTER);
275 gtk_container_add(GTK_CONTAINER(bbox), w);
277 gtk_box_pack_start(GTK_BOX(mp), GTK_WIDGET(grid), TRUE, TRUE, 0);
279 gtk_widget_show_all(GTK_WIDGET(mp));
285 TRACE_CALL(__func__);
287 GtkWidget *password_entry;
288 GtkWidget *username_entry;
289 GtkWidget *domain_entry;
290 GtkWidget *save_password_switch;
293 GtkWidget *button_ok;
294 GtkWidget *button_cancel;
300 printf(
"WARNING: %s called in a subthread. This should not happen. Raising SIGINT to debug.\n", __func__);
305 grid = gtk_grid_new();
306 gtk_widget_set_halign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
307 gtk_widget_set_valign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
308 gtk_widget_show(grid);
309 gtk_grid_set_row_spacing(GTK_GRID(grid), 6);
310 gtk_grid_set_column_spacing(GTK_GRID(grid), 6);
316 widget = gtk_label_new(title);
317 gtk_style_context_add_class(gtk_widget_get_style_context(widget),
"title_label");
318 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
319 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_FILL);
320 gtk_widget_set_margin_top (GTK_WIDGET(widget), 18);
321 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 9);
322 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
323 gtk_widget_set_margin_end (GTK_WIDGET(widget), 18);
324 gtk_widget_show(widget);
325 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 3, 1);
330 widget = gtk_label_new(_(
"Username"));
331 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
332 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
333 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
334 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
335 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
336 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
337 gtk_widget_show(widget);
338 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
340 username_entry = gtk_entry_new();
342 gtk_widget_set_halign(GTK_WIDGET(username_entry), GTK_ALIGN_FILL);
343 gtk_widget_set_valign(GTK_WIDGET(username_entry), GTK_ALIGN_FILL);
344 gtk_widget_set_margin_top (GTK_WIDGET(username_entry), 9);
345 gtk_widget_set_margin_bottom (GTK_WIDGET(username_entry), 3);
346 gtk_widget_set_margin_start (GTK_WIDGET(username_entry), 6);
347 gtk_widget_set_margin_end (GTK_WIDGET(username_entry), 18);
349 gtk_grid_attach(GTK_GRID(grid), username_entry, 1, grid_row, 2, 1);
350 gtk_entry_set_max_length(GTK_ENTRY(username_entry), 100);
353 g_object_set(username_entry,
"editable", FALSE, NULL);
363 username_entry = NULL;
367 widget = gtk_label_new(password_prompt);
368 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
369 gtk_widget_set_margin_top (GTK_WIDGET(widget), 3);
370 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
371 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
372 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
373 gtk_widget_show(widget);
374 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
376 password_entry = gtk_entry_new();
377 gtk_widget_set_halign(GTK_WIDGET(password_entry), GTK_ALIGN_FILL);
378 gtk_widget_set_valign(GTK_WIDGET(password_entry), GTK_ALIGN_FILL);
379 gtk_widget_set_margin_top (GTK_WIDGET(password_entry), 3);
380 gtk_widget_set_margin_bottom (GTK_WIDGET(password_entry), 3);
381 gtk_widget_set_margin_start (GTK_WIDGET(password_entry), 6);
382 gtk_widget_set_margin_end (GTK_WIDGET(password_entry), 18);
383 gtk_entry_set_activates_default (GTK_ENTRY(password_entry), TRUE);
384 gtk_grid_attach(GTK_GRID(grid), password_entry, 1, grid_row, 2, 1);
385 gtk_entry_set_max_length(GTK_ENTRY(password_entry), 0);
386 gtk_entry_set_visibility(GTK_ENTRY(password_entry), FALSE);
387 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(password_entry), GTK_ENTRY_ICON_SECONDARY,
"org.remmina.Remmina-password-reveal-symbolic");
388 gtk_entry_set_icon_activatable(GTK_ENTRY(password_entry), GTK_ENTRY_ICON_SECONDARY, TRUE);
394 widget = gtk_label_new(_(
"Domain"));
395 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
396 gtk_widget_set_margin_top (GTK_WIDGET(widget), 3);
397 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
398 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
399 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
400 gtk_widget_show(widget);
401 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
403 domain_entry = gtk_entry_new();
404 gtk_widget_set_halign(GTK_WIDGET(domain_entry), GTK_ALIGN_FILL);
405 gtk_widget_set_valign(GTK_WIDGET(domain_entry), GTK_ALIGN_FILL);
406 gtk_widget_set_margin_top (GTK_WIDGET(domain_entry), 3);
407 gtk_widget_set_margin_bottom (GTK_WIDGET(domain_entry), 3);
408 gtk_widget_set_margin_start (GTK_WIDGET(domain_entry), 6);
409 gtk_widget_set_margin_end (GTK_WIDGET(domain_entry), 18);
410 gtk_entry_set_activates_default (GTK_ENTRY(domain_entry), TRUE);
411 gtk_widget_show(domain_entry);
412 gtk_grid_attach(GTK_GRID(grid), domain_entry, 1, grid_row, 2, 1);
413 gtk_entry_set_max_length(GTK_ENTRY(domain_entry), 100);
423 widget = gtk_label_new(_(
"Save password"));
424 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
425 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
426 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 9);
427 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
428 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
429 gtk_widget_show(widget);
430 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
431 save_password_switch = gtk_switch_new();
432 gtk_widget_set_halign(GTK_WIDGET(save_password_switch), GTK_ALIGN_START);
433 gtk_widget_set_valign(GTK_WIDGET(save_password_switch), GTK_ALIGN_FILL);
434 gtk_widget_set_margin_top (GTK_WIDGET(save_password_switch), 9);
435 gtk_widget_set_margin_bottom (GTK_WIDGET(save_password_switch), 9);
436 gtk_widget_set_margin_start (GTK_WIDGET(save_password_switch), 6);
437 gtk_widget_set_margin_end (GTK_WIDGET(save_password_switch), 18);
438 gtk_grid_attach(GTK_GRID(grid), save_password_switch, 1, grid_row, 2, 1);
440 gtk_switch_set_active(GTK_SWITCH(save_password_switch), TRUE);
442 gtk_switch_set_active(GTK_SWITCH(save_password_switch), FALSE);
443 gtk_widget_set_sensitive(GTK_WIDGET(save_password_switch), FALSE);
448 bbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
449 gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_EDGE);
450 gtk_box_set_spacing (GTK_BOX (bbox), 40);
451 gtk_widget_set_margin_top (GTK_WIDGET(bbox), 9);
452 gtk_widget_set_margin_bottom (GTK_WIDGET(bbox), 18);
453 gtk_widget_set_margin_start (GTK_WIDGET(bbox), 18);
454 gtk_widget_set_margin_end (GTK_WIDGET(bbox), 18);
455 button_ok = gtk_button_new_with_label(_(
"_OK"));
456 gtk_button_set_use_underline(GTK_BUTTON(button_ok), TRUE);
457 gtk_widget_set_can_default(button_ok, TRUE);
458 gtk_container_add (GTK_CONTAINER (bbox), button_ok);
460 button_cancel = gtk_button_new_with_label(_(
"_Cancel"));
461 gtk_button_set_use_underline(GTK_BUTTON(button_cancel), TRUE);
462 gtk_container_add (GTK_CONTAINER (bbox), button_cancel);
463 gtk_grid_attach(GTK_GRID(grid), bbox, 0, grid_row, 3, 1);
465 gtk_box_pack_start(GTK_BOX(mp), grid, TRUE, TRUE, 4);
476 if (username_entry) g_signal_connect_swapped (username_entry,
"activate", (GCallback)gtk_widget_grab_focus, password_entry);
477 g_signal_connect_swapped (password_entry,
"activate", (GCallback)gtk_widget_grab_focus, button_ok);
478 g_object_set_data(G_OBJECT(button_cancel),
btn_response_key, (
void *)GTK_RESPONSE_CANCEL);
480 g_object_set_data(G_OBJECT(button_ok),
btn_response_key, (
void *)GTK_RESPONSE_OK);
486 TRACE_CALL(__func__);
491 GtkWidget *button_ok;
492 GtkWidget *button_cancel;
493 GtkWidget *cacert_file;
494 GtkWidget *cacrl_file;
495 GtkWidget *clientcert_file;
496 GtkWidget *clientkey_file;
502 printf(
"WARNING: %s called in a subthread. This should not happen. Raising SIGINT to debug.\n", __func__);
507 grid = gtk_grid_new();
508 gtk_widget_set_halign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
509 gtk_widget_set_valign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
510 gtk_widget_show(grid);
511 gtk_grid_set_row_spacing(GTK_GRID(grid), 6);
512 gtk_grid_set_column_spacing(GTK_GRID(grid), 6);
516 widget = gtk_label_new(_(
"Enter certificate authentication files"));
517 gtk_style_context_add_class(gtk_widget_get_style_context(widget),
"title_label");
518 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
519 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_FILL);
520 gtk_widget_set_margin_top (GTK_WIDGET(widget), 18);
521 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 9);
522 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
523 gtk_widget_set_margin_end (GTK_WIDGET(widget), 18);
524 gtk_widget_show(widget);
525 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 3, 1);
528 const gchar *lbl_cacert = _(
"CA Certificate File");
529 widget = gtk_label_new(lbl_cacert);
530 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
531 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
532 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
533 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
534 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
535 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
536 gtk_widget_show(widget);
537 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
538 cacert_file = gtk_file_chooser_button_new(lbl_cacert, GTK_FILE_CHOOSER_ACTION_OPEN);
540 gtk_widget_show(cacert_file);
541 gtk_widget_set_halign(GTK_WIDGET(cacert_file), GTK_ALIGN_FILL);
542 gtk_widget_set_valign(GTK_WIDGET(cacert_file), GTK_ALIGN_FILL);
543 gtk_widget_set_margin_top (GTK_WIDGET(cacert_file), 9);
544 gtk_widget_set_margin_bottom (GTK_WIDGET(cacert_file), 3);
545 gtk_widget_set_margin_start (GTK_WIDGET(cacert_file), 6);
546 gtk_widget_set_margin_end (GTK_WIDGET(cacert_file), 18);
547 gtk_grid_attach(GTK_GRID(grid), cacert_file, 1, grid_row, 2, 1);
550 const gchar *lbl_cacrl = _(
"CA CRL File");
551 widget = gtk_label_new(lbl_cacrl);
552 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
553 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
554 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
555 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
556 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
557 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
558 gtk_widget_show(widget);
559 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
560 cacrl_file = gtk_file_chooser_button_new(lbl_cacrl, GTK_FILE_CHOOSER_ACTION_OPEN);
562 gtk_widget_show(cacrl_file);
563 gtk_widget_set_halign(GTK_WIDGET(cacrl_file), GTK_ALIGN_FILL);
564 gtk_widget_set_valign(GTK_WIDGET(cacrl_file), GTK_ALIGN_FILL);
565 gtk_widget_set_margin_top (GTK_WIDGET(cacrl_file), 9);
566 gtk_widget_set_margin_bottom (GTK_WIDGET(cacrl_file), 3);
567 gtk_widget_set_margin_start (GTK_WIDGET(cacrl_file), 6);
568 gtk_widget_set_margin_end (GTK_WIDGET(cacrl_file), 18);
569 gtk_grid_attach(GTK_GRID(grid), cacrl_file, 1, grid_row, 2, 1);
572 const gchar *lbl_clicert = _(
"Client Certificate File");
573 widget = gtk_label_new(lbl_clicert);
574 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
575 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
576 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
577 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
578 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
579 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
580 gtk_widget_show(widget);
581 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
582 clientcert_file = gtk_file_chooser_button_new(lbl_clicert, GTK_FILE_CHOOSER_ACTION_OPEN);
584 gtk_widget_show(clientcert_file);
585 gtk_widget_set_halign(GTK_WIDGET(clientcert_file), GTK_ALIGN_FILL);
586 gtk_widget_set_valign(GTK_WIDGET(clientcert_file), GTK_ALIGN_FILL);
587 gtk_widget_set_margin_top (GTK_WIDGET(clientcert_file), 9);
588 gtk_widget_set_margin_bottom (GTK_WIDGET(clientcert_file), 3);
589 gtk_widget_set_margin_start (GTK_WIDGET(clientcert_file), 6);
590 gtk_widget_set_margin_end (GTK_WIDGET(clientcert_file), 18);
591 gtk_grid_attach(GTK_GRID(grid), clientcert_file, 1, grid_row, 2, 1);
594 const gchar *lbl_clikey = _(
"Client Certificate Key");
595 widget = gtk_label_new(lbl_clikey);
596 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
597 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
598 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
599 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
600 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
601 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
602 gtk_widget_show(widget);
603 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
604 clientkey_file = gtk_file_chooser_button_new(lbl_clikey, GTK_FILE_CHOOSER_ACTION_OPEN);
606 gtk_widget_show(clientkey_file);
607 gtk_widget_set_halign(GTK_WIDGET(clientkey_file), GTK_ALIGN_FILL);
608 gtk_widget_set_valign(GTK_WIDGET(clientkey_file), GTK_ALIGN_FILL);
609 gtk_widget_set_margin_top (GTK_WIDGET(clientkey_file), 9);
610 gtk_widget_set_margin_bottom (GTK_WIDGET(clientkey_file), 3);
611 gtk_widget_set_margin_start (GTK_WIDGET(clientkey_file), 6);
612 gtk_widget_set_margin_end (GTK_WIDGET(clientkey_file), 18);
613 gtk_grid_attach(GTK_GRID(grid), clientkey_file, 1, grid_row, 2, 1);
617 bbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
618 gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_EDGE);
619 gtk_box_set_spacing (GTK_BOX (bbox), 40);
620 gtk_widget_set_margin_top (GTK_WIDGET(bbox), 9);
621 gtk_widget_set_margin_bottom (GTK_WIDGET(bbox), 18);
622 gtk_widget_set_margin_start (GTK_WIDGET(bbox), 18);
623 gtk_widget_set_margin_end (GTK_WIDGET(bbox), 18);
624 button_ok = gtk_button_new_with_label(_(
"_OK"));
625 gtk_widget_set_can_default (button_ok, TRUE);
627 gtk_button_set_use_underline(GTK_BUTTON(button_ok), TRUE);
629 gtk_container_add (GTK_CONTAINER (bbox), button_ok);
632 button_cancel = gtk_button_new_with_label(_(
"_Cancel"));
633 gtk_button_set_use_underline(GTK_BUTTON(button_cancel), TRUE);
635 gtk_container_add (GTK_CONTAINER (bbox), button_cancel);
636 gtk_grid_attach(GTK_GRID(grid), bbox, 0, grid_row, 3, 1);
638 gtk_box_pack_start(GTK_BOX(mp), grid, TRUE, TRUE, 4);
649 g_object_set_data(G_OBJECT(button_cancel),
btn_response_key, (
void *)GTK_RESPONSE_CANCEL);
651 g_object_set_data(G_OBJECT(button_ok),
btn_response_key, (
void *)GTK_RESPONSE_OK);
658 TRACE_CALL(__func__);
662 const gchar *username;
666 priv = remmina_message_panel_get_instance_private(mp);
670 if (w && G_TYPE_CHECK_INSTANCE_TYPE(w, gtk_button_get_type()))
671 gtk_widget_grab_default(w);
678 username = gtk_entry_get_text(GTK_ENTRY(w));
679 if (username[0] != 0)
685 if (!G_TYPE_CHECK_INSTANCE_TYPE(w, gtk_entry_get_type()))
688 gtk_widget_grab_focus(w);
697 priv = remmina_message_panel_get_instance_private(mp);
699 if (priv->
w[entryid] == NULL)
701 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_entry_get_type()))
704 gtk_entry_set_text(GTK_ENTRY(priv->
w[entryid]), text != NULL ? text :
"");
709 TRACE_CALL(__func__);
715 priv = remmina_message_panel_get_instance_private(mp);
717 if (priv->
w[entryid] == NULL)
719 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_entry_get_type()))
722 return g_strdup(gtk_entry_get_text(GTK_ENTRY(priv->
w[entryid])));
727 TRACE_CALL(__func__);
733 priv = remmina_message_panel_get_instance_private(mp);
735 if (priv->
w[entryid] == NULL)
737 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_switch_get_type()))
740 gtk_switch_set_state(GTK_SWITCH(priv->
w[entryid]), state);
745 TRACE_CALL(__func__);
751 priv = remmina_message_panel_get_instance_private(mp);
753 if (priv->
w[entryid] == NULL)
755 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_switch_get_type()))
758 return gtk_switch_get_state(GTK_SWITCH(priv->
w[entryid]));
764 TRACE_CALL(__func__);
770 priv = remmina_message_panel_get_instance_private(mp);
771 if (priv->
w[entryid] == NULL)
773 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_file_chooser_button_get_type()))
776 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(priv->
w[entryid]), filename);
781 TRACE_CALL(__func__);
787 priv = remmina_message_panel_get_instance_private(mp);
789 if (priv->
w[entryid] == NULL)
791 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_file_chooser_button_get_type()))
794 return gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(priv->
w[entryid]));
static void remmina_message_panel_init(RemminaMessagePanel *mp)
static guint messagepanel_signals[LAST_SIGNAL]
void remmina_message_panel_setup_auth(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data, const gchar *title, const gchar *password_prompt, unsigned flags)
void remmina_message_panel_setup_question(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
gchar * remmina_message_panel_field_get_filename(RemminaMessagePanel *mp, int entryid)
void * response_callback_data
void remmina_message_panel_setup_auth_x509(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
static void remmina_message_panel_class_init(RemminaMessagePanelClass *class)
void remmina_message_panel_focus_auth_entry(RemminaMessagePanel *mp)
void remmina_message_panel_field_set_string(RemminaMessagePanel *mp, int entryid, const gchar *text)
void remmina_message_panel_field_set_filename(RemminaMessagePanel *mp, int entryid, const gchar *filename)
gboolean remmina_masterthread_exec_is_main_thread()
void remmina_message_panel_field_set_switch(RemminaMessagePanel *mp, int entryid, gboolean state)
void(* RemminaMessagePanelCallback)(void *user_data, int button)
G_DEFINE_TYPE_WITH_PRIVATE(RemminaMessagePanel, remmina_message_panel, GTK_TYPE_BOX)
gchar * remmina_message_panel_field_get_string(RemminaMessagePanel *mp, int entryid)
void remmina_message_panel_setup_progress(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
void remmina_main_toggle_password_view(GtkWidget *widget, gpointer data)
void remmina_message_panel_setup_message(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
gboolean remmina_message_panel_field_get_switch_state(RemminaMessagePanel *mp, int entryid)
static const gchar btn_response_key[]
void remmina_message_panel_response(RemminaMessagePanel *mp, gint response_id)
RemminaMessagePanelCallback response_callback
GtkWidget * w[REMMINA_MESSAGE_PANEL_MAXWIDGETID]
RemminaMessagePanel * remmina_message_panel_new()
static void remmina_message_panel_button_clicked_callback(GtkButton *button, gpointer user_data)