From 5b52622db7ee7d9021b1a5e5a1be52242ff2b719 Mon Sep 17 00:00:00 2001
From: Antenore Gatta
Date: Fri, 16 Jun 2023 13:02:20 +0000
Subject: Automatic doc build by remmina-ci
---
public/globals_func_r.html | 407 ++++++++++++-----------
public/globals_r.html | 367 ++++++++++----------
public/navtreedata.js | 24 +-
public/navtreeindex10.js | 4 +-
public/navtreeindex11.js | 4 +-
public/navtreeindex12.js | 4 +-
public/navtreeindex13.js | 4 +-
public/navtreeindex14.js | 4 +-
public/navtreeindex15.js | 4 +-
public/navtreeindex16.js | 4 +-
public/navtreeindex17.js | 4 +-
public/navtreeindex18.js | 1 +
public/navtreeindex5.js | 6 +-
public/navtreeindex6.js | 14 +-
public/navtreeindex7.js | 10 +-
public/navtreeindex8.js | 4 +-
public/navtreeindex9.js | 4 +-
public/rcw_8c_source.html | 8 +-
public/remmina__exec_8c_source.html | 8 +-
public/remmina__file_8c_source.html | 4 +-
public/remmina__file__editor_8c.html | 122 +++----
public/remmina__file__editor_8c.js | 1 -
public/remmina__file__editor_8c_source.html | 89 +++--
public/remmina__file__editor_8h.html | 14 +-
public/remmina__file__editor_8h_source.html | 14 +-
public/remmina__main_8c.html | 128 ++++---
public/remmina__main_8c.js | 1 +
public/remmina__main_8c_source.html | 79 ++---
public/remmina__main_8h.html | 68 +++-
public/remmina__main_8h.js | 1 +
public/remmina__main_8h_source.html | 37 ++-
public/remmina__message__panel_8c.html | 40 +--
public/remmina__message__panel_8c_source.html | 50 +--
public/remmina__message__panel_8h.html | 28 +-
public/remmina__message__panel_8h_source.html | 28 +-
public/remmina__mpchange_8c_source.html | 2 +-
public/remmina__plugin__manager_8c_source.html | 4 +-
public/remmina__protocol__widget_8c_source.html | 24 +-
public/search/all_12.js | 2 +-
public/search/functions_11.js | 2 +-
public/struct_remmina_message_panel_private.html | 8 +-
41 files changed, 831 insertions(+), 800 deletions(-)
diff --git a/public/globals_func_r.html b/public/globals_func_r.html
index 65edc4d17..acd5c3598 100644
--- a/public/globals_func_r.html
+++ b/public/globals_func_r.html
@@ -1008,9 +1008,6 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_file.c
, remmina_file.h
-remmina_file_toggle_password_view()
-: remmina_file_editor.c
-
remmina_file_touch()
: remmina_file.c
, remmina_file.h
@@ -1397,8 +1394,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_main.h
remmina_main_on_action_application_default()
-: remmina_main.c
-, remmina_main.h
+: remmina_main.h
+, remmina_main.c
remmina_main_on_action_application_mpchange()
: remmina_main.c
@@ -1558,6 +1555,10 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_main.c
, remmina_main.h
+remmina_main_toggle_password_view()
+: remmina_main.c
+, remmina_main.h
+
remmina_main_tree_row_activated()
: remmina_main.c
@@ -2199,8 +2200,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: vnc_plugin.c
remmina_plugin_vnc_update_scale()
-: vnc_plugin.c
-, vnc_plugin.h
+: vnc_plugin.h
+, vnc_plugin.c
remmina_plugin_www_close_connection()
: www_plugin.c
@@ -2210,15 +2211,15 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, www_plugin.h
remmina_plugin_www_decide_newwin()
-: www_plugin.h
-, www_plugin.c
+: www_plugin.c
+, www_plugin.h
remmina_plugin_www_decide_policy_cb()
: www_plugin.c
remmina_plugin_www_decide_resource()
-: www_plugin.c
-, www_plugin.h
+: www_plugin.h
+, www_plugin.c
remmina_plugin_www_download_started()
: www_plugin.c
@@ -2249,8 +2250,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: www_plugin.c
remmina_plugin_www_response_received()
-: www_plugin.c
-, www_plugin.h
+: www_plugin.h
+, www_plugin.c
remmina_plugin_www_save_snapshot()
: www_plugin.c
@@ -2260,8 +2261,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_pref.h
remmina_pref_clear_recent()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_dialog_add_pref_plugin()
: remmina_pref_dialog.c
@@ -2280,8 +2281,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_pref_dialog.c
remmina_pref_dialog_new()
-: remmina_pref_dialog.h
-, remmina_pref_dialog.c
+: remmina_pref_dialog.c
+, remmina_pref_dialog.h
remmina_pref_dialog_on_action_close()
: remmina_pref_dialog.c
@@ -2317,8 +2318,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_pref.c
remmina_pref_get_recent()
-: remmina_pref.c
-, remmina_pref.h
+: remmina_pref.h
+, remmina_pref.c
remmina_pref_get_scale_quality()
: remmina_pref.c
@@ -2328,15 +2329,15 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: python_wrapper_remmina.c
remmina_pref_get_ssh_loglevel()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_get_ssh_loglevel_wrapper()
: python_wrapper_remmina.c
remmina_pref_get_ssh_parseconfig()
-: remmina_pref.c
-, remmina_pref.h
+: remmina_pref.h
+, remmina_pref.c
remmina_pref_get_ssh_parseconfig_wrapper()
: python_wrapper_remmina.c
@@ -2354,8 +2355,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_pref.h
remmina_pref_get_ssh_tcp_usrtimeout()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_get_sshtunnel_port()
: remmina_pref.c
@@ -2372,8 +2373,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: python_wrapper_remmina.c
remmina_pref_init()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_init_keymap()
: remmina_pref.c
@@ -2390,8 +2391,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: python_wrapper_remmina.c
remmina_pref_keymap_get_table()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_keymap_groups()
: remmina_pref.c
@@ -2410,8 +2411,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_pref_dialog.c
remmina_pref_save()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_set_value()
: remmina_pref.c
@@ -2473,8 +2474,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_call_feature_by_type()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_chat_close()
: remmina_protocol_widget.c
@@ -2484,8 +2485,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_protocol_widget.c
remmina_protocol_widget_chat_open()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_chat_receive()
: remmina_protocol_widget.c
@@ -2519,16 +2520,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_get_cacert()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_get_cacrl()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_get_clientcert()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_get_clientkey()
: remmina_protocol_widget.c
@@ -2543,24 +2544,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_get_error_message()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_get_expand()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_get_features()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_get_file()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_get_gtkwindow()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_get_height()
: remmina_protocol_widget.c
@@ -2575,8 +2576,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_get_password()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_get_profile_remote_height()
: remmina_protocol_widget.c
@@ -2586,15 +2587,15 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: python_wrapper_remmina.c
remmina_protocol_widget_get_profile_remote_width()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_get_profile_remote_width_wrapper()
: python_wrapper_remmina.c
remmina_protocol_widget_get_savepassword()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_get_type()
: remmina_protocol_widget.h
@@ -2612,8 +2613,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_gtkviewport()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_has_error()
: remmina_protocol_widget.c
@@ -2646,8 +2647,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_new()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_on_key_press()
: remmina_protocol_widget.c
@@ -2656,8 +2657,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_protocol_widget.c
remmina_protocol_widget_open_connection()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_open_connection_real()
: remmina_protocol_widget.c
@@ -2667,8 +2668,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_panel_authuserpwd_ssh_tunnel()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_panel_authx509()
: remmina_protocol_widget.c
@@ -2682,24 +2683,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_protocol_widget.h
remmina_protocol_widget_panel_hide()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_panel_new_certificate()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_panel_question_yesno()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_panel_show()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_panel_show_listen()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_panel_show_retry()
: remmina_protocol_widget.c
@@ -2714,16 +2715,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_query_feature_by_ref()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_query_feature_by_type()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_register_hostkey()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_save_cred()
: remmina_protocol_widget.c
@@ -2733,8 +2734,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_protocol_widget.c
remmina_protocol_widget_send_clipboard()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_send_keys_signals()
: remmina_protocol_widget.c
@@ -2749,24 +2750,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_set_display()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_set_error()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_set_expand()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_set_height()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_set_hostkey_func()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_set_width()
: remmina_protocol_widget.c
@@ -2781,24 +2782,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_signal_connection_opened()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_ssh_exec()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_start_direct_tunnel()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_start_reverse_tunnel()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_start_xport_tunnel()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_tunnel_destroy()
: remmina_protocol_widget.c
@@ -2883,24 +2884,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: python_wrapper_remmina.c
remmina_public_get_xauth_cookie()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_gtk_builder_new_from_file()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_gtk_builder_new_from_resource()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_gtk_widget_reparent()
: remmina_public.h
, remmina_public.c
remmina_public_load_combo_text_d()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_open_unix_sock()
: remmina_public.c
@@ -2915,24 +2916,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_public.h
remmina_public_resolution_validation_func()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_send_notification()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_split_resolution_string()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_str_replace()
: remmina_public.h
, remmina_public.c
remmina_public_str_replace_in_place()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_rdp_authenticate()
: rdp_plugin.c
@@ -2948,26 +2949,26 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, rdp_cliprdr.h
remmina_rdp_clipboard_free()
-: rdp_cliprdr.c
-, rdp_cliprdr.h
+: rdp_cliprdr.h
+, rdp_cliprdr.c
remmina_rdp_clipboard_init()
-: rdp_cliprdr.c
-, rdp_cliprdr.h
+: rdp_cliprdr.h
+, rdp_cliprdr.c
remmina_rdp_cliprdr_cached_clipboard_free()
: rdp_cliprdr.c
remmina_rdp_cliprdr_detach_owner()
-: rdp_cliprdr.h
-, rdp_cliprdr.c
+: rdp_cliprdr.c
+, rdp_cliprdr.h
remmina_rdp_cliprdr_empty_clipboard()
: rdp_cliprdr.c
remmina_rdp_cliprdr_get_client_format_list()
-: rdp_cliprdr.c
-, rdp_cliprdr.h
+: rdp_cliprdr.h
+, rdp_cliprdr.c
remmina_rdp_cliprdr_get_clipboard_data()
: rdp_cliprdr.c
@@ -2979,8 +2980,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_cliprdr.c
remmina_rdp_cliprdr_init()
-: rdp_cliprdr.h
-, rdp_cliprdr.c
+: rdp_cliprdr.c
+, rdp_cliprdr.h
remmina_rdp_cliprdr_monitor_ready()
: rdp_cliprdr.c
@@ -3046,8 +3047,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_event.c
remmina_rdp_event_event_push()
-: rdp_event.c
-, rdp_plugin.h
+: rdp_plugin.h
+, rdp_event.c
remmina_rdp_event_free_cursor()
: rdp_event.c
@@ -3056,8 +3057,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_event.c
remmina_rdp_event_init()
-: rdp_event.c
-, rdp_event.h
+: rdp_event.h
+, rdp_event.c
remmina_rdp_event_init_keymap()
: rdp_event.c
@@ -3081,8 +3082,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_event.c
remmina_rdp_event_on_map()
-: rdp_event.h
-, rdp_event.c
+: rdp_event.c
+, rdp_event.h
remmina_rdp_event_on_motion()
: rdp_event.c
@@ -3091,8 +3092,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_event.c
remmina_rdp_event_on_unmap()
-: rdp_event.h
-, rdp_event.c
+: rdp_event.c
+, rdp_event.h
remmina_rdp_event_process_clipboard()
: rdp_cliprdr.h
@@ -3111,16 +3112,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_event.c
remmina_rdp_event_queue_ui_async()
-: rdp_event.h
-, rdp_event.c
+: rdp_event.c
+, rdp_event.h
remmina_rdp_event_queue_ui_sync_retint()
: rdp_event.h
, rdp_event.c
remmina_rdp_event_queue_ui_sync_retptr()
-: rdp_event.h
-, rdp_event.c
+: rdp_event.c
+, rdp_event.h
remmina_rdp_event_reconnect_progress()
: rdp_event.c
@@ -3138,8 +3139,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_event.c
remmina_rdp_event_send_delayed_monitor_layout()
-: rdp_event.c
-, rdp_event.h
+: rdp_event.h
+, rdp_event.c
remmina_rdp_event_set_pointer_position()
: rdp_event.c
@@ -3148,23 +3149,23 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_event.c
remmina_rdp_event_unfocus()
-: rdp_event.c
-, rdp_event.h
+: rdp_event.h
+, rdp_event.c
remmina_rdp_event_uninit()
-: rdp_event.c
-, rdp_event.h
+: rdp_event.h
+, rdp_event.c
remmina_rdp_event_update_rect()
-: rdp_event.c
-, rdp_event.h
+: rdp_event.h
+, rdp_event.c
remmina_rdp_event_update_regions()
: rdp_event.c
remmina_rdp_event_update_scale()
-: rdp_event.h
-, rdp_event.c
+: rdp_event.c
+, rdp_event.h
remmina_rdp_event_update_scale_factor()
: rdp_event.c
@@ -3177,12 +3178,12 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_file.c
remmina_rdp_file_export_test()
-: rdp_file.h
-, rdp_file.c
+: rdp_file.c
+, rdp_file.h
remmina_rdp_file_import()
-: rdp_file.h
-, rdp_file.c
+: rdp_file.c
+, rdp_file.h
remmina_rdp_file_import_channel()
: rdp_file.c
@@ -3226,8 +3227,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, rdp_monitor.h
remmina_rdp_OnChannelConnectedEventHandler()
-: rdp_channels.c
-, rdp_channels.h
+: rdp_channels.h
+, rdp_channels.c
remmina_rdp_OnChannelDisconnectedEventHandler()
: rdp_channels.c
@@ -3261,8 +3262,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_settings.c
remmina_rdp_settings_get_keyboard_layout()
-: rdp_settings.h
-, rdp_settings.c
+: rdp_settings.c
+, rdp_settings.h
remmina_rdp_settings_get_orientation_scale_prefs()
: rdp_settings.c
@@ -3340,8 +3341,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_scheduler.c
remmina_scheduler_setup()
-: remmina_scheduler.c
-, remmina_scheduler.h
+: remmina_scheduler.h
+, remmina_scheduler.c
remmina_scrolled_viewport_class_init()
: remmina_scrolled_viewport.c
@@ -3391,8 +3392,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_ssh_plugin.c
remmina_sftp_client_confirm_resume()
-: remmina_sftp_client.h
-, remmina_sftp_client.c
+: remmina_sftp_client.c
+, remmina_sftp_client.h
remmina_sftp_client_destroy()
: remmina_sftp_client.c
@@ -3420,8 +3421,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_sftp_client.c
remmina_sftp_client_open()
-: remmina_sftp_client.c
-, remmina_sftp_client.h
+: remmina_sftp_client.h
+, remmina_sftp_client.c
remmina_sftp_client_refresh()
: remmina_sftp_client.c
@@ -3483,24 +3484,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_utils.c
remmina_sodium_init()
-: remmina_sodium.c
-, remmina_sodium.h
+: remmina_sodium.h
+, remmina_sodium.c
remmina_sodium_pwhash()
-: remmina_sodium.c
-, remmina_sodium.h
+: remmina_sodium.h
+, remmina_sodium.c
remmina_sodium_pwhash_str()
-: remmina_sodium.h
-, remmina_sodium.c
+: remmina_sodium.c
+, remmina_sodium.h
remmina_sodium_pwhash_str_verify()
-: remmina_sodium.c
-, remmina_sodium.h
+: remmina_sodium.h
+, remmina_sodium.c
remmina_ssh_auth()
-: remmina_ssh.h
-, remmina_ssh.c
+: remmina_ssh.c
+, remmina_ssh.h
remmina_ssh_auth_agent()
: remmina_ssh.c
@@ -3578,19 +3579,19 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_ssh_plugin.h
remmina_ssh_plugin_register()
-: remmina_ssh_plugin.h
-, remmina_ssh_plugin.c
+: remmina_ssh_plugin.c
+, remmina_ssh_plugin.h
remmina_ssh_search_item()
: remmina_ssh.c
remmina_ssh_set_application_error()
-: remmina_ssh.c
-, remmina_ssh.h
+: remmina_ssh.h
+, remmina_ssh.c
remmina_ssh_set_error()
-: remmina_ssh.h
-, remmina_ssh.c
+: remmina_ssh.c
+, remmina_ssh.h
remmina_ssh_set_nodelay()
: remmina_ssh.c
@@ -3647,8 +3648,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_ssh.c
remmina_stats_get_all()
-: remmina_stats.h
-, remmina_stats.c
+: remmina_stats.c
+, remmina_stats.h
remmina_stats_get_gtk_backend()
: remmina_stats.c
@@ -3699,12 +3700,12 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_string_array.h
remmina_string_array_intersect()
-: remmina_string_array.c
-, remmina_string_array.h
+: remmina_string_array.h
+, remmina_string_array.c
remmina_string_array_new()
-: remmina_string_array.c
-, remmina_string_array.h
+: remmina_string_array.h
+, remmina_string_array.c
remmina_string_array_new_from_allocated_string()
: remmina_string_array.h
@@ -3715,24 +3716,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_string_array.h
remmina_string_array_remove()
-: remmina_string_array.c
-, remmina_string_array.h
+: remmina_string_array.h
+, remmina_string_array.c
remmina_string_array_remove_index()
-: remmina_string_array.c
-, remmina_string_array.h
+: remmina_string_array.h
+, remmina_string_array.c
remmina_string_array_sort()
: remmina_string_array.h
, remmina_string_array.c
remmina_string_array_to_string()
-: remmina_string_array.h
-, remmina_string_array.c
+: remmina_string_array.c
+, remmina_string_array.h
remmina_string_list_get_text()
-: remmina_string_list.h
-, remmina_string_list.c
+: remmina_string_list.c
+, remmina_string_list.h
remmina_string_list_init()
: remmina_string_list.c
@@ -3760,8 +3761,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_string_list.c
remmina_string_list_set_text()
-: remmina_string_list.h
-, remmina_string_list.c
+: remmina_string_list.c
+, remmina_string_list.h
remmina_string_list_set_titles()
: remmina_string_list.c
@@ -3775,16 +3776,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_string_list.c
remmina_sysinfo_get_gnome_shell_version()
-: remmina_sysinfo.h
-, remmina_sysinfo.c
+: remmina_sysinfo.c
+, remmina_sysinfo.h
remmina_sysinfo_get_wm_name()
: remmina_sysinfo.c
, remmina_sysinfo.h
remmina_sysinfo_is_appindicator_available()
-: remmina_sysinfo.c
-, remmina_sysinfo.h
+: remmina_sysinfo.h
+, remmina_sysinfo.c
remmina_tp_channel_handler_accept()
: telepathy_channel_handler.c
@@ -3862,8 +3863,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_unlock.c
remmina_utils_get_etc_release()
-: remmina_utils.h
-, remmina_utils.c
+: remmina_utils.c
+, remmina_utils.h
remmina_utils_get_kernel_arch()
: remmina_utils.h
@@ -3878,24 +3879,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_utils.h
remmina_utils_get_lang()
-: remmina_utils.h
-, remmina_utils.c
+: remmina_utils.c
+, remmina_utils.h
remmina_utils_get_lsb_codename()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_get_lsb_description()
-: remmina_utils.h
-, remmina_utils.c
+: remmina_utils.c
+, remmina_utils.h
remmina_utils_get_lsb_id()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_get_lsb_release()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_get_os_info()
: remmina_utils.c
@@ -3909,16 +3910,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, remmina_utils.c
remmina_utils_string_replace()
-: remmina_utils.h
-, remmina_utils.c
+: remmina_utils.c
+, remmina_utils.h
remmina_utils_string_replace_all()
: remmina_utils.c
, remmina_utils.h
remmina_utils_string_strip()
-: remmina_utils.h
-, remmina_utils.c
+: remmina_utils.c
+, remmina_utils.h
remmina_utils_strpos()
: remmina_utils.c
@@ -3947,8 +3948,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: remmina_widget_pool.c
remmina_widget_pool_register()
-: remmina_widget_pool.h
-, remmina_widget_pool.c
+: remmina_widget_pool.c
+, remmina_widget_pool.h
remmina_widget_pool_register_wrapper()
: python_wrapper_remmina.c
@@ -4044,8 +4045,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: rdp_plugin.c
rf_register_graphics()
-: rdp_graphics.h
-, rdp_graphics.c
+: rdp_graphics.c
+, rdp_graphics.h
rf_uninit()
: rdp_plugin.h
diff --git a/public/globals_r.html b/public/globals_r.html
index d1e759761..904d17ff8 100644
--- a/public/globals_r.html
+++ b/public/globals_r.html
@@ -1122,9 +1122,6 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_file.c
, remmina_file.h
-remmina_file_toggle_password_view()
-: remmina_file_editor.c
-
remmina_file_touch()
: remmina_file.c
, remmina_file.h
@@ -1429,8 +1426,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_icon.h
remmina_icon_is_autostart()
-: remmina_icon.c
-, remmina_icon.h
+: remmina_icon.h
+, remmina_icon.c
remmina_icon_is_available()
: remmina_icon.c
@@ -1783,6 +1780,10 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_main.c
, remmina_main.h
+remmina_main_toggle_password_view()
+: remmina_main.c
+, remmina_main.h
+
remmina_main_tree_row_activated()
: remmina_main.c
@@ -2757,8 +2758,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_pref.c
remmina_pref_file_load_colors()
-: remmina_pref.c
-, remmina_pref.h
+: remmina_pref.h
+, remmina_pref.c
remmina_pref_gen_secret()
: remmina_pref.c
@@ -2771,8 +2772,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_pref.c
remmina_pref_get_recent()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_get_scale_quality()
: remmina_pref.c
@@ -2796,24 +2797,24 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: python_wrapper_remmina.c
remmina_pref_get_ssh_tcp_keepcnt()
-: remmina_pref.c
-, remmina_pref.h
+: remmina_pref.h
+, remmina_pref.c
remmina_pref_get_ssh_tcp_keepidle()
: remmina_pref.c
, remmina_pref.h
remmina_pref_get_ssh_tcp_keepintvl()
-: remmina_pref.c
-, remmina_pref.h
+: remmina_pref.h
+, remmina_pref.c
remmina_pref_get_ssh_tcp_usrtimeout()
: remmina_pref.c
, remmina_pref.h
remmina_pref_get_sshtunnel_port()
-: remmina_pref.c
-, remmina_pref.h
+: remmina_pref.h
+, remmina_pref.c
remmina_pref_get_sshtunnel_port_wrapper()
: python_wrapper_remmina.c
@@ -2833,8 +2834,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_pref.c
remmina_pref_is_rw()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_keymap_get_keyval()
: remmina_pref.c
@@ -2848,8 +2849,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_pref.h
remmina_pref_keymap_groups()
-: remmina_pref.c
-, remmina_pref.h
+: remmina_pref.h
+, remmina_pref.c
remmina_pref_on_button_keystrokes_clicked()
: remmina_pref_dialog.c
@@ -2871,8 +2872,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_pref.h
remmina_pref_set_value()
-: remmina_pref.h
-, remmina_pref.c
+: remmina_pref.c
+, remmina_pref.h
remmina_pref_set_value_wrapper()
: python_wrapper_remmina.c
@@ -3011,8 +3012,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_call_feature_by_type()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_chat_close()
: remmina_protocol_widget.c
@@ -3026,8 +3027,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_chat_receive()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_class_init()
: remmina_protocol_widget.c
@@ -3057,16 +3058,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_get_cacert()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_get_cacrl()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_get_clientcert()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_get_clientkey()
: remmina_protocol_widget.c
@@ -3081,24 +3082,24 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_get_error_message()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_get_expand()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_get_features()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_get_file()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_get_gtkwindow()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_get_height()
: remmina_protocol_widget.c
@@ -3113,8 +3114,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_get_password()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_get_profile_remote_height()
: remmina_protocol_widget.c
@@ -3131,8 +3132,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: python_wrapper_remmina.c
remmina_protocol_widget_get_savepassword()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_get_type()
: remmina_protocol_widget.h
@@ -3146,16 +3147,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_grab_focus()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_gtkviewport()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_has_error()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_init()
: remmina_protocol_widget.c
@@ -3164,8 +3165,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_protocol_widget.c
remmina_protocol_widget_is_closed()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_lock_dynres()
: remmina_protocol_widget.c
@@ -3180,8 +3181,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_mpprogress()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_new()
: remmina_protocol_widget.c
@@ -3201,8 +3202,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_protocol_widget.c
remmina_protocol_widget_panel_auth()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_panel_authuserpwd_ssh_tunnel()
: remmina_protocol_widget.c
@@ -3224,16 +3225,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_panel_new_certificate()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_panel_question_yesno()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_panel_show()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_panel_show_listen()
: remmina_protocol_widget.c
@@ -3248,24 +3249,24 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_plugin_screenshot()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_query_feature_by_ref()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_query_feature_by_type()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_register_hostkey()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_save_cred()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES
: types.h
@@ -3284,24 +3285,24 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_send_keys_signals()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_send_keystrokes()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_set_current_scale_mode()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_set_display()
: remmina_protocol_widget.c
, remmina_protocol_widget.h
remmina_protocol_widget_set_error()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_set_expand()
: remmina_protocol_widget.c
@@ -3324,8 +3325,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_signal_connection_closed()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_signal_connection_opened()
: remmina_protocol_widget.c
@@ -3335,8 +3336,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_protocol_widget.c
remmina_protocol_widget_ssh_exec()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_start_direct_tunnel()
: remmina_protocol_widget.c
@@ -3358,8 +3359,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_protocol_widget.h
remmina_protocol_widget_unmap_event()
-: remmina_protocol_widget.c
-, remmina_protocol_widget.h
+: remmina_protocol_widget.h
+, remmina_protocol_widget.c
remmina_protocol_widget_update_align()
: remmina_protocol_widget.c
@@ -3369,8 +3370,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: rcw.c
remmina_protocol_widget_update_remote_resolution()
-: remmina_protocol_widget.h
-, remmina_protocol_widget.c
+: remmina_protocol_widget.c
+, remmina_protocol_widget.h
remmina_protocol_widget_xport_tunnel_connect_callback()
: remmina_protocol_widget.c
@@ -3386,24 +3387,24 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_public.h
remmina_public_combo_get_active_text()
-: remmina_public.c
-, remmina_public.h
+: remmina_public.h
+, remmina_public.c
remmina_public_create_combo()
: remmina_public.c
, remmina_public.h
remmina_public_create_combo_entry()
-: remmina_public.c
-, remmina_public.h
+: remmina_public.h
+, remmina_public.c
remmina_public_create_combo_map()
: remmina_public.c
, remmina_public.h
remmina_public_create_combo_mapint()
-: remmina_public.c
-, remmina_public.h
+: remmina_public.h
+, remmina_public.c
remmina_public_create_combo_text_d()
: remmina_public.c
@@ -3418,16 +3419,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_public.h
remmina_public_get_modifier_for_keycode()
-: remmina_public.c
-, remmina_public.h
+: remmina_public.h
+, remmina_public.c
remmina_public_get_server_port()
: remmina_public.c
, remmina_public.h
remmina_public_get_server_port_old()
-: remmina_public.c
-, remmina_public.h
+: remmina_public.h
+, remmina_public.c
remmina_public_get_server_port_wrapper()
: python_wrapper_remmina.c
@@ -3437,8 +3438,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_public.h
remmina_public_gtk_builder_new_from_file()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_gtk_builder_new_from_resource()
: remmina_public.c
@@ -3453,24 +3454,24 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_public.h
remmina_public_open_unix_sock()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_open_xdisplay()
: remmina_public.c
, remmina_public.h
remmina_public_popup_position()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_resolution_validation_func()
: remmina_public.c
, remmina_public.h
remmina_public_send_notification()
-: remmina_public.h
-, remmina_public.c
+: remmina_public.c
+, remmina_public.h
remmina_public_split_resolution_string()
: remmina_public.c
@@ -3527,8 +3528,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: rdp_cliprdr.c
remmina_rdp_cliprdr_detach_owner()
-: rdp_cliprdr.h
-, rdp_cliprdr.c
+: rdp_cliprdr.c
+, rdp_cliprdr.h
remmina_rdp_cliprdr_empty_clipboard()
: rdp_cliprdr.c
@@ -3547,8 +3548,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: rdp_cliprdr.c
remmina_rdp_cliprdr_init()
-: rdp_cliprdr.h
-, rdp_cliprdr.c
+: rdp_cliprdr.c
+, rdp_cliprdr.h
remmina_rdp_cliprdr_monitor_ready()
: rdp_cliprdr.c
@@ -3617,8 +3618,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: rdp_plugin.h
remmina_rdp_event_event_push()
-: rdp_plugin.h
-, rdp_event.c
+: rdp_event.c
+, rdp_plugin.h
remmina_rdp_event_free_cursor()
: rdp_event.c
@@ -3666,8 +3667,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, rdp_event.c
remmina_rdp_event_process_clipboard()
-: rdp_cliprdr.h
-, rdp_cliprdr.c
+: rdp_cliprdr.c
+, rdp_cliprdr.h
remmina_rdp_event_process_event()
: rdp_event.c
@@ -3744,12 +3745,12 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, rdp_event.h
remmina_rdp_event_uninit()
-: rdp_event.c
-, rdp_event.h
+: rdp_event.h
+, rdp_event.c
remmina_rdp_event_update_rect()
-: rdp_event.h
-, rdp_event.c
+: rdp_event.c
+, rdp_event.h
remmina_rdp_event_update_regions()
: rdp_event.c
@@ -3765,8 +3766,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: rdp_plugin.c
remmina_rdp_file_export()
-: rdp_file.c
-, rdp_file.h
+: rdp_file.h
+, rdp_file.c
remmina_rdp_file_export_channel()
: rdp_file.c
@@ -3821,8 +3822,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, rdp_monitor.h
remmina_rdp_OnChannelConnectedEventHandler()
-: rdp_channels.h
-, rdp_channels.c
+: rdp_channels.c
+, rdp_channels.h
remmina_rdp_OnChannelDisconnectedEventHandler()
: rdp_channels.h
@@ -3910,8 +3911,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: rdp_settings.c
remmina_rdp_settings_new()
-: rdp_settings.c
-, rdp_settings.h
+: rdp_settings.h
+, rdp_settings.c
remmina_rdp_settings_quality_on_changed()
: rdp_settings.c
@@ -3946,18 +3947,18 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
REMMINA_RDP_UI_EVENT
: rdp_plugin.h
-REMMINA_RDP_UI_EVENT_DESTROY_CAIRO_SURFACE
-: rdp_plugin.h
-
remmina_rdp_ui_event_destroy_cairo_surface()
: rdp_event.c
-REMMINA_RDP_UI_EVENT_UPDATE_SCALE
-: rdp_plugin.h
+REMMINA_RDP_UI_EVENT_DESTROY_CAIRO_SURFACE
+: rdp_plugin.h
remmina_rdp_ui_event_update_scale()
: rdp_event.c
+REMMINA_RDP_UI_EVENT_UPDATE_SCALE
+: rdp_plugin.h
+
REMMINA_RDP_UI_NOCODEC
: rdp_plugin.h
@@ -4023,8 +4024,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_scrolled_viewport.c
remmina_scrolled_viewport_new()
-: remmina_scrolled_viewport.h
-, remmina_scrolled_viewport.c
+: remmina_scrolled_viewport.c
+, remmina_scrolled_viewport.h
remmina_scrolled_viewport_remove_motion()
: remmina_scrolled_viewport.c
@@ -4052,8 +4053,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_sftp_plugin.c
remmina_sftp_client_confirm_resume()
-: remmina_sftp_client.c
-, remmina_sftp_client.h
+: remmina_sftp_client.h
+, remmina_sftp_client.c
remmina_sftp_client_destroy()
: remmina_sftp_client.c
@@ -4065,8 +4066,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_sftp_client.c
remmina_sftp_client_new()
-: remmina_sftp_client.h
-, remmina_sftp_client.c
+: remmina_sftp_client.c
+, remmina_sftp_client.h
remmina_sftp_client_on_canceltask()
: remmina_sftp_client.c
@@ -4136,28 +4137,28 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_ssh.h
remmina_sftp_plugin_register()
-: remmina_sftp_plugin.c
-, remmina_sftp_plugin.h
+: remmina_sftp_plugin.h
+, remmina_sftp_plugin.c
remmina_sha1_file()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_sodium_init()
: remmina_sodium.c
, remmina_sodium.h
remmina_sodium_pwhash()
-: remmina_sodium.c
-, remmina_sodium.h
+: remmina_sodium.h
+, remmina_sodium.c
remmina_sodium_pwhash_str()
-: remmina_sodium.c
-, remmina_sodium.h
+: remmina_sodium.h
+, remmina_sodium.c
remmina_sodium_pwhash_str_verify()
-: remmina_sodium.c
-, remmina_sodium.h
+: remmina_sodium.h
+, remmina_sodium.c
remmina_ssh_advanced_settings
: remmina_ssh_plugin.c
@@ -4249,8 +4250,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_ssh.h
remmina_ssh_identity_path()
-: remmina_ssh.h
-, remmina_ssh.c
+: remmina_ssh.c
+, remmina_ssh.h
remmina_ssh_init_from_file()
: remmina_ssh.h
@@ -4272,19 +4273,19 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_ssh_plugin.h
remmina_ssh_plugin_register()
-: remmina_ssh_plugin.c
-, remmina_ssh_plugin.h
+: remmina_ssh_plugin.h
+, remmina_ssh_plugin.c
remmina_ssh_search_item()
: remmina_ssh.c
remmina_ssh_set_application_error()
-: remmina_ssh.h
-, remmina_ssh.c
+: remmina_ssh.c
+, remmina_ssh.h
remmina_ssh_set_error()
-: remmina_ssh.h
-, remmina_ssh.c
+: remmina_ssh.c
+, remmina_ssh.h
remmina_ssh_set_nodelay()
: remmina_ssh.c
@@ -4322,12 +4323,12 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
REMMINA_SSH_TUNNEL_OPEN
: remmina_ssh.h
-REMMINA_SSH_TUNNEL_REVERSE
-: remmina_ssh.h
-
remmina_ssh_tunnel_reverse()
: remmina_ssh.h
+REMMINA_SSH_TUNNEL_REVERSE
+: remmina_ssh.h
+
remmina_ssh_tunnel_terminated()
: remmina_ssh.h
@@ -4350,8 +4351,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_ssh.c
remmina_stats_get_all()
-: remmina_stats.h
-, remmina_stats.c
+: remmina_stats.c
+, remmina_stats.h
remmina_stats_get_gtk_backend()
: remmina_stats.c
@@ -4387,19 +4388,19 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_stats.c
remmina_string_array_add()
-: remmina_string_array.h
-, remmina_string_array.c
+: remmina_string_array.c
+, remmina_string_array.h
remmina_string_array_compare_func()
: remmina_string_array.c
remmina_string_array_find()
-: remmina_string_array.c
-, remmina_string_array.h
+: remmina_string_array.h
+, remmina_string_array.c
remmina_string_array_free()
-: remmina_string_array.c
-, remmina_string_array.h
+: remmina_string_array.h
+, remmina_string_array.c
remmina_string_array_intersect()
: remmina_string_array.h
@@ -4426,8 +4427,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_string_array.h
remmina_string_array_sort()
-: remmina_string_array.h
-, remmina_string_array.c
+: remmina_string_array.c
+, remmina_string_array.h
remmina_string_array_to_string()
: remmina_string_array.c
@@ -4478,16 +4479,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_string_list.c
remmina_sysinfo_get_gnome_shell_version()
-: remmina_sysinfo.c
-, remmina_sysinfo.h
+: remmina_sysinfo.h
+, remmina_sysinfo.c
remmina_sysinfo_get_wm_name()
-: remmina_sysinfo.h
-, remmina_sysinfo.c
+: remmina_sysinfo.c
+, remmina_sysinfo.h
remmina_sysinfo_is_appindicator_available()
-: remmina_sysinfo.h
-, remmina_sysinfo.c
+: remmina_sysinfo.c
+, remmina_sysinfo.h
REMMINA_TAB_ALL
: remmina_pref.h
@@ -4607,28 +4608,28 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_unlock.c
remmina_utils_get_etc_release()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_get_kernel_arch()
: remmina_utils.c
, remmina_utils.h
remmina_utils_get_kernel_name()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_get_kernel_release()
-: remmina_utils.h
-, remmina_utils.c
+: remmina_utils.c
+, remmina_utils.h
remmina_utils_get_lang()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_get_lsb_codename()
-: remmina_utils.h
-, remmina_utils.c
+: remmina_utils.c
+, remmina_utils.h
remmina_utils_get_lsb_description()
: remmina_utils.h
@@ -4639,8 +4640,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, remmina_utils.h
remmina_utils_get_lsb_release()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_get_os_info()
: remmina_utils.c
@@ -4650,20 +4651,20 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_utils.c
remmina_utils_string_find()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_string_replace()
: remmina_utils.h
, remmina_utils.c
remmina_utils_string_replace_all()
-: remmina_utils.c
-, remmina_utils.h
+: remmina_utils.h
+, remmina_utils.c
remmina_utils_string_strip()
-: remmina_utils.h
-, remmina_utils.c
+: remmina_utils.c
+, remmina_utils.h
remmina_utils_strpos()
: remmina_utils.c
@@ -4678,12 +4679,12 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_widget_pool.c
remmina_widget_pool_count()
-: remmina_widget_pool.h
-, remmina_widget_pool.c
+: remmina_widget_pool.c
+, remmina_widget_pool.h
remmina_widget_pool_find()
-: remmina_widget_pool.c
-, remmina_widget_pool.h
+: remmina_widget_pool.h
+, remmina_widget_pool.c
remmina_widget_pool_find_by_window()
: remmina_widget_pool.c
@@ -4701,8 +4702,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_widget_pool.c
remmina_widget_pool_register()
-: remmina_widget_pool.h
-, remmina_widget_pool.c
+: remmina_widget_pool.c
+, remmina_widget_pool.h
remmina_widget_pool_register_wrapper()
: python_wrapper_remmina.c
@@ -4774,8 +4775,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: remmina_exec.h
RemminaConnectionObject
-: rcw.h
-, rcw.c
+: rcw.c
+, rcw.h
RemminaConnectionWindow
: rcw.h
diff --git a/public/navtreedata.js b/public/navtreedata.js
index 6bc6af0bb..0d2fc898d 100644
--- a/public/navtreedata.js
+++ b/public/navtreedata.js
@@ -93,19 +93,19 @@ var NAVTREEINDEX =
"rcw_8c.html#a82c93bbb1ab73807b366b86928c37946",
"rdp__plugin_8c.html#a18f77c3f0788ca8df08ebc80c72b553f",
"remmina__crypt_8c.html#a3fe2fa245d401146adf02a3a8f996ab9",
-"remmina__ftp__client_8c.html#a3a2dc5070f06ae0fcd25fbfe1587ab5c",
+"remmina__ftp__client_8c.html#a3cb68d802d3c35dff5cee970d3c33bd5",
"remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d",
-"remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743",
-"remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d",
-"remmina__ssh_8c_source.html",
-"remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c",
-"struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60",
-"struct___remmina_plugin_service.html#a46433bff9d6f3ea25b67115031e94e9b",
-"struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c",
-"struct___remmina_s_s_h.html",
-"structmpchanger__params.html#a098952d194a183d4a505aa065797864b",
-"structrf__context.html#acee2095e72fb2428c498f62e21800026",
-"www__plugin_8c.html#ae38b4f2efc412b6256221d9a33a03cd4"
+"remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c",
+"remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069",
+"remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda",
+"remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730",
+"struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49",
+"struct___remmina_plugin_service.html#a4558dbff70064da3de58a6d684611fad",
+"struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f",
+"struct___remmina_s_f_t_p_client_class.html#ac7786b1cfca2fcc92c85f10e4939f80d",
+"structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4",
+"structrf__context.html#acacad775c2c168f900deaa6c90481319",
+"www__plugin_8c.html#adb58ee650d75d952dd5802fbba9e9b0e"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/public/navtreeindex10.js b/public/navtreeindex10.js
index 31b94d6fe..44d0957e2 100644
--- a/public/navtreeindex10.js
+++ b/public/navtreeindex10.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX10 =
{
+"remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda":[61,0,133,19],
"remmina__ssh_8c_source.html":[61,0,133],
"remmina__ssh_8h.html":[61,0,134],
"remmina__ssh_8h.html#a09bd4aee40b6e8d6ba8ffaa84dc95330":[61,0,134,21],
@@ -248,6 +249,5 @@ var NAVTREEINDEX10 =
"remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8":[61,0,149,4],
"remmina__utils_8c_source.html":[61,0,149],
"remmina__utils_8h.html":[61,0,150],
-"remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324":[61,0,150,5],
-"remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730":[61,0,150,2]
+"remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324":[61,0,150,5]
};
diff --git a/public/navtreeindex11.js b/public/navtreeindex11.js
index 8367910df..4c1181147 100644
--- a/public/navtreeindex11.js
+++ b/public/navtreeindex11.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX11 =
{
+"remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730":[61,0,150,2],
"remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c":[61,0,150,6],
"remmina__utils_8h.html#a3ce53eeb3b090f86cfcdbce3e7cf71be":[61,0,150,11],
"remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c":[61,0,150,1],
@@ -248,6 +249,5 @@ var NAVTREEINDEX11 =
"struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1":[60,0,15,17],
"struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79":[60,0,15,7],
"struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500":[60,0,15,18],
-"struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4":[60,0,15,15],
-"struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49":[60,0,15,0]
+"struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4":[60,0,15,15]
};
diff --git a/public/navtreeindex12.js b/public/navtreeindex12.js
index 317daed52..a46b74cac 100644
--- a/public/navtreeindex12.js
+++ b/public/navtreeindex12.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX12 =
{
+"struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49":[60,0,15,0],
"struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60":[60,0,15,8],
"struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9":[60,0,15,13],
"struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867":[60,0,15,20],
@@ -248,6 +249,5 @@ var NAVTREEINDEX12 =
"struct___remmina_plugin_service.html#a40855f4643654a7f2a88f72008ea0b5e":[60,0,43,90],
"struct___remmina_plugin_service.html#a42ca6bc7a62f91efdba93cde19b347ce":[60,0,43,121],
"struct___remmina_plugin_service.html#a434bf35a11eea8a5b653ffd8c7823d84":[60,0,43,97],
-"struct___remmina_plugin_service.html#a45416583767fafcac3fe3a9ac50d400f":[60,0,43,104],
-"struct___remmina_plugin_service.html#a4558dbff70064da3de58a6d684611fad":[60,0,43,67]
+"struct___remmina_plugin_service.html#a45416583767fafcac3fe3a9ac50d400f":[60,0,43,104]
};
diff --git a/public/navtreeindex13.js b/public/navtreeindex13.js
index a71c2ca64..57a6e2d56 100644
--- a/public/navtreeindex13.js
+++ b/public/navtreeindex13.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX13 =
{
+"struct___remmina_plugin_service.html#a4558dbff70064da3de58a6d684611fad":[60,0,43,67],
"struct___remmina_plugin_service.html#a46433bff9d6f3ea25b67115031e94e9b":[60,0,43,89],
"struct___remmina_plugin_service.html#a48651c1147371e7e9069eb1fd06a9e4f":[60,0,43,3],
"struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3":[60,0,43,14],
@@ -248,6 +249,5 @@ var NAVTREEINDEX13 =
"struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6":[60,0,54,84],
"struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255":[60,0,54,83],
"struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011":[60,0,54,10],
-"struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e":[60,0,54,22],
-"struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f":[60,0,54,19]
+"struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e":[60,0,54,22]
};
diff --git a/public/navtreeindex14.js b/public/navtreeindex14.js
index db8a2da10..eb50753be 100644
--- a/public/navtreeindex14.js
+++ b/public/navtreeindex14.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX14 =
{
+"struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f":[60,0,54,19],
"struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c":[60,0,54,29],
"struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568":[60,0,54,4],
"struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259":[60,0,54,46],
@@ -248,6 +249,5 @@ var NAVTREEINDEX14 =
"struct___remmina_s_f_t_p_client.html#a95d95acad60636dd6c45ca93620d1f5b":[60,0,70,4],
"struct___remmina_s_f_t_p_client.html#ab74654f5e47c939e1098c183a582023c":[60,0,70,2],
"struct___remmina_s_f_t_p_client.html#ad6c612bb5172905eb63bfd5b672e1875":[60,0,70,5],
-"struct___remmina_s_f_t_p_client_class.html":[60,0,71],
-"struct___remmina_s_f_t_p_client_class.html#ac7786b1cfca2fcc92c85f10e4939f80d":[60,0,71,0]
+"struct___remmina_s_f_t_p_client_class.html":[60,0,71]
};
diff --git a/public/navtreeindex15.js b/public/navtreeindex15.js
index 510b7b79d..5fb00df1f 100644
--- a/public/navtreeindex15.js
+++ b/public/navtreeindex15.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX15 =
{
+"struct___remmina_s_f_t_p_client_class.html#ac7786b1cfca2fcc92c85f10e4939f80d":[60,0,71,0],
"struct___remmina_s_s_h.html":[60,0,72],
"struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5":[60,0,72,4],
"struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0":[60,0,72,5],
@@ -248,6 +249,5 @@ var NAVTREEINDEX15 =
"structlsb__distro__info.html":[60,0,86],
"structlsb__distro__info.html#a251763a49054183774e2082595537e47":[60,0,86,0],
"structlsb__distro__info.html#a7aba92d963bcaed1a5dda7b7be4fa6d7":[60,0,86,1],
-"structmpchanger__params.html":[60,0,87],
-"structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4":[60,0,87,13]
+"structmpchanger__params.html":[60,0,87]
};
diff --git a/public/navtreeindex16.js b/public/navtreeindex16.js
index 3c5b47b78..0355bb987 100644
--- a/public/navtreeindex16.js
+++ b/public/navtreeindex16.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX16 =
{
+"structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4":[60,0,87,13],
"structmpchanger__params.html#a098952d194a183d4a505aa065797864b":[60,0,87,16],
"structmpchanger__params.html#a170ffe7965540ab152a4a95945482c87":[60,0,87,20],
"structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46":[60,0,87,17],
@@ -248,6 +249,5 @@ var NAVTREEINDEX16 =
"structrf__context.html#aa79909e0ac140a3404151a40bed6a6ec":[60,0,113,34],
"structrf__context.html#aafce196b029d2578151275acd07ccb82":[60,0,113,24],
"structrf__context.html#ab5ffc4d8ba9d3d8a298414dc8e4efd2a":[60,0,113,30],
-"structrf__context.html#ac1f3330674d320c9d0ae408c551be6b8":[60,0,113,50],
-"structrf__context.html#acacad775c2c168f900deaa6c90481319":[60,0,113,51]
+"structrf__context.html#ac1f3330674d320c9d0ae408c551be6b8":[60,0,113,50]
};
diff --git a/public/navtreeindex17.js b/public/navtreeindex17.js
index 98cafb3a9..8c0bb5b58 100644
--- a/public/navtreeindex17.js
+++ b/public/navtreeindex17.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX17 =
{
+"structrf__context.html#acacad775c2c168f900deaa6c90481319":[60,0,113,51],
"structrf__context.html#acee2095e72fb2428c498f62e21800026":[60,0,113,15],
"structrf__context.html#ad06c1d1a2295fbdf455df0250dfb2523":[60,0,113,9],
"structrf__context.html#ad4ea260ce64d09deea422b9067ee70b4":[60,0,113,25],
@@ -248,6 +249,5 @@ var NAVTREEINDEX17 =
"www__plugin_8c.html#aab3ceb1ae095823fcbee98ce2811b374":[61,0,169,7],
"www__plugin_8c.html#ab0a82693798a5534d8657ba9f7634057":[61,0,169,15],
"www__plugin_8c.html#abc7a556e81fb1152b1e9bc68406b983f":[61,0,169,12],
-"www__plugin_8c.html#ac6b72af8913086b2ec590a675473f2a1":[61,0,169,23],
-"www__plugin_8c.html#adb58ee650d75d952dd5802fbba9e9b0e":[61,0,169,9]
+"www__plugin_8c.html#ac6b72af8913086b2ec590a675473f2a1":[61,0,169,23]
};
diff --git a/public/navtreeindex18.js b/public/navtreeindex18.js
index 4f50b0866..7ac88aeb8 100644
--- a/public/navtreeindex18.js
+++ b/public/navtreeindex18.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX18 =
{
+"www__plugin_8c.html#adb58ee650d75d952dd5802fbba9e9b0e":[61,0,169,9],
"www__plugin_8c.html#ae38b4f2efc412b6256221d9a33a03cd4":[61,0,169,19],
"www__plugin_8c.html#ae6ccaf3df9ea3201521eb62dd9943b00":[61,0,169,11],
"www__plugin_8c.html#ae8ced85169ca68aae1ed7f14b488e5b8":[61,0,169,25],
diff --git a/public/navtreeindex5.js b/public/navtreeindex5.js
index 1cc2529d5..f5bd10c34 100644
--- a/public/navtreeindex5.js
+++ b/public/navtreeindex5.js
@@ -155,7 +155,6 @@ var NAVTREEINDEX5 =
"remmina__file__editor_8c.html#a57224f3f69f04f398de563b71be6b18e":[61,0,80,41],
"remmina__file__editor_8c.html#a5ea3f796c3a46aeb01b2f13f4a3d40a9":[61,0,80,47],
"remmina__file__editor_8c.html#a6415f73260076747c4f933af7f9f4b38":[61,0,80,6],
-"remmina__file__editor_8c.html#a65b38bc13546d3d890624a79b080ffe9":[61,0,80,53],
"remmina__file__editor_8c.html#a6eb0bcee764064d6a7dd84c015d9ed4f":[61,0,80,24],
"remmina__file__editor_8c.html#a727f967cf81d4af3f953046b0c4cf08d":[61,0,80,19],
"remmina__file__editor_8c.html#a73b8581fd1fd77532b748d91a2951f25":[61,0,80,37],
@@ -174,7 +173,7 @@ var NAVTREEINDEX5 =
"remmina__file__editor_8c.html#aa5c50852f8569f075eec5d5db30c2ebf":[61,0,80,32],
"remmina__file__editor_8c.html#aa9345cfe3fb32d326b652e96ee55eaea":[61,0,80,34],
"remmina__file__editor_8c.html#aaa55ab55c6806aef6765eb01577365f3":[61,0,80,36],
-"remmina__file__editor_8c.html#aadf4d0ab51fe09231b48d4a2939564f7":[61,0,80,54],
+"remmina__file__editor_8c.html#aadf4d0ab51fe09231b48d4a2939564f7":[61,0,80,53],
"remmina__file__editor_8c.html#ab563344276cbcdf0fcea05b0b64c7aeb":[61,0,80,35],
"remmina__file__editor_8c.html#ab5d28ebef67a21099e99268bd6fa04aa":[61,0,80,9],
"remmina__file__editor_8c.html#ab6e562792eb63ec43ed7f9a4b6687c23":[61,0,80,20],
@@ -249,5 +248,6 @@ var NAVTREEINDEX5 =
"remmina__ftp__client_8c.html#a2aaef09531b1694c183a5ba530fcc2fa":[61,0,86,45],
"remmina__ftp__client_8c.html#a2e39a69f60d38b46bc603df0ae368aed":[61,0,86,21],
"remmina__ftp__client_8c.html#a33e4993b60c36eae89a6a0a943d28141":[61,0,86,43],
-"remmina__ftp__client_8c.html#a3872b49a2c0bea73d51d0500c5cee488":[61,0,86,16]
+"remmina__ftp__client_8c.html#a3872b49a2c0bea73d51d0500c5cee488":[61,0,86,16],
+"remmina__ftp__client_8c.html#a3a2dc5070f06ae0fcd25fbfe1587ab5c":[61,0,86,33]
};
diff --git a/public/navtreeindex6.js b/public/navtreeindex6.js
index f43d999fb..152931c29 100644
--- a/public/navtreeindex6.js
+++ b/public/navtreeindex6.js
@@ -1,6 +1,5 @@
var NAVTREEINDEX6 =
{
-"remmina__ftp__client_8c.html#a3a2dc5070f06ae0fcd25fbfe1587ab5c":[61,0,86,33],
"remmina__ftp__client_8c.html#a3cb68d802d3c35dff5cee970d3c33bd5":[61,0,86,61],
"remmina__ftp__client_8c.html#a437dba2fc4f44f119501e9b53c688dd1":[61,0,86,25],
"remmina__ftp__client_8c.html#a49d1fee26f8c7fb210b46d83f92b08e2":[61,0,86,13],
@@ -210,14 +209,14 @@ var NAVTREEINDEX6 =
"remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66":[61,0,94,81],
"remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db":[61,0,94,62],
"remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302":[61,0,94,63],
-"remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c":[61,0,94,85],
+"remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c":[61,0,94,86],
"remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1":[61,0,94,47],
"remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e":[61,0,94,16],
"remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c":[61,0,94,61],
"remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2":[61,0,94,77],
"remmina__main_8c.html#a52cc21537ff003b9d0fbdb9040c811af":[61,0,94,52],
"remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a":[61,0,94,44],
-"remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a":[61,0,94,86],
+"remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a":[61,0,94,87],
"remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc":[61,0,94,55],
"remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320":[61,0,94,34],
"remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd":[61,0,94,18],
@@ -235,10 +234,10 @@ var NAVTREEINDEX6 =
"remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497":[61,0,94,30],
"remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d":[61,0,94,11],
"remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79":[61,0,94,68],
-"remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda":[61,0,94,90],
-"remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12":[61,0,94,92],
+"remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda":[61,0,94,91],
+"remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12":[61,0,94,93],
"remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b":[61,0,94,39],
-"remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8":[61,0,94,87],
+"remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8":[61,0,94,88],
"remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c":[61,0,94,14],
"remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a":[61,0,94,59],
"remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12":[61,0,94,13],
@@ -247,7 +246,8 @@ var NAVTREEINDEX6 =
"remmina__main_8c.html#aa4d9b76d32fa500f4b9f39a19e4eaaf2":[61,0,94,66],
"remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc":[61,0,94,38],
"remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32":[61,0,94,54],
-"remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c":[61,0,94,89],
+"remmina__main_8c.html#aac3fe305e456dfa7bb55aa2f057e8cb0":[61,0,94,85],
+"remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c":[61,0,94,90],
"remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5":[61,0,94,83],
"remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800":[61,0,94,23]
};
diff --git a/public/navtreeindex7.js b/public/navtreeindex7.js
index a2e5b45ea..632e2ccb4 100644
--- a/public/navtreeindex7.js
+++ b/public/navtreeindex7.js
@@ -2,7 +2,7 @@ var NAVTREEINDEX7 =
{
"remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d":[61,0,94,60],
"remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589":[61,0,94,82],
-"remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89":[61,0,94,91],
+"remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89":[61,0,94,92],
"remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8":[61,0,94,53],
"remmina__main_8c.html#aba1a89a2400c5cc8373c6bd34602ac10":[61,0,94,21],
"remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1":[61,0,94,51],
@@ -20,7 +20,7 @@ var NAVTREEINDEX7 =
"remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf":[61,0,94,37],
"remmina__main_8c.html#aeb74f36e5fd58ceab9f13a184bfb2029":[61,0,94,64],
"remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c":[61,0,94,79],
-"remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3":[61,0,94,88],
+"remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3":[61,0,94,89],
"remmina__main_8c.html#af14b1942a754d7b2f5c10266208ebe01":[61,0,94,35],
"remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f":[61,0,94,71],
"remmina__main_8c.html#af56bada711b2fc9c50af83b8b62dfe8b":[61,0,94,49],
@@ -41,7 +41,7 @@ var NAVTREEINDEX7 =
"remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5":[61,0,95,31],
"remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af":[61,0,95,21],
"remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a":[61,0,95,13],
-"remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a":[61,0,95,36],
+"remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a":[61,0,95,37],
"remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc":[61,0,95,24],
"remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d":[61,0,95,15],
"remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92":[61,0,95,12],
@@ -52,6 +52,7 @@ var NAVTREEINDEX7 =
"remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a":[61,0,95,28],
"remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc":[61,0,95,7],
"remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32":[61,0,95,23],
+"remmina__main_8h.html#aac3fe305e456dfa7bb55aa2f057e8cb0":[61,0,95,36],
"remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d":[61,0,95,29],
"remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589":[61,0,95,34],
"remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8":[61,0,95,22],
@@ -248,6 +249,5 @@ var NAVTREEINDEX7 =
"remmina__plugin__native_8h_source.html":[61,0,114],
"remmina__pref_8c.html":[61,0,115],
"remmina__pref_8c.html#a0208d5dc8197423da67e5967aafb7a05":[61,0,115,7],
-"remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3":[61,0,115,6],
-"remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c":[61,0,115,19]
+"remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3":[61,0,115,6]
};
diff --git a/public/navtreeindex8.js b/public/navtreeindex8.js
index d2da6d94a..32265d7b5 100644
--- a/public/navtreeindex8.js
+++ b/public/navtreeindex8.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX8 =
{
+"remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c":[61,0,115,19],
"remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743":[61,0,115,28],
"remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267":[61,0,115,9],
"remmina__pref_8c.html#a1a695b64e75d6f49de220dc777e57714":[61,0,115,14],
@@ -248,6 +249,5 @@ var NAVTREEINDEX8 =
"remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435":[61,0,120,39],
"remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4":[61,0,120,77],
"remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261":[61,0,120,72],
-"remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045":[61,0,120,35],
-"remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069":[61,0,120,22]
+"remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045":[61,0,120,35]
};
diff --git a/public/navtreeindex9.js b/public/navtreeindex9.js
index 160cfe6da..c916661c6 100644
--- a/public/navtreeindex9.js
+++ b/public/navtreeindex9.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX9 =
{
+"remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069":[61,0,120,22],
"remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d":[61,0,120,78],
"remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25":[61,0,120,20],
"remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084":[61,0,120,50],
@@ -248,6 +249,5 @@ var NAVTREEINDEX9 =
"remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100":[61,0,133,26],
"remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553":[61,0,133,21],
"remmina__ssh_8c.html#ad6f3f5c196175412049af0c440414e65":[61,0,133,7],
-"remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1":[61,0,133,18],
-"remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda":[61,0,133,19]
+"remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1":[61,0,133,18]
};
diff --git a/public/rcw_8c_source.html b/public/rcw_8c_source.html
index 3f5c049bc..2cddfcc68 100644
--- a/public/rcw_8c_source.html
+++ b/public/rcw_8c_source.html
@@ -117,7 +117,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
gchar * remmina_pref_file
static void rcw_toolbar_fullscreen(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)
static void rcw_on_switch_page(GtkNotebook *notebook, GtkWidget *newpage, guint page_num, RemminaConnectionWindow *cnnwin)
-GtkWindow * remmina_main_get_window()
+GtkWindow * remmina_main_get_window()
static gboolean rcw_hostkey_func(RemminaProtocolWidget *gp, guint keyval, gboolean release)
@@ -168,7 +168,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
-void remmina_message_panel_focus_auth_entry(RemminaMessagePanel *mp)
+void remmina_message_panel_focus_auth_entry(RemminaMessagePanel *mp)
static void rcw_scaler_keep_aspect(GtkWidget *widget, RemminaConnectionWindow *cnnwin)
static void set_label_selectable(gpointer data, gpointer user_data)
static gboolean rcw_tb_drag_drop(GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, gpointer user_data)
@@ -386,7 +386,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
static void rcw_toolbar_screenshot(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)
RemminaConnectionWindow * cnnwin
-void remmina_message_panel_setup_message(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
+void remmina_message_panel_setup_message(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
void remmina_application_condexit(RemminaCondExitType why)
@@ -426,7 +426,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
static void rcw_toolbar_duplicate(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)
void rcw_grab_focus(RemminaConnectionWindow *cnnwin)
-RemminaMessagePanel * remmina_message_panel_new()
+RemminaMessagePanel * remmina_message_panel_new()
static void rcw_scaler_option_popdown(GtkWidget *widget, RemminaConnectionWindow *cnnwin)
diff --git a/public/remmina__exec_8c_source.html b/public/remmina__exec_8c_source.html
index 611522931..6a40a2732 100644
--- a/public/remmina__exec_8c_source.html
+++ b/public/remmina__exec_8c_source.html
@@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
Go to the documentation of this file. 38 #include "buildflags.h" 39 #include <glib/gi18n.h> 62 # define ISSNAP "- SNAP Build -" 73 if (REMMINA_IS_CONNECTION_WINDOW(widget))
80 static const gchar build_config[] =
81 "Build configuration: " BUILD_CONFIG
"\n" 82 "Build type: " BUILD_TYPE
"\n" 83 "CFLAGS: " CFLAGS
"\n" 84 "Compiler: " COMPILER_ID
", " COMPILER_VERSION
"\n" 85 "Target architecture: " TARGET_ARCH
"\n";
99 #ifdef HAVE_LIBAPPINDICATOR 108 g_application_quit(g_application_get_default());
113 TRACE_CALL(__func__);
116 if (REMMINA_IS_CONNECTION_WINDOW(widget)) {
125 TRACE_CALL(__func__);
158 while((c = *s) != 0 && c !=
'\r' && c !=
'\n')
170 gchar **tk, *value = NULL;
174 gboolean abort = FALSE;
179 g_print(
"Unable to open profile file %s\n", profilefilename);
183 for(i = 0; settings[i] != NULL && !abort; i++) {
184 if (strlen(settings[i]) > 0) {
185 tk = g_strsplit(settings[i],
"=", 2);
187 read = getline(&line, &len, stdin);
192 g_print(
"Error: an extra line of standard input is needed\n");
202 if (line) free(line);
212 TRACE_CALL(__func__);
215 REMMINA_DEBUG (
"Profile %s is set to autostart", remminafile->filename);
223 TRACE_CALL(__func__);
226 gchar **protocolserver;
236 gchar **querystringpart;
237 gchar **querystringpartkv;
240 GError *error = NULL;
243 if (strncmp(
"rdp://", data, 6) == 0 || strncmp(
"RDP://", data, 6) == 0)
245 else if (strncmp(
"vnc://", data, 6) == 0 || strncmp(
"VNC://", data, 6) == 0)
247 else if (strncmp(
"ssh://", data, 6) == 0 || strncmp(
"SSH://", data, 6) == 0)
249 else if (strncmp(
"spice://", data, 8) == 0 || strncmp(
"SPICE://", data, 8) == 0)
252 if (strncmp(
"file://", data, 6) == 0) {
253 gchar *filename = g_filename_from_uri (data, NULL, &error);
254 if (filename != NULL) {
257 REMMINA_DEBUG (
"Opening URI %s failed with error %s", data, error->message);
262 if (protocol == NULL) {
267 protocolserver = g_strsplit(data,
"://", 2);
268 server = g_strdup(protocolserver[1]);
271 if ((temp = strrchr(server,
'.')) != NULL && g_strcmp0(temp + 1,
"remmina") == 0) {
272 g_strfreev(protocolserver);
273 temp = g_uri_unescape_string(server, NULL);
283 if ((strcmp(protocol,
"RDP") == 0 || strcmp(protocol,
"VNC") == 0 || strcmp(protocol,
"SSH") == 0) && strstr(server,
"@") != NULL) {
284 userat = g_strsplit(server,
"@", 2);
287 if (strstr(userat[0],
":") != NULL) {
288 userpass = g_strsplit(userat[0],
":", 2);
289 user = g_uri_unescape_string(userpass[0], NULL);
290 password = g_uri_unescape_string(userpass[1], NULL);
300 g_strfreev(userpass);
302 user = g_uri_unescape_string(userat[0], NULL);
306 if (strcmp(protocol,
"RDP") == 0 && strstr(user,
"\\") != NULL) {
307 domainuser = g_strsplit(user,
"\\", 2);
310 user = g_strdup(domainuser[1]);
316 server = g_strdup(userat[1]);
320 if (strcmp(protocol,
"VNC") == 0 && strstr(server,
"?") != NULL) {
325 serverquery = g_strsplit(server,
"?", 2);
326 querystring = g_strsplit(serverquery[1],
"&", -1);
327 for (querystringpart = querystring; *querystringpart; querystringpart++) {
328 if (strstr(*querystringpart,
"=") == NULL)
330 querystringpartkv = g_strsplit(*querystringpart,
"=", 2);
331 value = g_uri_unescape_string(querystringpartkv[1], NULL);
332 if (strcmp(querystringpartkv[0],
"VncPassword") == 0) {
340 }
else if (strcmp(querystringpartkv[0],
"VncUsername") == 0) {
342 }
else if (strcmp(querystringpartkv[0],
"ColorLevel") == 0) {
346 g_strfreev(querystringpartkv);
348 g_strfreev(querystring);
350 server = g_strdup(serverquery[0]);
351 g_strfreev(serverquery);
355 temp = g_uri_unescape_string(server, NULL);
364 g_strfreev(protocolserver);
370 TRACE_CALL(__func__);
375 GtkWindow *mainwindow;
376 GtkWidget *prefdialog;
389 gtk_window_present(mainwindow);
390 gtk_window_deiconify(GTK_WINDOW(mainwindow));
393 gtk_widget_show(widget);
403 gtk_window_present(GTK_WINDOW(prefdialog));
404 gtk_window_deiconify(GTK_WINDOW(prefdialog));
408 gtk_widget_show(widget);
417 s1 = (data ? strchr(data,
',') : NULL);
420 s2 = strchr(s1,
',');
427 gtk_widget_show(widget);
431 REMMINA_DEBUG (
"Initiating connection");
450 gtk_widget_show(widget);
462 g_print(
"%s %s %s (git %s)\n", g_get_application_name(), ISSNAP, VERSION, REMMINA_GIT_REVISION);
475 g_print(
"\n%s %s %s (git %s)\n\n", g_get_application_name(), ISSNAP, VERSION, REMMINA_GIT_REVISION);
490 widget = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
491 _(
"Plugin %s is not registered."), data);
492 g_signal_connect(G_OBJECT(widget),
"response", G_CALLBACK(gtk_widget_destroy), NULL);
493 gtk_widget_show(widget);
500 g_print(
"Enter the password you want to encrypt: ");
501 temp = (
char *)g_malloc(255 *
sizeof(
char));
502 while ((ch = getchar()) != EOF && ch !=
'\n') {
510 s2 = g_uri_escape_string(s1, NULL, TRUE);
511 g_print(
"\nEncrypted password: %s\n\n", s1);
513 g_print(
"rdp://username:%s@server\n", s1);
514 g_print(
"vnc://username:%s@server\n", s1);
515 g_print(
"vnc://server?VncUsername=user\\&VncPassword=%s\n", s2);
int remmina_exec_set_setting(gchar *profilefilename, gchar **settings)
-
GtkWindow * remmina_main_get_window()
+
GtkWindow * remmina_main_get_window()
gchar * remmina_crypt_decrypt(const gchar *str)
@@ -104,8 +104,8 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
gboolean remmina_icon_is_available(void)
Determine whenever the Remmina icon is available.
-
GtkWidget * remmina_file_editor_new_full(const gchar *server, const gchar *protocol)
-
GtkWidget * remmina_main_new(void)
+
GtkWidget * remmina_file_editor_new_full(const gchar *server, const gchar *protocol)
+
GtkWidget * remmina_main_new(void)
void remmina_main_save_before_destroy()
Save the Remmina Main Window size and the expanded group before to close Remmina. ...
const gchar * remmina_exec_get_build_config(void)
@@ -129,7 +129,7 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
void remmina_exec_exitremmina()
gboolean remmina_pref_get_boolean(const gchar *key)
-
GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)
+
GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)
void remmina_main_destroy()
RemminaFile * remmina_file_new(void)
diff --git a/public/remmina__file_8c_source.html b/public/remmina__file_8c_source.html
index 415e66860..7412f6e50 100644
--- a/public/remmina__file_8c_source.html
+++ b/public/remmina__file_8c_source.html
@@ -122,7 +122,7 @@ $(document).ready(function(){initNavTree('remmina__file_8c_source.html','');});
gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)
const RemminaProtocolSetting * find_protocol_setting(const gchar *name, RemminaProtocolPlugin *protocol_plugin)
-
void remmina_main_update_file_datetime(RemminaFile *file)
+
void remmina_main_update_file_datetime(RemminaFile *file)
const gchar * icon_name_ssh
gint remmina_file_get_state_int(RemminaFile *remminafile, const gchar *setting, gint default_value)
void remmina_file_state_last_success(RemminaFile *remminafile)
@@ -135,7 +135,7 @@ $(document).ready(function(){initNavTree('remmina__file_8c_source.html','');});
gchar * remmina_crypt_encrypt(const gchar *str)
gdouble remmina_file_get_state_double(RemminaFile *remminafile, const gchar *setting, gdouble default_value)
-
void remmina_main_show_warning_dialog(const gchar *message)
+
void remmina_main_show_warning_dialog(const gchar *message)
void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)
static GKeyFile * remmina_file_get_keyfile(RemminaFile *remminafile)
diff --git a/public/remmina__file__editor_8c.html b/public/remmina__file__editor_8c.html
index b04584269..0f6327ca6 100644
--- a/public/remmina__file__editor_8c.html
+++ b/public/remmina__file__editor_8c.html
@@ -119,8 +119,6 @@ Functions
|
static void | remmina_file_editor_create_server (RemminaFileEditor *gfe, const RemminaProtocolSetting *setting, GtkWidget *grid, gint row) |
|
-
static void | remmina_file_toggle_password_view (GtkWidget *widget, gpointer data) |
-
|
static GtkWidget * | remmina_file_editor_create_password (RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gchar *setting_name) |
|
static void | remmina_file_editor_update_resolution (GtkWidget *widget, RemminaFileEditor *gfe) |
@@ -319,7 +317,7 @@ Variables
@@ -377,7 +375,7 @@ Variables
@@ -433,7 +431,7 @@ Variables
@@ -461,7 +459,7 @@ Variables
@@ -529,7 +527,7 @@ Variables
@@ -606,7 +604,7 @@ Variables
Create checkbox + gtk_file_chooser for open files and select folders.
The code is wrong, because if the checkbox is not active, the value should be set to NULL and remove it from the remmina file. The problem is that this function knows nothing about the remmina file. This should be rewritten in a more generic way Please use REMMINA_PROTOCOL_SETTING_TYPE_TEXT
-Definition at line 786 of file remmina_file_editor.c.
+Definition at line 771 of file remmina_file_editor.c.
@@ -680,7 +678,7 @@ Variables
@@ -760,7 +758,7 @@ Variables
@@ -840,7 +838,7 @@ Variables
@@ -992,7 +990,7 @@ Variables
@@ -1042,7 +1040,7 @@ Variables
@@ -1116,7 +1114,7 @@ Variables
@@ -1210,7 +1208,7 @@ Variables
@@ -1248,7 +1246,7 @@ Variables
@@ -1316,7 +1314,7 @@ Variables
@@ -1396,7 +1394,7 @@ Variables
@@ -1464,7 +1462,7 @@ Variables
@@ -1550,7 +1548,7 @@ Variables
@@ -1588,7 +1586,7 @@ Variables
@@ -1608,7 +1606,7 @@ Variables
@@ -1636,7 +1634,7 @@ Variables
@@ -1684,7 +1682,7 @@ Variables
@@ -1728,7 +1726,7 @@ Variables
@@ -1748,7 +1746,7 @@ Variables
@@ -1768,7 +1766,7 @@ Variables
@@ -1788,7 +1786,7 @@ Variables
@@ -1808,7 +1806,7 @@ Variables
@@ -1838,7 +1836,7 @@ Variables
@@ -1876,7 +1874,7 @@ Variables
@@ -1914,7 +1912,7 @@ Variables
@@ -1952,7 +1950,7 @@ Variables
@@ -2028,7 +2026,7 @@ Variables
@@ -2067,7 +2065,7 @@ Variables
@@ -2105,7 +2103,7 @@ Variables
@@ -2133,7 +2131,7 @@ Variables
@@ -2161,7 +2159,7 @@ Variables
@@ -2338,7 +2336,7 @@ TODO: Responsive text size and line wrap.
@@ -2376,7 +2374,7 @@ TODO: Responsive text size and line wrap.
@@ -2414,7 +2412,7 @@ TODO: Responsive text size and line wrap.
@@ -2464,7 +2462,7 @@ TODO: Responsive text size and line wrap.
@@ -2500,44 +2498,6 @@ TODO: Responsive text size and line wrap.
-
-
-
-◆ remmina_file_toggle_password_view()
-
-
-
-
-
-
-
-
- static void remmina_file_toggle_password_view |
- ( |
- GtkWidget * |
- widget, |
-
-
- |
- |
- gpointer |
- data |
-
-
- |
- ) |
- | |
-
-
- |
-
-static |
-
-
-
@@ -2562,7 +2522,7 @@ TODO: Responsive text size and line wrap.
diff --git a/public/remmina__file__editor_8c.js b/public/remmina__file__editor_8c.js
index 6d15e9736..516223861 100644
--- a/public/remmina__file__editor_8c.js
+++ b/public/remmina__file__editor_8c.js
@@ -53,6 +53,5 @@ var remmina__file__editor_8c =
[ "remmina_file_editor_update_settings", "remmina__file__editor_8c.html#ac4aed08e645f690ef347adec9cdbb9b9", null ],
[ "remmina_file_editor_validate_settings", "remmina__file__editor_8c.html#a8c1924fd32be943136d147e8dedb3eca", null ],
[ "remmina_file_get_double", "remmina__file__editor_8c.html#a471a1f5ab14197b626f84ec3128e87d4", null ],
- [ "remmina_file_toggle_password_view", "remmina__file__editor_8c.html#a65b38bc13546d3d890624a79b080ffe9", null ],
[ "ssh_tunnel_auth_list", "remmina__file__editor_8c.html#aadf4d0ab51fe09231b48d4a2939564f7", null ]
];
\ No newline at end of file
diff --git a/public/remmina__file__editor_8c_source.html b/public/remmina__file__editor_8c_source.html
index 1848a5bbe..f69e63829 100644
--- a/public/remmina__file__editor_8c_source.html
+++ b/public/remmina__file__editor_8c_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
remmina_file_editor.c
-
Go to the documentation of this file. 39 #ifdef HAVE_LIBAVAHI_UI 40 #include <avahi-ui/avahi-ui.h> 60 static const gchar *server_tips =
N_(
"<big>" 64 "VNC additional formats\n" 65 "• ID:repeater ID number\n" 66 "• unix:///path/socket.sock" 69 static const gchar *cmd_tips =
N_(
"<big>" 70 "• command in PATH args %h\n" 71 "• /path/to/foo -options %h %u\n" 72 "• %h is substituted with the server name\n" 73 "• %t is substituted with the SSH server name\n" 74 "• %u is substituted with the username\n" 75 "• %U is substituted with the SSH username\n" 76 "• %p is substituted with Remmina profile name\n" 77 "• %g is substituted with Remmina profile group name\n" 78 "• %d is substituted with local date and time in ISO 8601 format\n" 79 "Do not run in background if you want the command to be executed before connecting.\n" 83 static const gchar *server_tips2 =
N_(
"<big>" 87 "• username@server[:port] (SSH protocol only)" 91 struct _RemminaFileEditorPriv {
94 const gchar * avahi_service_type;
96 GtkWidget * name_entry;
97 GtkWidget * labels_entry;
98 GtkWidget * group_combo;
99 GtkWidget * protocol_combo;
100 GtkWidget * save_button;
102 GtkWidget * config_box;
103 GtkWidget * config_scrollable;
104 GtkWidget * config_viewport;
105 GtkWidget * config_container;
107 GtkWidget * server_combo;
108 GtkWidget * resolution_iws_radio;
109 GtkWidget * resolution_auto_radio;
110 GtkWidget * resolution_custom_radio;
111 GtkWidget * resolution_custom_combo;
112 GtkWidget * keymap_combo;
114 GtkWidget * behavior_autostart_check;
115 GtkWidget * behavior_precommand_entry;
116 GtkWidget * behavior_postcommand_entry;
117 GtkWidget * behavior_lock_check;
119 GtkWidget * ssh_tunnel_enabled_check;
120 GtkWidget * ssh_tunnel_loopback_check;
121 GtkWidget * ssh_tunnel_server_default_radio;
122 GtkWidget * ssh_tunnel_server_custom_radio;
123 GtkWidget * ssh_tunnel_server_entry;
124 GtkWidget * ssh_tunnel_auth_agent_radio;
125 GtkWidget * ssh_tunnel_auth_password_radio;
126 GtkWidget * ssh_tunnel_auth_password;
127 GtkWidget * ssh_tunnel_passphrase;
128 GtkWidget * ssh_tunnel_auth_publickey_radio;
129 GtkWidget * ssh_tunnel_auth_auto_publickey_radio;
130 GtkWidget * ssh_tunnel_auth_combo;
131 GtkWidget * ssh_tunnel_username_entry;
132 GtkWidget * ssh_tunnel_privatekey_chooser;
133 GtkWidget * ssh_tunnel_certfile_chooser;
135 GHashTable * setting_widgets;
140 TRACE_CALL(__func__);
159 GtkWidget * failed_widget,
164 g_set_error(&err, 1, 1, _(
"Input is invalid."));
167 if (!gfe || !failed_widget) {
168 g_critical(
"(%s): Parameters RemminaFileEditor 'gfe' or " 169 "GtkWidget* 'failed_widget' are 'NULL'!",
174 gint widget_width = gtk_widget_get_allocated_width(failed_widget);
175 gint widget_height = gtk_widget_get_allocated_height(failed_widget);
177 GtkWidget *err_label = gtk_label_new(
"");
178 GtkWidget *alert_icon = NULL;
179 GtkWindow *err_window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
180 GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
181 GdkWindow *window = gtk_widget_get_window(failed_widget);
183 GtkAllocation allocation;
184 gint failed_widget_x, failed_widget_y;
186 gchar *markup = g_strdup_printf(
"<span size='large'>%s</span>", err->message);
189 gtk_window_set_decorated(err_window, FALSE);
190 gtk_window_set_type_hint(err_window, GDK_WINDOW_TYPE_HINT_TOOLTIP);
191 gtk_window_set_default_size(err_window, widget_width, widget_height);
192 gtk_window_set_title(err_window,
"Error");
193 gtk_window_set_resizable(err_window, TRUE);
196 gtk_window_set_attached_to(err_window, failed_widget);
197 gtk_window_set_transient_for(err_window, GTK_WINDOW(gfe));
198 gdk_window_get_origin(GDK_WINDOW(window), &failed_widget_x, &failed_widget_y);
199 gtk_widget_get_allocation(failed_widget, &allocation);
200 failed_widget_x += allocation.x;
201 failed_widget_y += allocation.y + allocation.height;
202 gtk_window_move(err_window, failed_widget_x, failed_widget_y);
205 gtk_label_set_selectable(GTK_LABEL(err_label), FALSE);
206 gtk_label_set_max_width_chars(GTK_LABEL(err_label), 1);
207 gtk_widget_set_hexpand(GTK_WIDGET(err_label), TRUE);
208 gtk_widget_set_vexpand(GTK_WIDGET(err_label), TRUE);
209 gtk_label_set_ellipsize(GTK_LABEL(err_label), PANGO_ELLIPSIZE_END);
210 gtk_label_set_line_wrap(GTK_LABEL(err_label), TRUE);
211 gtk_label_set_line_wrap_mode(GTK_LABEL(err_label), PANGO_WRAP_WORD_CHAR);
212 gtk_label_set_markup(GTK_LABEL(err_label), markup);
214 alert_icon = gtk_image_new_from_icon_name(
"dialog-warning-symbolic",
218 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(alert_icon), FALSE, FALSE, 0);
219 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(err_label), TRUE, TRUE, 5);
222 gtk_container_add(GTK_CONTAINER(err_window), GTK_WIDGET(box));
225 gtk_widget_show_all(GTK_WIDGET(err_window));
228 g_signal_connect(G_OBJECT(err_window),
"focus-out-event",
229 G_CALLBACK(gtk_window_close), NULL);
230 g_signal_connect(G_OBJECT(err_window),
"button-press-event",
231 G_CALLBACK(gtk_window_close), NULL);
234 #ifdef HAVE_LIBAVAHI_UI 238 TRACE_CALL(__func__);
242 dialog = aui_service_dialog_new(_(
"Choose a Remote Desktop Server"),
244 _(
"_Cancel"), GTK_RESPONSE_CANCEL,
245 _(
"_OK"), GTK_RESPONSE_ACCEPT,
248 gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gfe));
249 aui_service_dialog_set_resolve_service(AUI_SERVICE_DIALOG(dialog), TRUE);
250 aui_service_dialog_set_resolve_host_name(AUI_SERVICE_DIALOG(dialog), TRUE);
251 aui_service_dialog_set_browse_service_types(AUI_SERVICE_DIALOG(dialog),
252 gfe->
priv->avahi_service_type, NULL);
254 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
255 host = g_strdup_printf(
"[%s]:%i",
256 aui_service_dialog_get_host_name(AUI_SERVICE_DIALOG(dialog)),
257 aui_service_dialog_get_port(AUI_SERVICE_DIALOG(dialog)));
261 gtk_widget_destroy(dialog);
264 gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gfe->
priv->server_combo))), host);
272 TRACE_CALL(__func__);
274 GtkWidget *defaultwidget;
276 gfe = REMMINA_FILE_EDITOR(widget);
278 defaultwidget = gfe->
priv->server_combo;
281 if (GTK_IS_EDITABLE(defaultwidget))
282 gtk_editable_select_region(GTK_EDITABLE(defaultwidget), 0, -1);
283 gtk_widget_grab_focus(defaultwidget);
289 TRACE_CALL(__func__);
291 g_hash_table_destroy(REMMINA_FILE_EDITOR(widget)->priv->setting_widgets);
292 g_free(REMMINA_FILE_EDITOR(widget)->priv);
297 TRACE_CALL(__func__);
298 gtk_widget_set_sensitive(widget, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(togglebutton)));
303 TRACE_CALL(__func__);
305 gfe->
priv->config_container = gtk_notebook_new();
306 gfe->
priv->config_viewport = gtk_viewport_new(NULL, NULL);
307 gfe->
priv->config_scrollable = gtk_scrolled_window_new(NULL, NULL);
308 gtk_container_set_border_width(GTK_CONTAINER(gfe->
priv->config_scrollable), 2);
309 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gfe->
priv->config_scrollable),
310 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
311 gtk_widget_show(gfe->
priv->config_scrollable);
313 gtk_container_add(GTK_CONTAINER(gfe->
priv->config_viewport), gfe->
priv->config_container);
314 gtk_container_set_border_width(GTK_CONTAINER(gfe->
priv->config_viewport), 2);
315 gtk_widget_show(gfe->
priv->config_viewport);
316 gtk_container_add(GTK_CONTAINER(gfe->
priv->config_scrollable), gfe->
priv->config_viewport);
317 gtk_container_set_border_width(GTK_CONTAINER(gfe->
priv->config_container), 2);
318 gtk_widget_show(gfe->
priv->config_container);
320 gtk_container_add(GTK_CONTAINER(gfe->
priv->config_box), gfe->
priv->config_scrollable);
324 const gchar *stock_id,
const gchar *label, gint rows, gint cols)
326 TRACE_CALL(__func__);
332 tablabel = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
333 gtk_widget_show(tablabel);
335 widget = gtk_image_new_from_icon_name(stock_id, GTK_ICON_SIZE_BUTTON);
336 gtk_box_pack_start(GTK_BOX(tablabel), widget, FALSE, FALSE, 0);
337 gtk_widget_show(widget);
339 widget = gtk_label_new(label);
340 gtk_box_pack_start(GTK_BOX(tablabel), widget, FALSE, FALSE, 0);
341 gtk_widget_show(widget);
343 tabbody = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
344 gtk_widget_show(tabbody);
345 gtk_notebook_append_page(GTK_NOTEBOOK(gfe->
priv->config_container), tabbody, tablabel);
347 grid = gtk_grid_new();
348 gtk_widget_show(grid);
349 gtk_grid_set_row_spacing(GTK_GRID(grid), 8);
350 gtk_grid_set_column_spacing(GTK_GRID(grid), 8);
351 gtk_container_set_border_width(GTK_CONTAINER(grid), 15);
352 gtk_box_pack_start(GTK_BOX(tabbody), grid, FALSE, FALSE, 0);
361 TRACE_CALL(__func__);
362 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_server_entry),
363 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->
priv->ssh_tunnel_enabled_check)) &&
364 (gfe->
priv->ssh_tunnel_server_custom_radio == NULL ||
365 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->
priv->ssh_tunnel_server_custom_radio))));
371 TRACE_CALL(__func__);
373 gboolean enabled = TRUE;
376 const gchar *s = NULL;
378 if (gfe->
priv->ssh_tunnel_enabled_check) {
379 enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->
priv->ssh_tunnel_enabled_check));
380 if (gfe->
priv->ssh_tunnel_loopback_check)
381 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_loopback_check), enabled);
382 if (gfe->
priv->ssh_tunnel_server_default_radio)
383 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_server_default_radio), enabled);
384 if (gfe->
priv->ssh_tunnel_server_custom_radio)
385 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_server_custom_radio), enabled);
389 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_username_entry), enabled);
390 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_auth_password), enabled);
391 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_auth_combo), enabled);
392 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_privatekey_chooser), enabled);
393 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_certfile_chooser), enabled);
400 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(gfe->
priv->ssh_tunnel_privatekey_chooser), s);
403 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(gfe->
priv->ssh_tunnel_certfile_chooser), s);
405 if (gfe->
priv->ssh_tunnel_username_entry)
406 if (enabled && gtk_entry_get_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_username_entry))[0] ==
'\0') {
408 gtk_entry_set_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_username_entry), cp ? cp :
"");
411 if (gfe->
priv->ssh_tunnel_auth_password) {
412 if (enabled && gtk_entry_get_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_auth_password))[0] ==
'\0') {
414 gtk_entry_set_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_auth_password), cp ? cp :
"");
417 if (gfe->
priv->ssh_tunnel_passphrase) {
418 if (enabled && gtk_entry_get_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_passphrase))[0] ==
'\0') {
420 gtk_entry_set_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_passphrase), cp ? cp :
"");
430 TRACE_CALL(__func__);
433 #ifdef HAVE_LIBAVAHI_UI 438 widget = gtk_label_new(_(
"Server"));
439 gtk_widget_show(widget);
440 gtk_widget_set_valign(widget, GTK_ALIGN_START);
441 gtk_widget_set_halign(widget, GTK_ALIGN_START);
442 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, row + 1);
446 gtk_widget_set_hexpand(widget, TRUE);
447 gtk_widget_show(widget);
448 gtk_widget_set_tooltip_markup(widget, _(server_tips));
449 gtk_entry_set_activates_default(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(widget))), TRUE);
450 gfe->
priv->server_combo = widget;
453 #ifdef HAVE_LIBAVAHI_UI 455 gfe->
priv->avahi_service_type = (
const gchar *)setting->
opt1;
457 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
458 gtk_widget_show(hbox);
459 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
461 widget = gtk_button_new_with_label(
"…");
462 s = g_strdup_printf(_(
"Browse the network to find a %s server"), plugin->
name);
463 gtk_widget_set_tooltip_text(widget, s);
465 gtk_widget_show(widget);
466 gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);
469 gtk_grid_attach(GTK_GRID(grid), hbox, 1, row, 1, 1);
473 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 1, 1);
478 GtkWindow *mainwindow;
479 gboolean visible = gtk_entry_get_visibility(GTK_ENTRY(widget));
486 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
487 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widget), GTK_ENTRY_ICON_SECONDARY,
"org.remmina.Remmina-password-reveal-symbolic");
489 gtk_entry_set_visibility(GTK_ENTRY(widget), TRUE);
490 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widget), GTK_ENTRY_ICON_SECONDARY,
"org.remmina.Remmina-password-conceal-symbolic");
495 TRACE_CALL(__func__);
498 widget = gtk_label_new(label);
499 gtk_widget_show(widget);
500 #if GTK_CHECK_VERSION(3, 12, 0) 501 gtk_widget_set_margin_end(widget, 40);
503 gtk_widget_set_margin_right(widget, 40);
505 gtk_widget_set_valign(widget, GTK_ALIGN_START);
506 gtk_widget_set_halign(widget, GTK_ALIGN_START);
507 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
509 widget = gtk_entry_new();
510 gtk_widget_show(widget);
511 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 1, 1);
512 gtk_entry_set_max_length(GTK_ENTRY(widget), 0);
513 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
514 gtk_widget_set_hexpand(widget, TRUE);
515 gtk_entry_set_activates_default(GTK_ENTRY(widget), TRUE);
517 gtk_widget_set_name(widget, setting_name);
520 gtk_entry_set_text(GTK_ENTRY(widget), value);
523 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widget), GTK_ENTRY_ICON_SECONDARY,
"org.remmina.Remmina-password-reveal-symbolic");
524 gtk_entry_set_icon_activatable(GTK_ENTRY(widget), GTK_ENTRY_ICON_SECONDARY, TRUE);
532 TRACE_CALL(__func__);
534 res_str = g_strdup_printf(
"%dx%d",
544 TRACE_CALL(__func__);
550 gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gfe));
551 gtk_dialog_run(dialog);
555 gtk_widget_destroy(GTK_WIDGET(dialog));
559 GtkWidget *grid, gint row)
561 TRACE_CALL(__func__);
564 int resolution_w, resolution_h;
575 if (resolution_w <= 0 || resolution_h <= 0)
581 res_str = g_strdup_printf(
"%dx%d", resolution_w, resolution_h);
585 widget = gtk_label_new(_(
"Resolution"));
586 gtk_widget_show(widget);
587 gtk_widget_set_valign(widget, GTK_ALIGN_START);
588 gtk_widget_set_halign(widget, GTK_ALIGN_START);
589 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
591 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
592 widget = gtk_radio_button_new_with_label(NULL, _(
"Use initial window size"));
593 gtk_widget_show(widget);
594 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
595 gfe->
priv->resolution_iws_radio = widget;
596 widget = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(gfe->
priv->resolution_iws_radio), _(
"Use client resolution"));
597 gtk_widget_show(widget);
598 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
599 gfe->
priv->resolution_auto_radio = widget;
600 gtk_grid_attach(GTK_GRID(grid), hbox, 1, row, 1, 1);
601 gtk_widget_show(hbox);
603 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
604 gtk_widget_show(hbox);
605 gtk_grid_attach(GTK_GRID(grid), hbox, 1, row + 1, 1, 1);
607 widget = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(gfe->
priv->resolution_iws_radio), _(
"Custom"));
608 gtk_widget_show(widget);
609 gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);
610 gfe->
priv->resolution_custom_radio = widget;
613 gtk_widget_show(widget);
614 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
615 gfe->
priv->resolution_custom_combo = widget;
617 widget = gtk_button_new_with_label(
"…");
618 gtk_widget_show(widget);
619 gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);
622 g_signal_connect(G_OBJECT(gfe->
priv->resolution_custom_radio),
"toggled",
626 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gfe->
priv->resolution_custom_radio), TRUE);
628 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gfe->
priv->resolution_auto_radio), TRUE);
630 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gfe->
priv->resolution_iws_radio), TRUE);
632 gtk_widget_set_sensitive(gfe->
priv->resolution_custom_combo, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->
priv->resolution_custom_radio)));
638 gint row, gint col,
const gchar *label,
const gchar *value, gint left,
639 gint right, gchar *setting_name)
641 TRACE_CALL(__func__);
644 widget = gtk_label_new(label);
645 gtk_widget_show(widget);
646 #if GTK_CHECK_VERSION(3, 12, 0) 647 gtk_widget_set_margin_start(widget, left);
648 gtk_widget_set_margin_end(widget, right);
650 gtk_widget_set_margin_left(widget, left);
651 gtk_widget_set_margin_right(widget, right);
653 gtk_widget_set_valign(widget, GTK_ALIGN_START);
654 gtk_widget_set_halign(widget, GTK_ALIGN_START);
655 gtk_grid_attach(GTK_GRID(grid), widget, col, row, 1, 1);
657 widget = gtk_entry_new();
658 gtk_widget_show(widget);
659 gtk_grid_attach(GTK_GRID(grid), widget, col + 1, row, 1, 1);
660 gtk_entry_set_max_length(GTK_ENTRY(widget), 300);
661 gtk_widget_set_hexpand(widget, TRUE);
663 gtk_widget_set_name(widget, setting_name);
666 gtk_entry_set_text(GTK_ENTRY(widget), value);
672 gint row, gint col,
const gchar *label,
const gchar *value,
675 TRACE_CALL(__func__);
681 gint row, gint col,
const gchar *label,
const gchar *value,
684 TRACE_CALL(__func__);
687 GtkTextBuffer *buffer;
690 widget = gtk_text_view_new();
691 view = GTK_TEXT_VIEW(widget);
692 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD);
693 gtk_text_view_set_top_margin(GTK_TEXT_VIEW(view), 20);
694 gtk_text_view_set_bottom_margin(GTK_TEXT_VIEW(view), 20);
695 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(view), 20);
696 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(view), 20);
697 gtk_text_view_set_monospace(view, TRUE);
699 gtk_widget_set_name(widget, setting_name);
701 buffer = gtk_text_view_get_buffer(view);
702 gtk_text_buffer_set_text(buffer, value, -1);
703 gtk_text_buffer_get_start_iter(buffer, &start);
704 gtk_text_buffer_place_cursor(buffer, &start);
706 gtk_widget_show(widget);
707 gtk_widget_set_hexpand(widget, TRUE);
708 gtk_widget_set_size_request(GTK_WIDGET(view), 320, 300);
709 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
714 gint row, gint col,
const gchar *label,
const gpointer *list,
715 const gchar *value, gchar *setting_name)
717 TRACE_CALL(__func__);
720 widget = gtk_label_new(label);
721 gtk_widget_show(widget);
722 gtk_widget_set_valign(widget, GTK_ALIGN_START);
723 gtk_widget_set_halign(widget, GTK_ALIGN_START);
725 gtk_widget_set_name(widget, setting_name);
726 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
729 gtk_widget_show(widget);
730 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 1, 1);
736 gint row, gint col,
const gchar *label,
const gchar *list,
737 const gchar *value, gchar *setting_name)
739 TRACE_CALL(__func__);
742 widget = gtk_label_new(label);
743 gtk_widget_show(widget);
744 gtk_widget_set_valign(widget, GTK_ALIGN_START);
745 gtk_widget_set_halign(widget, GTK_ALIGN_START);
746 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
749 gtk_widget_show(widget);
750 gtk_widget_set_hexpand(widget, TRUE);
752 gtk_widget_set_name(widget, setting_name);
753 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 1, 1);
759 gint row, gint top,
const gchar *label, gboolean value,
762 TRACE_CALL(__func__);
764 widget = gtk_check_button_new_with_label(label);
765 gtk_widget_show(widget);
767 gtk_widget_set_name(widget, setting_name);
768 gtk_grid_attach(GTK_GRID(grid), widget, top, row, 1, 1);
771 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
787 const gchar *value, gint type, gchar *setting_name)
789 TRACE_CALL(__func__);
794 widget = gtk_label_new(label);
795 gtk_widget_show(widget);
796 gtk_widget_set_valign(widget, GTK_ALIGN_START);
797 gtk_widget_set_halign(widget, GTK_ALIGN_START);
798 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
800 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
801 gtk_widget_show(hbox);
802 gtk_grid_attach(GTK_GRID(grid), hbox, 1, row, 1, 1);
804 check = gtk_check_button_new();
805 gtk_widget_show(check);
806 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), (value && value[0] ==
'/'));
807 gtk_box_pack_start(GTK_BOX(hbox), check, FALSE, FALSE, 0);
809 widget = gtk_file_chooser_button_new(label, type);
811 gtk_widget_set_name(widget, setting_name);
812 gtk_widget_show(widget);
814 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(widget), value);
815 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
825 gint length, gint *position, gpointer data)
827 for (
int i = 0; i < length; i++) {
828 if (!isdigit(text[i]) && text[i] !=
'-') {
829 g_signal_stop_emission_by_name(G_OBJECT(editable),
"insert-text");
839 gint length, gint *position, gpointer data)
841 for (
int i = 0; i < length; i++) {
842 if (!isdigit(text[i]) && text[i] !=
'-' && text[i] !=
'.' && text[i] !=
',') {
843 g_signal_stop_emission_by_name(G_OBJECT(editable),
"insert-text");
850 gint row, gint col,
const gchar *label,
const gint value,
851 gint left, gint right, gchar *setting_name)
853 TRACE_CALL(__func__);
856 widget = gtk_label_new(label);
857 gtk_widget_show(widget);
858 #if GTK_CHECK_VERSION(3, 12, 0) 859 gtk_widget_set_margin_start(widget, left);
860 gtk_widget_set_margin_end(widget, right);
862 gtk_widget_set_margin_left(widget, left);
863 gtk_widget_set_margin_right(widget, right);
865 gtk_widget_set_valign(widget, GTK_ALIGN_START);
866 gtk_widget_set_halign(widget, GTK_ALIGN_START);
867 gtk_grid_attach(GTK_GRID(grid), widget, col, row, 1, 1);
869 widget = gtk_entry_new();
870 gtk_widget_show(widget);
871 gtk_grid_attach(GTK_GRID(grid), widget, col + 1, row, 1, 1);
872 gtk_entry_set_max_length(GTK_ENTRY(widget), 300);
873 gtk_widget_set_hexpand(widget, TRUE);
875 gtk_widget_set_name(widget, setting_name);
878 int length = snprintf(NULL, 0,
"%d", value) + 1;
879 char *str = malloc(length);
880 snprintf(str, length,
"%d", value);
882 gtk_entry_set_text(GTK_ENTRY(widget), str);
885 g_signal_connect(G_OBJECT(widget),
"insert-text",
892 GtkWidget *grid, gint row, gint col,
893 const gchar *label, gdouble value, gint left,
894 gint right, gchar *setting_name)
896 TRACE_CALL(__func__);
899 widget = gtk_label_new(label);
900 gtk_widget_show(widget);
901 #if GTK_CHECK_VERSION(3, 12, 0) 902 gtk_widget_set_margin_start(widget, left);
903 gtk_widget_set_margin_end(widget, right);
905 gtk_widget_set_margin_left(widget, left);
906 gtk_widget_set_margin_right(widget, right);
908 gtk_widget_set_valign(widget, GTK_ALIGN_START);
909 gtk_widget_set_halign(widget, GTK_ALIGN_START);
910 gtk_grid_attach(GTK_GRID(grid), widget, col, row, 1, 1);
912 widget = gtk_entry_new();
913 gtk_widget_show(widget);
914 gtk_grid_attach(GTK_GRID(grid), widget, col + 1, row, 1, 1);
915 gtk_entry_set_max_length(GTK_ENTRY(widget), 300);
916 gtk_widget_set_hexpand(widget, TRUE);
918 gtk_widget_set_name(widget, setting_name);
921 int length = snprintf(NULL, 0,
"%.8g", value) + 1;
922 char *str = malloc(length);
923 snprintf(str, length,
"%f", value);
925 gtk_entry_set_text(GTK_ENTRY(widget), str);
928 g_signal_connect(G_OBJECT(widget),
"insert-text",
939 TRACE_CALL(__func__);
943 gint grid_column = 0;
946 const gchar *escaped;
950 switch (settings->
type) {
957 g_dgettext(priv->plugin->domain, settings->
label),
960 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
973 _(
"Keyboard mapping"), (
const gpointer *)strarr,
982 g_dgettext(priv->plugin->domain, settings->
label),
985 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
987 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
993 escaped = g_uri_unescape_string(escaped, NULL);
995 g_dgettext(priv->plugin->domain, settings->
label), escaped,
997 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1003 g_dgettext(priv->plugin->domain, settings->
label),
1004 (
const gpointer *)settings->
opt1,
1007 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1009 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1014 g_dgettext(priv->plugin->domain, settings->
label),
1015 (
const gchar *)settings->
opt1,
1018 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1020 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1025 g_dgettext(priv->plugin->domain, settings->
label),
1028 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1030 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1035 g_dgettext(priv->plugin->domain, settings->
label),
1037 GTK_FILE_CHOOSER_ACTION_OPEN, setting_name);
1038 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1040 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1045 g_dgettext(priv->plugin->domain, settings->
label),
1047 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
1049 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1051 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1055 g_dgettext(priv->plugin->domain, settings->
label),
1057 0, 40, setting_name);
1058 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1060 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1065 g_dgettext(priv->plugin->domain, settings->
label),
1067 0, 40, setting_name);
1068 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1070 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1083 if (!settings->
compact || grid_column > 1) {
1093 TRACE_CALL(__func__);
1108 priv->behavior_precommand_entry = widget;
1109 gtk_entry_set_placeholder_text(GTK_ENTRY(widget), _(
"command %h %u %t %U %p %g --option"));
1110 gtk_widget_set_tooltip_markup(widget, _(cmd_tips));
1115 priv->behavior_postcommand_entry = widget;
1116 gtk_entry_set_placeholder_text(GTK_ENTRY(widget), _(
"/path/to/command -opt1 arg %h %u %t -opt2 %U %p %g"));
1117 gtk_widget_set_tooltip_markup(widget, _(cmd_tips));
1137 "0",
N_(
"Password"),
1138 "1",
N_(
"SSH identity file"),
1139 "2",
N_(
"SSH agent"),
1140 "3",
N_(
"Public key (automatic)"),
1141 "4",
N_(
"Kerberos (GSSAPI)"),
1148 TRACE_CALL(__func__);
1163 _(
"SSH Tunnel"), 9, 3);
1164 widget = gtk_toggle_button_new_with_label(_(
"Enable SSH tunnel"));
1165 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1166 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
1167 g_signal_connect(G_OBJECT(widget),
"toggled",
1169 priv->ssh_tunnel_enabled_check = widget;
1171 widget = gtk_check_button_new_with_label(_(
"Tunnel via loopback address"));
1172 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 2, 1);
1173 priv->ssh_tunnel_loopback_check = widget;
1179 switch (ssh_setting) {
1181 s = g_strdup_printf(_(
"Same server at port %i"), DEFAULT_SSH_PORT);
1182 widget = gtk_radio_button_new_with_label(NULL, s);
1184 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 3, 1);
1185 priv->ssh_tunnel_server_default_radio = widget;
1189 widget = gtk_radio_button_new_with_label_from_widget(
1190 GTK_RADIO_BUTTON(priv->ssh_tunnel_server_default_radio), _(
"Custom"));
1191 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
1192 g_signal_connect(G_OBJECT(widget),
"toggled",
1194 priv->ssh_tunnel_server_custom_radio = widget;
1196 widget = gtk_entry_new();
1197 gtk_entry_set_max_length(GTK_ENTRY(widget), 100);
1198 gtk_widget_set_tooltip_markup(widget, _(server_tips2));
1199 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 2, 1);
1200 priv->ssh_tunnel_server_entry = widget;
1206 priv->ssh_tunnel_server_default_radio = NULL;
1207 priv->ssh_tunnel_server_custom_radio = NULL;
1210 _(
"Server"), NULL,
"ssh_reverse_tunnel_server");
1211 gtk_widget_set_tooltip_markup(priv->ssh_tunnel_server_entry, _(server_tips));
1217 priv->ssh_tunnel_server_default_radio = NULL;
1218 priv->ssh_tunnel_server_custom_radio = NULL;
1219 priv->ssh_tunnel_server_entry = NULL;
1231 _(
"Start-up path"), NULL,
"start-up-path");
1233 gtk_entry_set_text(GTK_ENTRY(widget), cs ? cs :
"");
1234 g_hash_table_insert(priv->setting_widgets,
"execpath", widget);
1245 _(
"Authentication type"),
1252 priv->ssh_tunnel_username_entry =
1254 _(
"Username"), NULL,
"ssh_tunnel_username");
1262 "ssh_tunnel_password");
1263 priv->ssh_tunnel_auth_password = widget;
1267 _(
"SSH private key file"),
1269 GTK_FILE_CHOOSER_ACTION_OPEN,
"ssh_tunnel_privatekey");
1273 _(
"SSH certificate file"),
1275 GTK_FILE_CHOOSER_ACTION_OPEN,
"ssh_tunnel_certfile");
1278 widget = gtk_label_new(_(
"Password to unlock private key"));
1279 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
1280 widget = gtk_entry_new();
1281 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 2, 1);
1282 gtk_entry_set_max_length(GTK_ENTRY(widget), 300);
1283 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
1284 gtk_widget_set_hexpand(widget, TRUE);
1285 priv->ssh_tunnel_passphrase = widget;
1291 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_enabled_check),
1293 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_loopback_check),
1296 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cs ? priv->ssh_tunnel_server_custom_radio : priv->ssh_tunnel_server_default_radio), TRUE);
1297 gtk_entry_set_text(GTK_ENTRY(priv->ssh_tunnel_server_entry),
1300 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_enabled_check),
1302 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_loopback_check),
1304 gtk_entry_set_text(GTK_ENTRY(priv->ssh_tunnel_server_entry),
1309 gtk_widget_show_all(grid);
1316 TRACE_CALL(__func__);
1329 if (priv->plugin->basic_settings) {
1335 if (priv->plugin->advanced_settings) {
1353 TRACE_CALL(__func__);
1357 if (priv->config_container) {
1358 gtk_widget_destroy(priv->config_container);
1359 priv->config_container = NULL;
1360 gtk_widget_destroy(priv->config_viewport);
1361 priv->config_viewport = NULL;
1362 gtk_widget_destroy(priv->config_scrollable);
1363 priv->config_scrollable = NULL;
1366 priv->server_combo = NULL;
1367 priv->resolution_iws_radio = NULL;
1368 priv->resolution_auto_radio = NULL;
1369 priv->resolution_custom_radio = NULL;
1370 priv->resolution_custom_combo = NULL;
1371 priv->keymap_combo = NULL;
1373 priv->ssh_tunnel_enabled_check = NULL;
1374 priv->ssh_tunnel_loopback_check = NULL;
1375 priv->ssh_tunnel_server_default_radio = NULL;
1376 priv->ssh_tunnel_server_custom_radio = NULL;
1377 priv->ssh_tunnel_server_entry = NULL;
1378 priv->ssh_tunnel_username_entry = NULL;
1379 priv->ssh_tunnel_auth_combo = NULL;
1380 priv->ssh_tunnel_auth_password = NULL;
1381 priv->ssh_tunnel_privatekey_chooser = NULL;
1382 priv->ssh_tunnel_certfile_chooser = NULL;
1384 g_hash_table_remove_all(priv->setting_widgets);
1397 TRACE_CALL(__func__);
1400 remmina_file_set_string(priv->remmina_file,
"precommand", gtk_entry_get_text(GTK_ENTRY(priv->behavior_precommand_entry)));
1401 remmina_file_set_string(priv->remmina_file,
"postcommand", gtk_entry_get_text(GTK_ENTRY(priv->behavior_postcommand_entry)));
1403 gboolean autostart_enabled = (priv->behavior_autostart_check ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->behavior_autostart_check)) : FALSE);
1405 gboolean lock_enabled = (priv->behavior_lock_check ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->behavior_lock_check)) : FALSE);
1411 TRACE_CALL(__func__);
1413 gboolean ssh_tunnel_enabled;
1414 int ssh_tunnel_auth;
1416 ssh_tunnel_enabled = (priv->ssh_tunnel_enabled_check ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_enabled_check)) : FALSE);
1418 "ssh_tunnel_loopback",
1419 (priv->ssh_tunnel_loopback_check ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_loopback_check)) : FALSE));
1424 (ssh_tunnel_enabled ? gtk_entry_get_text(GTK_ENTRY(priv->ssh_tunnel_username_entry)) : NULL));
1427 "ssh_tunnel_server",
1428 (ssh_tunnel_enabled && priv->ssh_tunnel_server_entry && (priv->ssh_tunnel_server_custom_radio == NULL || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_server_custom_radio))) ? gtk_entry_get_text(GTK_ENTRY(priv->ssh_tunnel_server_entry)) : NULL));
1430 ssh_tunnel_auth = gtk_combo_box_get_active(GTK_COMBO_BOX(priv->ssh_tunnel_auth_combo));
1438 "ssh_tunnel_privatekey",
1439 (priv->ssh_tunnel_privatekey_chooser ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(priv->ssh_tunnel_privatekey_chooser)) : NULL));
1443 "ssh_tunnel_certfile",
1444 (priv->ssh_tunnel_certfile_chooser ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(priv->ssh_tunnel_certfile_chooser)) : NULL));
1448 "ssh_tunnel_password",
1449 (ssh_tunnel_enabled && (ssh_tunnel_auth ==
SSH_AUTH_PASSWORD)) ? gtk_entry_get_text(GTK_ENTRY(priv->ssh_tunnel_auth_password)) : NULL);
1453 "ssh_tunnel_passphrase",
1458 gchar * setting_name_to_validate,
1459 gconstpointer value,
1462 if (!setting_name_to_validate || !value || !gfe) {
1463 if (!setting_name_to_validate) {
1464 g_critical(_(
"(%s: %i): Can't validate setting '%s' since 'value' or 'gfe' " 1466 __func__, __LINE__, setting_name_to_validate);
1468 g_critical(_(
"(%s: %i): Can't validate user input since " 1469 "'setting_name_to_validate', 'value' or 'gfe' are NULL!"),
1470 __func__, __LINE__);
1472 g_set_error(err, 1, 1, _(
"Internal error."));
1476 if (strcmp(setting_name_to_validate,
"notes_text") == 0) {
1484 protocol_plugin = priv->plugin;
1490 if (setting_iter->
name == NULL) {
1491 g_error(
"Internal error: a setting name in protocol plugin %s is " 1492 "null. Please fix RemminaProtocolSetting struct content.",
1493 protocol_plugin->
name);
1494 }
else if ((gchar *)setting_name_to_validate) {
1495 if (strcmp((gchar *)setting_name_to_validate, setting_iter->
name) == 0) {
1499 GCallback validator = setting_iter->
validator;
1503 GError *err_ret = NULL;
1505 g_debug(
"Checking setting '%s' for validation.", setting_iter->
name);
1506 if (validator != NULL) {
1510 err_ret = ((GError * (*)(gpointer, gconstpointer, gpointer)) validator)(setting_name_to_validate, value, validator_data);
1514 g_debug(
"it has a validator function and it had an error!");
1536 GtkWidget ** failed_widget)
1538 TRACE_CALL(__func__);
1540 GHashTableIter iter;
1543 GtkTextBuffer *buffer;
1544 gchar *escaped, *unescaped;
1545 GtkTextIter start, end;
1548 *failed_widget = NULL;
1550 g_hash_table_iter_init(&iter, priv->setting_widgets);
1551 while (g_hash_table_iter_next(&iter, &key, &widget)) {
1553 if (!gtk_widget_get_sensitive(GTK_WIDGET(widget))) {
1554 g_debug(
"Grayed-out setting-widget '%s' will not be saved.",
1555 gtk_widget_get_name(widget));
1559 if (GTK_IS_ENTRY(widget)) {
1560 const gchar *value = gtk_entry_get_text(GTK_ENTRY(widget));
1565 *failed_widget = widget;
1570 }
else if (GTK_IS_TEXT_VIEW(widget)) {
1571 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
1572 gtk_text_buffer_get_start_iter(buffer, &start);
1573 gtk_text_buffer_get_end_iter(buffer, &end);
1574 unescaped = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1575 escaped = g_uri_escape_string(unescaped, NULL, TRUE);
1580 *failed_widget = widget;
1586 }
else if (GTK_IS_COMBO_BOX(widget)) {
1592 *failed_widget = widget;
1597 }
else if (GTK_IS_FILE_CHOOSER(widget)) {
1598 gchar *value = gtk_widget_get_sensitive(GTK_WIDGET(widget)) ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget)) : NULL;
1604 *failed_widget = widget;
1610 }
else if (GTK_IS_TOGGLE_BUTTON(widget)) {
1611 gboolean value = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1616 *failed_widget = widget;
1632 GtkWidget ** failed_widget)
1634 TRACE_CALL(__func__);
1636 gchar *custom_resolution;
1654 if (priv->resolution_auto_radio) {
1655 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->resolution_auto_radio))) {
1659 }
else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->resolution_iws_radio))) {
1670 g_free(custom_resolution);
1677 if (priv->keymap_combo)
1688 TRACE_CALL(__func__);
1692 GtkWidget *failed_widget = NULL;
1695 g_warning(_(
"Couldn't validate user input. %s"), err->message);
1718 dialog = gtk_message_dialog_new(GTK_WINDOW(gfe), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO,
1719 GTK_BUTTONS_OK, _(
"Default settings saved."));
1720 gtk_dialog_run(GTK_DIALOG(dialog));
1721 gtk_widget_destroy(dialog);
1726 TRACE_CALL(__func__);
1728 GtkWidget *failed_widget = NULL;
1731 g_warning(_(
"Couldn't validate user input. %s"), err->message);
1741 gtk_widget_destroy(GTK_WIDGET(gfe));
1746 TRACE_CALL(__func__);
1749 GtkWidget *failed_widget = NULL;
1752 g_warning(_(
"Couldn't validate user input. %s"), err->message);
1761 gtk_widget_destroy(GTK_WIDGET(gfe));
1762 gf->prevent_saving = TRUE;
1768 TRACE_CALL(__func__);
1772 GtkWidget *failed_widget = NULL;
1775 g_warning(_(
"Couldn't validate user input. %s"), err->message);
1789 gtk_widget_destroy(GTK_WIDGET(gfe));
1795 TRACE_CALL(__func__);
1796 gtk_widget_destroy(GTK_WIDGET(gfe));
1801 TRACE_CALL(__func__);
1809 gtk_window_set_title(GTK_WINDOW(gfe), _(
"Remote Connection Profile"));
1811 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"_Cancel")), GTK_RESPONSE_CANCEL);
1815 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"Save as Default")), GTK_RESPONSE_OK);
1816 gtk_widget_set_tooltip_text(GTK_WIDGET(widget), _(
"Use the current settings as the default for all new connection profiles"));
1819 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"_Save")), GTK_RESPONSE_APPLY);
1821 gtk_widget_set_sensitive(widget, FALSE);
1822 priv->save_button = widget;
1824 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"Connect")), GTK_RESPONSE_ACCEPT);
1827 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"_Save and Connect")), GTK_RESPONSE_OK);
1828 gtk_widget_set_can_default(widget, TRUE);
1831 gtk_dialog_set_default_response(GTK_DIALOG(gfe), GTK_RESPONSE_OK);
1832 gtk_window_set_default_size(GTK_WINDOW(gfe), 800, 600);
1837 priv->setting_widgets = g_hash_table_new(g_str_hash, g_str_equal);
1844 TRACE_CALL(__func__);
1846 GtkListStore *store;
1850 store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(gfe->
priv->protocol_combo)));
1852 first = !gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
1854 gtk_list_store_append(store, &iter);
1855 gtk_list_store_set(store, &iter, 0, protocol, 1, g_dgettext(plugin->
domain, plugin->
description), 2,
1859 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(gfe->
priv->protocol_combo), &iter);
1866 TRACE_CALL(__func__);
1870 gtk_widget_set_sensitive(priv->group_combo, TRUE);
1871 gtk_widget_set_sensitive(priv->save_button, TRUE);
1876 TRACE_CALL(__func__);
1893 TRACE_CALL(__func__);
1907 TRACE_CALL(__func__);
1916 gfe = REMMINA_FILE_EDITOR(g_object_new(REMMINA_TYPE_FILE_EDITOR, NULL));
1918 priv->remmina_file = remminafile;
1921 gtk_dialog_set_response_sensitive(GTK_DIALOG(gfe), GTK_RESPONSE_APPLY, FALSE);
1924 grid = gtk_grid_new();
1925 gtk_widget_show(grid);
1926 gtk_grid_set_row_spacing(GTK_GRID(grid), 4);
1927 gtk_grid_set_column_spacing(GTK_GRID(grid), 8);
1928 gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
1929 gtk_container_set_border_width(GTK_CONTAINER(grid), 8);
1930 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(gfe))), grid, FALSE, FALSE, 2);
1937 widget = gtk_label_new(_(
"Name"));
1938 gtk_widget_show(widget);
1939 gtk_widget_set_valign(widget, GTK_ALIGN_START);
1940 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1941 gtk_grid_attach(GTK_GRID(grid), widget, 0, 3, 2, 1);
1942 gtk_grid_set_column_spacing(GTK_GRID(grid), 10);
1944 widget = gtk_entry_new();
1945 gtk_widget_show(widget);
1946 gtk_grid_attach(GTK_GRID(grid), widget, 1, 3, 3, 1);
1947 gtk_entry_set_max_length(GTK_ENTRY(widget), 100);
1948 priv->name_entry = widget;
1950 if (!profile_file_exists) {
1951 gtk_entry_set_text(GTK_ENTRY(widget), _(
"Quick Connect"));
1952 #if GTK_CHECK_VERSION(3, 16, 0) 1953 gtk_entry_grab_focus_without_selecting(GTK_ENTRY(widget));
1958 gtk_entry_set_text(GTK_ENTRY(widget), cs ? cs :
"");
1962 widget = gtk_label_new(_(
"Group"));
1963 gtk_widget_show(widget);
1964 gtk_widget_set_valign(widget, GTK_ALIGN_START);
1965 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1966 gtk_grid_attach(GTK_GRID(grid), widget, 0, 6, 2, 1);
1971 gtk_widget_show(priv->group_combo);
1972 gtk_grid_attach(GTK_GRID(grid), priv->group_combo, 1, 6, 3, 1);
1973 gtk_widget_set_sensitive(priv->group_combo, FALSE);
1975 s = g_strdup_printf(_(
"Use '%s' as subgroup delimiter"),
"/");
1976 gtk_widget_set_tooltip_text(priv->group_combo, s);
1980 widget = gtk_label_new(_(
"Labels"));
1981 gtk_widget_show(widget);
1982 gtk_widget_set_valign(widget, GTK_ALIGN_START);
1983 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1984 gtk_grid_attach(GTK_GRID(grid), widget, 0, 9, 2, 1);
1985 gtk_grid_set_column_spacing(GTK_GRID(grid), 10);
1987 widget = gtk_entry_new();
1988 gtk_widget_show(widget);
1989 gtk_grid_attach(GTK_GRID(grid), widget, 1, 9, 3, 1);
1990 gtk_entry_set_max_length(GTK_ENTRY(widget), 255);
1991 priv->labels_entry = widget;
1993 if (!profile_file_exists) {
1994 gtk_widget_set_tooltip_text(widget, _(
"Label1,Label2"));
1995 #if GTK_CHECK_VERSION(3, 16, 0) 1996 gtk_entry_grab_focus_without_selecting(GTK_ENTRY(widget));
2001 gtk_entry_set_text(GTK_ENTRY(widget), cs ? cs :
"");
2005 widget = gtk_label_new(_(
"Protocol"));
2006 gtk_widget_show(widget);
2007 gtk_widget_set_valign(widget, GTK_ALIGN_START);
2008 gtk_widget_set_halign(widget, GTK_ALIGN_START);
2009 gtk_grid_attach(GTK_GRID(grid), widget, 0, 12, 2, 1);
2012 gtk_widget_show(widget);
2013 gtk_grid_attach(GTK_GRID(grid), widget, 1, 12, 3, 1);
2014 priv->protocol_combo = widget;
2019 widget = gtk_event_box_new();
2020 gtk_widget_show(widget);
2021 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(gfe))), widget, TRUE, TRUE, 2);
2022 priv->config_box = widget;
2024 priv->config_container = NULL;
2025 priv->config_scrollable = NULL;
2031 return GTK_WIDGET(gfe);
2036 TRACE_CALL(__func__);
2042 TRACE_CALL(__func__);
2056 TRACE_CALL(__func__);
2065 dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
2066 _(
"Could not find the file “%s”."), filename);
2067 gtk_dialog_run(GTK_DIALOG(dialog));
2068 gtk_widget_destroy(dialog);
2075 TRACE_CALL(__func__);
2084 GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
2085 _(
"Could not find the file “%s”."), filename);
2086 gtk_dialog_run(GTK_DIALOG(dialog));
2087 gtk_widget_destroy(dialog);
+
Go to the documentation of this file. 39 #ifdef HAVE_LIBAVAHI_UI 40 #include <avahi-ui/avahi-ui.h> 60 static const gchar *server_tips =
N_(
"<big>" 64 "VNC additional formats\n" 65 "• ID:repeater ID number\n" 66 "• unix:///path/socket.sock" 69 static const gchar *cmd_tips =
N_(
"<big>" 70 "• command in PATH args %h\n" 71 "• /path/to/foo -options %h %u\n" 72 "• %h is substituted with the server name\n" 73 "• %t is substituted with the SSH server name\n" 74 "• %u is substituted with the username\n" 75 "• %U is substituted with the SSH username\n" 76 "• %p is substituted with Remmina profile name\n" 77 "• %g is substituted with Remmina profile group name\n" 78 "• %d is substituted with local date and time in ISO 8601 format\n" 79 "Do not run in background if you want the command to be executed before connecting.\n" 83 static const gchar *server_tips2 =
N_(
"<big>" 87 "• username@server[:port] (SSH protocol only)" 91 struct _RemminaFileEditorPriv {
94 const gchar * avahi_service_type;
96 GtkWidget * name_entry;
97 GtkWidget * labels_entry;
98 GtkWidget * group_combo;
99 GtkWidget * protocol_combo;
100 GtkWidget * save_button;
102 GtkWidget * config_box;
103 GtkWidget * config_scrollable;
104 GtkWidget * config_viewport;
105 GtkWidget * config_container;
107 GtkWidget * server_combo;
108 GtkWidget * resolution_iws_radio;
109 GtkWidget * resolution_auto_radio;
110 GtkWidget * resolution_custom_radio;
111 GtkWidget * resolution_custom_combo;
112 GtkWidget * keymap_combo;
114 GtkWidget * behavior_autostart_check;
115 GtkWidget * behavior_precommand_entry;
116 GtkWidget * behavior_postcommand_entry;
117 GtkWidget * behavior_lock_check;
119 GtkWidget * ssh_tunnel_enabled_check;
120 GtkWidget * ssh_tunnel_loopback_check;
121 GtkWidget * ssh_tunnel_server_default_radio;
122 GtkWidget * ssh_tunnel_server_custom_radio;
123 GtkWidget * ssh_tunnel_server_entry;
124 GtkWidget * ssh_tunnel_auth_agent_radio;
125 GtkWidget * ssh_tunnel_auth_password_radio;
126 GtkWidget * ssh_tunnel_auth_password;
127 GtkWidget * ssh_tunnel_passphrase;
128 GtkWidget * ssh_tunnel_auth_publickey_radio;
129 GtkWidget * ssh_tunnel_auth_auto_publickey_radio;
130 GtkWidget * ssh_tunnel_auth_combo;
131 GtkWidget * ssh_tunnel_username_entry;
132 GtkWidget * ssh_tunnel_privatekey_chooser;
133 GtkWidget * ssh_tunnel_certfile_chooser;
135 GHashTable * setting_widgets;
140 TRACE_CALL(__func__);
159 GtkWidget * failed_widget,
164 g_set_error(&err, 1, 1, _(
"Input is invalid."));
167 if (!gfe || !failed_widget) {
168 g_critical(
"(%s): Parameters RemminaFileEditor 'gfe' or " 169 "GtkWidget* 'failed_widget' are 'NULL'!",
174 gint widget_width = gtk_widget_get_allocated_width(failed_widget);
175 gint widget_height = gtk_widget_get_allocated_height(failed_widget);
177 GtkWidget *err_label = gtk_label_new(
"");
178 GtkWidget *alert_icon = NULL;
179 GtkWindow *err_window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
180 GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
181 GdkWindow *window = gtk_widget_get_window(failed_widget);
183 GtkAllocation allocation;
184 gint failed_widget_x, failed_widget_y;
186 gchar *markup = g_strdup_printf(
"<span size='large'>%s</span>", err->message);
189 gtk_window_set_decorated(err_window, FALSE);
190 gtk_window_set_type_hint(err_window, GDK_WINDOW_TYPE_HINT_TOOLTIP);
191 gtk_window_set_default_size(err_window, widget_width, widget_height);
192 gtk_window_set_title(err_window,
"Error");
193 gtk_window_set_resizable(err_window, TRUE);
196 gtk_window_set_attached_to(err_window, failed_widget);
197 gtk_window_set_transient_for(err_window, GTK_WINDOW(gfe));
198 gdk_window_get_origin(GDK_WINDOW(window), &failed_widget_x, &failed_widget_y);
199 gtk_widget_get_allocation(failed_widget, &allocation);
200 failed_widget_x += allocation.x;
201 failed_widget_y += allocation.y + allocation.height;
202 gtk_window_move(err_window, failed_widget_x, failed_widget_y);
205 gtk_label_set_selectable(GTK_LABEL(err_label), FALSE);
206 gtk_label_set_max_width_chars(GTK_LABEL(err_label), 1);
207 gtk_widget_set_hexpand(GTK_WIDGET(err_label), TRUE);
208 gtk_widget_set_vexpand(GTK_WIDGET(err_label), TRUE);
209 gtk_label_set_ellipsize(GTK_LABEL(err_label), PANGO_ELLIPSIZE_END);
210 gtk_label_set_line_wrap(GTK_LABEL(err_label), TRUE);
211 gtk_label_set_line_wrap_mode(GTK_LABEL(err_label), PANGO_WRAP_WORD_CHAR);
212 gtk_label_set_markup(GTK_LABEL(err_label), markup);
214 alert_icon = gtk_image_new_from_icon_name(
"dialog-warning-symbolic",
218 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(alert_icon), FALSE, FALSE, 0);
219 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(err_label), TRUE, TRUE, 5);
222 gtk_container_add(GTK_CONTAINER(err_window), GTK_WIDGET(box));
225 gtk_widget_show_all(GTK_WIDGET(err_window));
228 g_signal_connect(G_OBJECT(err_window),
"focus-out-event",
229 G_CALLBACK(gtk_window_close), NULL);
230 g_signal_connect(G_OBJECT(err_window),
"button-press-event",
231 G_CALLBACK(gtk_window_close), NULL);
234 #ifdef HAVE_LIBAVAHI_UI 238 TRACE_CALL(__func__);
242 dialog = aui_service_dialog_new(_(
"Choose a Remote Desktop Server"),
244 _(
"_Cancel"), GTK_RESPONSE_CANCEL,
245 _(
"_OK"), GTK_RESPONSE_ACCEPT,
248 gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gfe));
249 aui_service_dialog_set_resolve_service(AUI_SERVICE_DIALOG(dialog), TRUE);
250 aui_service_dialog_set_resolve_host_name(AUI_SERVICE_DIALOG(dialog), TRUE);
251 aui_service_dialog_set_browse_service_types(AUI_SERVICE_DIALOG(dialog),
252 gfe->
priv->avahi_service_type, NULL);
254 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
255 host = g_strdup_printf(
"[%s]:%i",
256 aui_service_dialog_get_host_name(AUI_SERVICE_DIALOG(dialog)),
257 aui_service_dialog_get_port(AUI_SERVICE_DIALOG(dialog)));
261 gtk_widget_destroy(dialog);
264 gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(gfe->
priv->server_combo))), host);
272 TRACE_CALL(__func__);
274 GtkWidget *defaultwidget;
276 gfe = REMMINA_FILE_EDITOR(widget);
278 defaultwidget = gfe->
priv->server_combo;
281 if (GTK_IS_EDITABLE(defaultwidget))
282 gtk_editable_select_region(GTK_EDITABLE(defaultwidget), 0, -1);
283 gtk_widget_grab_focus(defaultwidget);
289 TRACE_CALL(__func__);
291 g_hash_table_destroy(REMMINA_FILE_EDITOR(widget)->priv->setting_widgets);
292 g_free(REMMINA_FILE_EDITOR(widget)->priv);
297 TRACE_CALL(__func__);
298 gtk_widget_set_sensitive(widget, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(togglebutton)));
303 TRACE_CALL(__func__);
305 gfe->
priv->config_container = gtk_notebook_new();
306 gfe->
priv->config_viewport = gtk_viewport_new(NULL, NULL);
307 gfe->
priv->config_scrollable = gtk_scrolled_window_new(NULL, NULL);
308 gtk_container_set_border_width(GTK_CONTAINER(gfe->
priv->config_scrollable), 2);
309 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gfe->
priv->config_scrollable),
310 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
311 gtk_widget_show(gfe->
priv->config_scrollable);
313 gtk_container_add(GTK_CONTAINER(gfe->
priv->config_viewport), gfe->
priv->config_container);
314 gtk_container_set_border_width(GTK_CONTAINER(gfe->
priv->config_viewport), 2);
315 gtk_widget_show(gfe->
priv->config_viewport);
316 gtk_container_add(GTK_CONTAINER(gfe->
priv->config_scrollable), gfe->
priv->config_viewport);
317 gtk_container_set_border_width(GTK_CONTAINER(gfe->
priv->config_container), 2);
318 gtk_widget_show(gfe->
priv->config_container);
320 gtk_container_add(GTK_CONTAINER(gfe->
priv->config_box), gfe->
priv->config_scrollable);
324 const gchar *stock_id,
const gchar *label, gint rows, gint cols)
326 TRACE_CALL(__func__);
332 tablabel = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
333 gtk_widget_show(tablabel);
335 widget = gtk_image_new_from_icon_name(stock_id, GTK_ICON_SIZE_BUTTON);
336 gtk_box_pack_start(GTK_BOX(tablabel), widget, FALSE, FALSE, 0);
337 gtk_widget_show(widget);
339 widget = gtk_label_new(label);
340 gtk_box_pack_start(GTK_BOX(tablabel), widget, FALSE, FALSE, 0);
341 gtk_widget_show(widget);
343 tabbody = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
344 gtk_widget_show(tabbody);
345 gtk_notebook_append_page(GTK_NOTEBOOK(gfe->
priv->config_container), tabbody, tablabel);
347 grid = gtk_grid_new();
348 gtk_widget_show(grid);
349 gtk_grid_set_row_spacing(GTK_GRID(grid), 8);
350 gtk_grid_set_column_spacing(GTK_GRID(grid), 8);
351 gtk_container_set_border_width(GTK_CONTAINER(grid), 15);
352 gtk_box_pack_start(GTK_BOX(tabbody), grid, FALSE, FALSE, 0);
361 TRACE_CALL(__func__);
362 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_server_entry),
363 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->
priv->ssh_tunnel_enabled_check)) &&
364 (gfe->
priv->ssh_tunnel_server_custom_radio == NULL ||
365 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->
priv->ssh_tunnel_server_custom_radio))));
371 TRACE_CALL(__func__);
373 gboolean enabled = TRUE;
376 const gchar *s = NULL;
378 if (gfe->
priv->ssh_tunnel_enabled_check) {
379 enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->
priv->ssh_tunnel_enabled_check));
380 if (gfe->
priv->ssh_tunnel_loopback_check)
381 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_loopback_check), enabled);
382 if (gfe->
priv->ssh_tunnel_server_default_radio)
383 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_server_default_radio), enabled);
384 if (gfe->
priv->ssh_tunnel_server_custom_radio)
385 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_server_custom_radio), enabled);
389 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_username_entry), enabled);
390 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_auth_password), enabled);
391 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_auth_combo), enabled);
392 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_privatekey_chooser), enabled);
393 gtk_widget_set_sensitive(GTK_WIDGET(gfe->
priv->ssh_tunnel_certfile_chooser), enabled);
400 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(gfe->
priv->ssh_tunnel_privatekey_chooser), s);
403 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(gfe->
priv->ssh_tunnel_certfile_chooser), s);
405 if (gfe->
priv->ssh_tunnel_username_entry)
406 if (enabled && gtk_entry_get_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_username_entry))[0] ==
'\0') {
408 gtk_entry_set_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_username_entry), cp ? cp :
"");
411 if (gfe->
priv->ssh_tunnel_auth_password) {
412 if (enabled && gtk_entry_get_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_auth_password))[0] ==
'\0') {
414 gtk_entry_set_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_auth_password), cp ? cp :
"");
417 if (gfe->
priv->ssh_tunnel_passphrase) {
418 if (enabled && gtk_entry_get_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_passphrase))[0] ==
'\0') {
420 gtk_entry_set_text(GTK_ENTRY(gfe->
priv->ssh_tunnel_passphrase), cp ? cp :
"");
430 TRACE_CALL(__func__);
433 #ifdef HAVE_LIBAVAHI_UI 438 widget = gtk_label_new(_(
"Server"));
439 gtk_widget_show(widget);
440 gtk_widget_set_valign(widget, GTK_ALIGN_START);
441 gtk_widget_set_halign(widget, GTK_ALIGN_START);
442 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, row + 1);
446 gtk_widget_set_hexpand(widget, TRUE);
447 gtk_widget_show(widget);
448 gtk_widget_set_tooltip_markup(widget, _(server_tips));
449 gtk_entry_set_activates_default(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(widget))), TRUE);
450 gfe->
priv->server_combo = widget;
453 #ifdef HAVE_LIBAVAHI_UI 455 gfe->
priv->avahi_service_type = (
const gchar *)setting->
opt1;
457 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
458 gtk_widget_show(hbox);
459 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
461 widget = gtk_button_new_with_label(
"…");
462 s = g_strdup_printf(_(
"Browse the network to find a %s server"), plugin->
name);
463 gtk_widget_set_tooltip_text(widget, s);
465 gtk_widget_show(widget);
466 gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);
469 gtk_grid_attach(GTK_GRID(grid), hbox, 1, row, 1, 1);
473 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 1, 1);
480 TRACE_CALL(__func__);
483 widget = gtk_label_new(label);
484 gtk_widget_show(widget);
485 #if GTK_CHECK_VERSION(3, 12, 0) 486 gtk_widget_set_margin_end(widget, 40);
488 gtk_widget_set_margin_right(widget, 40);
490 gtk_widget_set_valign(widget, GTK_ALIGN_START);
491 gtk_widget_set_halign(widget, GTK_ALIGN_START);
492 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
494 widget = gtk_entry_new();
495 gtk_widget_show(widget);
496 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 1, 1);
497 gtk_entry_set_max_length(GTK_ENTRY(widget), 0);
498 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
499 gtk_widget_set_hexpand(widget, TRUE);
500 gtk_entry_set_activates_default(GTK_ENTRY(widget), TRUE);
502 gtk_widget_set_name(widget, setting_name);
505 gtk_entry_set_text(GTK_ENTRY(widget), value);
508 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widget), GTK_ENTRY_ICON_SECONDARY,
"org.remmina.Remmina-password-reveal-symbolic");
509 gtk_entry_set_icon_activatable(GTK_ENTRY(widget), GTK_ENTRY_ICON_SECONDARY, TRUE);
517 TRACE_CALL(__func__);
519 res_str = g_strdup_printf(
"%dx%d",
529 TRACE_CALL(__func__);
535 gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gfe));
536 gtk_dialog_run(dialog);
540 gtk_widget_destroy(GTK_WIDGET(dialog));
544 GtkWidget *grid, gint row)
546 TRACE_CALL(__func__);
549 int resolution_w, resolution_h;
560 if (resolution_w <= 0 || resolution_h <= 0)
566 res_str = g_strdup_printf(
"%dx%d", resolution_w, resolution_h);
570 widget = gtk_label_new(_(
"Resolution"));
571 gtk_widget_show(widget);
572 gtk_widget_set_valign(widget, GTK_ALIGN_START);
573 gtk_widget_set_halign(widget, GTK_ALIGN_START);
574 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
576 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
577 widget = gtk_radio_button_new_with_label(NULL, _(
"Use initial window size"));
578 gtk_widget_show(widget);
579 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
580 gfe->
priv->resolution_iws_radio = widget;
581 widget = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(gfe->
priv->resolution_iws_radio), _(
"Use client resolution"));
582 gtk_widget_show(widget);
583 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
584 gfe->
priv->resolution_auto_radio = widget;
585 gtk_grid_attach(GTK_GRID(grid), hbox, 1, row, 1, 1);
586 gtk_widget_show(hbox);
588 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
589 gtk_widget_show(hbox);
590 gtk_grid_attach(GTK_GRID(grid), hbox, 1, row + 1, 1, 1);
592 widget = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(gfe->
priv->resolution_iws_radio), _(
"Custom"));
593 gtk_widget_show(widget);
594 gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);
595 gfe->
priv->resolution_custom_radio = widget;
598 gtk_widget_show(widget);
599 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
600 gfe->
priv->resolution_custom_combo = widget;
602 widget = gtk_button_new_with_label(
"…");
603 gtk_widget_show(widget);
604 gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);
607 g_signal_connect(G_OBJECT(gfe->
priv->resolution_custom_radio),
"toggled",
611 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gfe->
priv->resolution_custom_radio), TRUE);
613 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gfe->
priv->resolution_auto_radio), TRUE);
615 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gfe->
priv->resolution_iws_radio), TRUE);
617 gtk_widget_set_sensitive(gfe->
priv->resolution_custom_combo, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->
priv->resolution_custom_radio)));
623 gint row, gint col,
const gchar *label,
const gchar *value, gint left,
624 gint right, gchar *setting_name)
626 TRACE_CALL(__func__);
629 widget = gtk_label_new(label);
630 gtk_widget_show(widget);
631 #if GTK_CHECK_VERSION(3, 12, 0) 632 gtk_widget_set_margin_start(widget, left);
633 gtk_widget_set_margin_end(widget, right);
635 gtk_widget_set_margin_left(widget, left);
636 gtk_widget_set_margin_right(widget, right);
638 gtk_widget_set_valign(widget, GTK_ALIGN_START);
639 gtk_widget_set_halign(widget, GTK_ALIGN_START);
640 gtk_grid_attach(GTK_GRID(grid), widget, col, row, 1, 1);
642 widget = gtk_entry_new();
643 gtk_widget_show(widget);
644 gtk_grid_attach(GTK_GRID(grid), widget, col + 1, row, 1, 1);
645 gtk_entry_set_max_length(GTK_ENTRY(widget), 300);
646 gtk_widget_set_hexpand(widget, TRUE);
648 gtk_widget_set_name(widget, setting_name);
651 gtk_entry_set_text(GTK_ENTRY(widget), value);
657 gint row, gint col,
const gchar *label,
const gchar *value,
660 TRACE_CALL(__func__);
666 gint row, gint col,
const gchar *label,
const gchar *value,
669 TRACE_CALL(__func__);
672 GtkTextBuffer *buffer;
675 widget = gtk_text_view_new();
676 view = GTK_TEXT_VIEW(widget);
677 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD);
678 gtk_text_view_set_top_margin(GTK_TEXT_VIEW(view), 20);
679 gtk_text_view_set_bottom_margin(GTK_TEXT_VIEW(view), 20);
680 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(view), 20);
681 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(view), 20);
682 gtk_text_view_set_monospace(view, TRUE);
684 gtk_widget_set_name(widget, setting_name);
686 buffer = gtk_text_view_get_buffer(view);
687 gtk_text_buffer_set_text(buffer, value, -1);
688 gtk_text_buffer_get_start_iter(buffer, &start);
689 gtk_text_buffer_place_cursor(buffer, &start);
691 gtk_widget_show(widget);
692 gtk_widget_set_hexpand(widget, TRUE);
693 gtk_widget_set_size_request(GTK_WIDGET(view), 320, 300);
694 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
699 gint row, gint col,
const gchar *label,
const gpointer *list,
700 const gchar *value, gchar *setting_name)
702 TRACE_CALL(__func__);
705 widget = gtk_label_new(label);
706 gtk_widget_show(widget);
707 gtk_widget_set_valign(widget, GTK_ALIGN_START);
708 gtk_widget_set_halign(widget, GTK_ALIGN_START);
710 gtk_widget_set_name(widget, setting_name);
711 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
714 gtk_widget_show(widget);
715 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 1, 1);
721 gint row, gint col,
const gchar *label,
const gchar *list,
722 const gchar *value, gchar *setting_name)
724 TRACE_CALL(__func__);
727 widget = gtk_label_new(label);
728 gtk_widget_show(widget);
729 gtk_widget_set_valign(widget, GTK_ALIGN_START);
730 gtk_widget_set_halign(widget, GTK_ALIGN_START);
731 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
734 gtk_widget_show(widget);
735 gtk_widget_set_hexpand(widget, TRUE);
737 gtk_widget_set_name(widget, setting_name);
738 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 1, 1);
744 gint row, gint top,
const gchar *label, gboolean value,
747 TRACE_CALL(__func__);
749 widget = gtk_check_button_new_with_label(label);
750 gtk_widget_show(widget);
752 gtk_widget_set_name(widget, setting_name);
753 gtk_grid_attach(GTK_GRID(grid), widget, top, row, 1, 1);
756 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
772 const gchar *value, gint type, gchar *setting_name)
774 TRACE_CALL(__func__);
779 widget = gtk_label_new(label);
780 gtk_widget_show(widget);
781 gtk_widget_set_valign(widget, GTK_ALIGN_START);
782 gtk_widget_set_halign(widget, GTK_ALIGN_START);
783 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
785 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
786 gtk_widget_show(hbox);
787 gtk_grid_attach(GTK_GRID(grid), hbox, 1, row, 1, 1);
789 check = gtk_check_button_new();
790 gtk_widget_show(check);
791 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), (value && value[0] ==
'/'));
792 gtk_box_pack_start(GTK_BOX(hbox), check, FALSE, FALSE, 0);
794 widget = gtk_file_chooser_button_new(label, type);
796 gtk_widget_set_name(widget, setting_name);
797 gtk_widget_show(widget);
799 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(widget), value);
800 gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
810 gint length, gint *position, gpointer data)
812 for (
int i = 0; i < length; i++) {
813 if (!isdigit(text[i]) && text[i] !=
'-') {
814 g_signal_stop_emission_by_name(G_OBJECT(editable),
"insert-text");
824 gint length, gint *position, gpointer data)
826 for (
int i = 0; i < length; i++) {
827 if (!isdigit(text[i]) && text[i] !=
'-' && text[i] !=
'.' && text[i] !=
',') {
828 g_signal_stop_emission_by_name(G_OBJECT(editable),
"insert-text");
835 gint row, gint col,
const gchar *label,
const gint value,
836 gint left, gint right, gchar *setting_name)
838 TRACE_CALL(__func__);
841 widget = gtk_label_new(label);
842 gtk_widget_show(widget);
843 #if GTK_CHECK_VERSION(3, 12, 0) 844 gtk_widget_set_margin_start(widget, left);
845 gtk_widget_set_margin_end(widget, right);
847 gtk_widget_set_margin_left(widget, left);
848 gtk_widget_set_margin_right(widget, right);
850 gtk_widget_set_valign(widget, GTK_ALIGN_START);
851 gtk_widget_set_halign(widget, GTK_ALIGN_START);
852 gtk_grid_attach(GTK_GRID(grid), widget, col, row, 1, 1);
854 widget = gtk_entry_new();
855 gtk_widget_show(widget);
856 gtk_grid_attach(GTK_GRID(grid), widget, col + 1, row, 1, 1);
857 gtk_entry_set_max_length(GTK_ENTRY(widget), 300);
858 gtk_widget_set_hexpand(widget, TRUE);
860 gtk_widget_set_name(widget, setting_name);
863 int length = snprintf(NULL, 0,
"%d", value) + 1;
864 char *str = malloc(length);
865 snprintf(str, length,
"%d", value);
867 gtk_entry_set_text(GTK_ENTRY(widget), str);
870 g_signal_connect(G_OBJECT(widget),
"insert-text",
877 GtkWidget *grid, gint row, gint col,
878 const gchar *label, gdouble value, gint left,
879 gint right, gchar *setting_name)
881 TRACE_CALL(__func__);
884 widget = gtk_label_new(label);
885 gtk_widget_show(widget);
886 #if GTK_CHECK_VERSION(3, 12, 0) 887 gtk_widget_set_margin_start(widget, left);
888 gtk_widget_set_margin_end(widget, right);
890 gtk_widget_set_margin_left(widget, left);
891 gtk_widget_set_margin_right(widget, right);
893 gtk_widget_set_valign(widget, GTK_ALIGN_START);
894 gtk_widget_set_halign(widget, GTK_ALIGN_START);
895 gtk_grid_attach(GTK_GRID(grid), widget, col, row, 1, 1);
897 widget = gtk_entry_new();
898 gtk_widget_show(widget);
899 gtk_grid_attach(GTK_GRID(grid), widget, col + 1, row, 1, 1);
900 gtk_entry_set_max_length(GTK_ENTRY(widget), 300);
901 gtk_widget_set_hexpand(widget, TRUE);
903 gtk_widget_set_name(widget, setting_name);
906 int length = snprintf(NULL, 0,
"%.8g", value) + 1;
907 char *str = malloc(length);
908 snprintf(str, length,
"%f", value);
910 gtk_entry_set_text(GTK_ENTRY(widget), str);
913 g_signal_connect(G_OBJECT(widget),
"insert-text",
924 TRACE_CALL(__func__);
928 gint grid_column = 0;
931 const gchar *escaped;
935 switch (settings->
type) {
942 g_dgettext(priv->plugin->domain, settings->
label),
945 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
958 _(
"Keyboard mapping"), (
const gpointer *)strarr,
967 g_dgettext(priv->plugin->domain, settings->
label),
970 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
972 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
978 escaped = g_uri_unescape_string(escaped, NULL);
980 g_dgettext(priv->plugin->domain, settings->
label), escaped,
982 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
988 g_dgettext(priv->plugin->domain, settings->
label),
989 (
const gpointer *)settings->
opt1,
992 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
994 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
999 g_dgettext(priv->plugin->domain, settings->
label),
1000 (
const gchar *)settings->
opt1,
1003 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1005 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1010 g_dgettext(priv->plugin->domain, settings->
label),
1013 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1015 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1020 g_dgettext(priv->plugin->domain, settings->
label),
1022 GTK_FILE_CHOOSER_ACTION_OPEN, setting_name);
1023 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1025 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1030 g_dgettext(priv->plugin->domain, settings->
label),
1032 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
1034 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1036 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1040 g_dgettext(priv->plugin->domain, settings->
label),
1042 0, 40, setting_name);
1043 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1045 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1050 g_dgettext(priv->plugin->domain, settings->
label),
1052 0, 40, setting_name);
1053 g_hash_table_insert(priv->setting_widgets, setting_name, widget);
1055 gtk_widget_set_tooltip_text(widget, _((
const gchar *)settings->
opt2));
1068 if (!settings->
compact || grid_column > 1) {
1078 TRACE_CALL(__func__);
1093 priv->behavior_precommand_entry = widget;
1094 gtk_entry_set_placeholder_text(GTK_ENTRY(widget), _(
"command %h %u %t %U %p %g --option"));
1095 gtk_widget_set_tooltip_markup(widget, _(cmd_tips));
1100 priv->behavior_postcommand_entry = widget;
1101 gtk_entry_set_placeholder_text(GTK_ENTRY(widget), _(
"/path/to/command -opt1 arg %h %u %t -opt2 %U %p %g"));
1102 gtk_widget_set_tooltip_markup(widget, _(cmd_tips));
1122 "0",
N_(
"Password"),
1123 "1",
N_(
"SSH identity file"),
1124 "2",
N_(
"SSH agent"),
1125 "3",
N_(
"Public key (automatic)"),
1126 "4",
N_(
"Kerberos (GSSAPI)"),
1133 TRACE_CALL(__func__);
1148 _(
"SSH Tunnel"), 9, 3);
1149 widget = gtk_toggle_button_new_with_label(_(
"Enable SSH tunnel"));
1150 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1151 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
1152 g_signal_connect(G_OBJECT(widget),
"toggled",
1154 priv->ssh_tunnel_enabled_check = widget;
1156 widget = gtk_check_button_new_with_label(_(
"Tunnel via loopback address"));
1157 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 2, 1);
1158 priv->ssh_tunnel_loopback_check = widget;
1164 switch (ssh_setting) {
1166 s = g_strdup_printf(_(
"Same server at port %i"), DEFAULT_SSH_PORT);
1167 widget = gtk_radio_button_new_with_label(NULL, s);
1169 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 3, 1);
1170 priv->ssh_tunnel_server_default_radio = widget;
1174 widget = gtk_radio_button_new_with_label_from_widget(
1175 GTK_RADIO_BUTTON(priv->ssh_tunnel_server_default_radio), _(
"Custom"));
1176 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
1177 g_signal_connect(G_OBJECT(widget),
"toggled",
1179 priv->ssh_tunnel_server_custom_radio = widget;
1181 widget = gtk_entry_new();
1182 gtk_entry_set_max_length(GTK_ENTRY(widget), 100);
1183 gtk_widget_set_tooltip_markup(widget, _(server_tips2));
1184 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 2, 1);
1185 priv->ssh_tunnel_server_entry = widget;
1191 priv->ssh_tunnel_server_default_radio = NULL;
1192 priv->ssh_tunnel_server_custom_radio = NULL;
1195 _(
"Server"), NULL,
"ssh_reverse_tunnel_server");
1196 gtk_widget_set_tooltip_markup(priv->ssh_tunnel_server_entry, _(server_tips));
1202 priv->ssh_tunnel_server_default_radio = NULL;
1203 priv->ssh_tunnel_server_custom_radio = NULL;
1204 priv->ssh_tunnel_server_entry = NULL;
1216 _(
"Start-up path"), NULL,
"start-up-path");
1218 gtk_entry_set_text(GTK_ENTRY(widget), cs ? cs :
"");
1219 g_hash_table_insert(priv->setting_widgets,
"execpath", widget);
1230 _(
"Authentication type"),
1237 priv->ssh_tunnel_username_entry =
1239 _(
"Username"), NULL,
"ssh_tunnel_username");
1247 "ssh_tunnel_password");
1248 priv->ssh_tunnel_auth_password = widget;
1252 _(
"SSH private key file"),
1254 GTK_FILE_CHOOSER_ACTION_OPEN,
"ssh_tunnel_privatekey");
1258 _(
"SSH certificate file"),
1260 GTK_FILE_CHOOSER_ACTION_OPEN,
"ssh_tunnel_certfile");
1263 widget = gtk_label_new(_(
"Password to unlock private key"));
1264 gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1);
1265 widget = gtk_entry_new();
1266 gtk_grid_attach(GTK_GRID(grid), widget, 1, row, 2, 1);
1267 gtk_entry_set_max_length(GTK_ENTRY(widget), 300);
1268 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
1269 gtk_widget_set_hexpand(widget, TRUE);
1270 priv->ssh_tunnel_passphrase = widget;
1276 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_enabled_check),
1278 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_loopback_check),
1281 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cs ? priv->ssh_tunnel_server_custom_radio : priv->ssh_tunnel_server_default_radio), TRUE);
1282 gtk_entry_set_text(GTK_ENTRY(priv->ssh_tunnel_server_entry),
1285 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_enabled_check),
1287 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_loopback_check),
1289 gtk_entry_set_text(GTK_ENTRY(priv->ssh_tunnel_server_entry),
1294 gtk_widget_show_all(grid);
1301 TRACE_CALL(__func__);
1314 if (priv->plugin->basic_settings) {
1320 if (priv->plugin->advanced_settings) {
1338 TRACE_CALL(__func__);
1342 if (priv->config_container) {
1343 gtk_widget_destroy(priv->config_container);
1344 priv->config_container = NULL;
1345 gtk_widget_destroy(priv->config_viewport);
1346 priv->config_viewport = NULL;
1347 gtk_widget_destroy(priv->config_scrollable);
1348 priv->config_scrollable = NULL;
1351 priv->server_combo = NULL;
1352 priv->resolution_iws_radio = NULL;
1353 priv->resolution_auto_radio = NULL;
1354 priv->resolution_custom_radio = NULL;
1355 priv->resolution_custom_combo = NULL;
1356 priv->keymap_combo = NULL;
1358 priv->ssh_tunnel_enabled_check = NULL;
1359 priv->ssh_tunnel_loopback_check = NULL;
1360 priv->ssh_tunnel_server_default_radio = NULL;
1361 priv->ssh_tunnel_server_custom_radio = NULL;
1362 priv->ssh_tunnel_server_entry = NULL;
1363 priv->ssh_tunnel_username_entry = NULL;
1364 priv->ssh_tunnel_auth_combo = NULL;
1365 priv->ssh_tunnel_auth_password = NULL;
1366 priv->ssh_tunnel_privatekey_chooser = NULL;
1367 priv->ssh_tunnel_certfile_chooser = NULL;
1369 g_hash_table_remove_all(priv->setting_widgets);
1382 TRACE_CALL(__func__);
1385 remmina_file_set_string(priv->remmina_file,
"precommand", gtk_entry_get_text(GTK_ENTRY(priv->behavior_precommand_entry)));
1386 remmina_file_set_string(priv->remmina_file,
"postcommand", gtk_entry_get_text(GTK_ENTRY(priv->behavior_postcommand_entry)));
1388 gboolean autostart_enabled = (priv->behavior_autostart_check ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->behavior_autostart_check)) : FALSE);
1390 gboolean lock_enabled = (priv->behavior_lock_check ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->behavior_lock_check)) : FALSE);
1396 TRACE_CALL(__func__);
1398 gboolean ssh_tunnel_enabled;
1399 int ssh_tunnel_auth;
1401 ssh_tunnel_enabled = (priv->ssh_tunnel_enabled_check ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_enabled_check)) : FALSE);
1403 "ssh_tunnel_loopback",
1404 (priv->ssh_tunnel_loopback_check ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_loopback_check)) : FALSE));
1409 (ssh_tunnel_enabled ? gtk_entry_get_text(GTK_ENTRY(priv->ssh_tunnel_username_entry)) : NULL));
1412 "ssh_tunnel_server",
1413 (ssh_tunnel_enabled && priv->ssh_tunnel_server_entry && (priv->ssh_tunnel_server_custom_radio == NULL || gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->ssh_tunnel_server_custom_radio))) ? gtk_entry_get_text(GTK_ENTRY(priv->ssh_tunnel_server_entry)) : NULL));
1415 ssh_tunnel_auth = gtk_combo_box_get_active(GTK_COMBO_BOX(priv->ssh_tunnel_auth_combo));
1423 "ssh_tunnel_privatekey",
1424 (priv->ssh_tunnel_privatekey_chooser ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(priv->ssh_tunnel_privatekey_chooser)) : NULL));
1428 "ssh_tunnel_certfile",
1429 (priv->ssh_tunnel_certfile_chooser ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(priv->ssh_tunnel_certfile_chooser)) : NULL));
1433 "ssh_tunnel_password",
1434 (ssh_tunnel_enabled && (ssh_tunnel_auth ==
SSH_AUTH_PASSWORD)) ? gtk_entry_get_text(GTK_ENTRY(priv->ssh_tunnel_auth_password)) : NULL);
1438 "ssh_tunnel_passphrase",
1443 gchar * setting_name_to_validate,
1444 gconstpointer value,
1447 if (!setting_name_to_validate || !value || !gfe) {
1448 if (!setting_name_to_validate) {
1449 g_critical(_(
"(%s: %i): Can't validate setting '%s' since 'value' or 'gfe' " 1451 __func__, __LINE__, setting_name_to_validate);
1453 g_critical(_(
"(%s: %i): Can't validate user input since " 1454 "'setting_name_to_validate', 'value' or 'gfe' are NULL!"),
1455 __func__, __LINE__);
1457 g_set_error(err, 1, 1, _(
"Internal error."));
1461 if (strcmp(setting_name_to_validate,
"notes_text") == 0) {
1469 protocol_plugin = priv->plugin;
1475 if (setting_iter->
name == NULL) {
1476 g_error(
"Internal error: a setting name in protocol plugin %s is " 1477 "null. Please fix RemminaProtocolSetting struct content.",
1478 protocol_plugin->
name);
1479 }
else if ((gchar *)setting_name_to_validate) {
1480 if (strcmp((gchar *)setting_name_to_validate, setting_iter->
name) == 0) {
1484 GCallback validator = setting_iter->
validator;
1488 GError *err_ret = NULL;
1490 g_debug(
"Checking setting '%s' for validation.", setting_iter->
name);
1491 if (validator != NULL) {
1495 err_ret = ((GError * (*)(gpointer, gconstpointer, gpointer)) validator)(setting_name_to_validate, value, validator_data);
1499 g_debug(
"it has a validator function and it had an error!");
1521 GtkWidget ** failed_widget)
1523 TRACE_CALL(__func__);
1525 GHashTableIter iter;
1528 GtkTextBuffer *buffer;
1529 gchar *escaped, *unescaped;
1530 GtkTextIter start, end;
1533 *failed_widget = NULL;
1535 g_hash_table_iter_init(&iter, priv->setting_widgets);
1536 while (g_hash_table_iter_next(&iter, &key, &widget)) {
1538 if (!gtk_widget_get_sensitive(GTK_WIDGET(widget))) {
1539 g_debug(
"Grayed-out setting-widget '%s' will not be saved.",
1540 gtk_widget_get_name(widget));
1544 if (GTK_IS_ENTRY(widget)) {
1545 const gchar *value = gtk_entry_get_text(GTK_ENTRY(widget));
1550 *failed_widget = widget;
1555 }
else if (GTK_IS_TEXT_VIEW(widget)) {
1556 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
1557 gtk_text_buffer_get_start_iter(buffer, &start);
1558 gtk_text_buffer_get_end_iter(buffer, &end);
1559 unescaped = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1560 escaped = g_uri_escape_string(unescaped, NULL, TRUE);
1565 *failed_widget = widget;
1571 }
else if (GTK_IS_COMBO_BOX(widget)) {
1577 *failed_widget = widget;
1582 }
else if (GTK_IS_FILE_CHOOSER(widget)) {
1583 gchar *value = gtk_widget_get_sensitive(GTK_WIDGET(widget)) ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget)) : NULL;
1589 *failed_widget = widget;
1595 }
else if (GTK_IS_TOGGLE_BUTTON(widget)) {
1596 gboolean value = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
1601 *failed_widget = widget;
1617 GtkWidget ** failed_widget)
1619 TRACE_CALL(__func__);
1621 gchar *custom_resolution;
1639 if (priv->resolution_auto_radio) {
1640 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->resolution_auto_radio))) {
1644 }
else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->resolution_iws_radio))) {
1655 g_free(custom_resolution);
1662 if (priv->keymap_combo)
1673 TRACE_CALL(__func__);
1677 GtkWidget *failed_widget = NULL;
1680 g_warning(_(
"Couldn't validate user input. %s"), err->message);
1703 dialog = gtk_message_dialog_new(GTK_WINDOW(gfe), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO,
1704 GTK_BUTTONS_OK, _(
"Default settings saved."));
1705 gtk_dialog_run(GTK_DIALOG(dialog));
1706 gtk_widget_destroy(dialog);
1711 TRACE_CALL(__func__);
1713 GtkWidget *failed_widget = NULL;
1716 g_warning(_(
"Couldn't validate user input. %s"), err->message);
1726 gtk_widget_destroy(GTK_WIDGET(gfe));
1731 TRACE_CALL(__func__);
1734 GtkWidget *failed_widget = NULL;
1737 g_warning(_(
"Couldn't validate user input. %s"), err->message);
1746 gtk_widget_destroy(GTK_WIDGET(gfe));
1747 gf->prevent_saving = TRUE;
1753 TRACE_CALL(__func__);
1757 GtkWidget *failed_widget = NULL;
1760 g_warning(_(
"Couldn't validate user input. %s"), err->message);
1774 gtk_widget_destroy(GTK_WIDGET(gfe));
1780 TRACE_CALL(__func__);
1781 gtk_widget_destroy(GTK_WIDGET(gfe));
1786 TRACE_CALL(__func__);
1794 gtk_window_set_title(GTK_WINDOW(gfe), _(
"Remote Connection Profile"));
1796 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"_Cancel")), GTK_RESPONSE_CANCEL);
1800 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"Save as Default")), GTK_RESPONSE_OK);
1801 gtk_widget_set_tooltip_text(GTK_WIDGET(widget), _(
"Use the current settings as the default for all new connection profiles"));
1804 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"_Save")), GTK_RESPONSE_APPLY);
1806 gtk_widget_set_sensitive(widget, FALSE);
1807 priv->save_button = widget;
1809 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"Connect")), GTK_RESPONSE_ACCEPT);
1812 widget = gtk_dialog_add_button(GTK_DIALOG(gfe), (_(
"_Save and Connect")), GTK_RESPONSE_OK);
1813 gtk_widget_set_can_default(widget, TRUE);
1816 gtk_dialog_set_default_response(GTK_DIALOG(gfe), GTK_RESPONSE_OK);
1817 gtk_window_set_default_size(GTK_WINDOW(gfe), 800, 600);
1822 priv->setting_widgets = g_hash_table_new(g_str_hash, g_str_equal);
1829 TRACE_CALL(__func__);
1831 GtkListStore *store;
1835 store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(gfe->
priv->protocol_combo)));
1837 first = !gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
1839 gtk_list_store_append(store, &iter);
1840 gtk_list_store_set(store, &iter, 0, protocol, 1, g_dgettext(plugin->
domain, plugin->
description), 2,
1844 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(gfe->
priv->protocol_combo), &iter);
1851 TRACE_CALL(__func__);
1855 gtk_widget_set_sensitive(priv->group_combo, TRUE);
1856 gtk_widget_set_sensitive(priv->save_button, TRUE);
1861 TRACE_CALL(__func__);
1878 TRACE_CALL(__func__);
1892 TRACE_CALL(__func__);
1901 gfe = REMMINA_FILE_EDITOR(g_object_new(REMMINA_TYPE_FILE_EDITOR, NULL));
1903 priv->remmina_file = remminafile;
1906 gtk_dialog_set_response_sensitive(GTK_DIALOG(gfe), GTK_RESPONSE_APPLY, FALSE);
1909 grid = gtk_grid_new();
1910 gtk_widget_show(grid);
1911 gtk_grid_set_row_spacing(GTK_GRID(grid), 4);
1912 gtk_grid_set_column_spacing(GTK_GRID(grid), 8);
1913 gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
1914 gtk_container_set_border_width(GTK_CONTAINER(grid), 8);
1915 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(gfe))), grid, FALSE, FALSE, 2);
1922 widget = gtk_label_new(_(
"Name"));
1923 gtk_widget_show(widget);
1924 gtk_widget_set_valign(widget, GTK_ALIGN_START);
1925 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1926 gtk_grid_attach(GTK_GRID(grid), widget, 0, 3, 2, 1);
1927 gtk_grid_set_column_spacing(GTK_GRID(grid), 10);
1929 widget = gtk_entry_new();
1930 gtk_widget_show(widget);
1931 gtk_grid_attach(GTK_GRID(grid), widget, 1, 3, 3, 1);
1932 gtk_entry_set_max_length(GTK_ENTRY(widget), 100);
1933 priv->name_entry = widget;
1935 if (!profile_file_exists) {
1936 gtk_entry_set_text(GTK_ENTRY(widget), _(
"Quick Connect"));
1937 #if GTK_CHECK_VERSION(3, 16, 0) 1938 gtk_entry_grab_focus_without_selecting(GTK_ENTRY(widget));
1943 gtk_entry_set_text(GTK_ENTRY(widget), cs ? cs :
"");
1947 widget = gtk_label_new(_(
"Group"));
1948 gtk_widget_show(widget);
1949 gtk_widget_set_valign(widget, GTK_ALIGN_START);
1950 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1951 gtk_grid_attach(GTK_GRID(grid), widget, 0, 6, 2, 1);
1956 gtk_widget_show(priv->group_combo);
1957 gtk_grid_attach(GTK_GRID(grid), priv->group_combo, 1, 6, 3, 1);
1958 gtk_widget_set_sensitive(priv->group_combo, FALSE);
1960 s = g_strdup_printf(_(
"Use '%s' as subgroup delimiter"),
"/");
1961 gtk_widget_set_tooltip_text(priv->group_combo, s);
1965 widget = gtk_label_new(_(
"Labels"));
1966 gtk_widget_show(widget);
1967 gtk_widget_set_valign(widget, GTK_ALIGN_START);
1968 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1969 gtk_grid_attach(GTK_GRID(grid), widget, 0, 9, 2, 1);
1970 gtk_grid_set_column_spacing(GTK_GRID(grid), 10);
1972 widget = gtk_entry_new();
1973 gtk_widget_show(widget);
1974 gtk_grid_attach(GTK_GRID(grid), widget, 1, 9, 3, 1);
1975 gtk_entry_set_max_length(GTK_ENTRY(widget), 255);
1976 priv->labels_entry = widget;
1978 if (!profile_file_exists) {
1979 gtk_widget_set_tooltip_text(widget, _(
"Label1,Label2"));
1980 #if GTK_CHECK_VERSION(3, 16, 0) 1981 gtk_entry_grab_focus_without_selecting(GTK_ENTRY(widget));
1986 gtk_entry_set_text(GTK_ENTRY(widget), cs ? cs :
"");
1990 widget = gtk_label_new(_(
"Protocol"));
1991 gtk_widget_show(widget);
1992 gtk_widget_set_valign(widget, GTK_ALIGN_START);
1993 gtk_widget_set_halign(widget, GTK_ALIGN_START);
1994 gtk_grid_attach(GTK_GRID(grid), widget, 0, 12, 2, 1);
1997 gtk_widget_show(widget);
1998 gtk_grid_attach(GTK_GRID(grid), widget, 1, 12, 3, 1);
1999 priv->protocol_combo = widget;
2004 widget = gtk_event_box_new();
2005 gtk_widget_show(widget);
2006 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(gfe))), widget, TRUE, TRUE, 2);
2007 priv->config_box = widget;
2009 priv->config_container = NULL;
2010 priv->config_scrollable = NULL;
2016 return GTK_WIDGET(gfe);
2021 TRACE_CALL(__func__);
2027 TRACE_CALL(__func__);
2041 TRACE_CALL(__func__);
2050 dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
2051 _(
"Could not find the file “%s”."), filename);
2052 gtk_dialog_run(GTK_DIALOG(dialog));
2053 gtk_widget_destroy(dialog);
2060 TRACE_CALL(__func__);
2069 GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
2070 _(
"Could not find the file “%s”."), filename);
2071 gtk_dialog_run(GTK_DIALOG(dialog));
2072 gtk_widget_destroy(dialog);
void remmina_public_create_group(GtkGrid *grid, const gchar *group, gint row, gint rows, gint cols)
const gchar * remmina_plugin_manager_get_canonical_setting_name(const RemminaProtocolSetting *setting)
GtkDialog * remmina_string_list_new(gboolean two_columns, const gchar *fields_separator)
@@ -95,30 +95,30 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)
gchar ** remmina_pref_keymap_groups(void)
-
static void remmina_file_editor_create_resolution(RemminaFileEditor *gfe, const RemminaProtocolSetting *setting, GtkWidget *grid, gint row)
+
static void remmina_file_editor_create_resolution(RemminaFileEditor *gfe, const RemminaProtocolSetting *setting, GtkWidget *grid, gint row)
-
static GtkWidget * remmina_file_editor_create_combo(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *list, const gchar *value, gchar *setting_name)
+
static GtkWidget * remmina_file_editor_create_combo(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *list, const gchar *value, gchar *setting_name)
RemminaFile * remmina_file_dup(RemminaFile *remminafile)
GtkWidget * remmina_public_create_combo_entry(const gchar *text, const gchar *def, gboolean descending)
-
static void remmina_file_editor_on_connect(GtkWidget *button, RemminaFileEditor *gfe)
+
static void remmina_file_editor_on_connect(GtkWidget *button, RemminaFileEditor *gfe)
gchar * remmina_pref_file
-
GtkWindow * remmina_main_get_window()
+
GtkWindow * remmina_main_get_window()
void remmina_string_list_set_validation_func(RemminaStringListValidationFunc func)
G_DEFINE_TYPE(RemminaFileEditor, remmina_file_editor, GTK_TYPE_DIALOG)
-
static GtkWidget * remmina_file_editor_create_int(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gint value, gint left, gint right, gchar *setting_name)
+
static GtkWidget * remmina_file_editor_create_int(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gint value, gint left, gint right, gchar *setting_name)
static void remmina_file_editor_ssh_tunnel_enabled_check_on_toggled(GtkToggleButton *togglebutton, RemminaFileEditor *gfe, RemminaProtocolSSHSetting ssh_setting)
const gchar * remmina_file_get_filename(RemminaFile *remminafile)
-
static GtkWidget * remmina_file_editor_create_double(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, gdouble value, gint left, gint right, gchar *setting_name)
-
static GtkWidget * remmina_file_editor_create_select(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gpointer *list, const gchar *value, gchar *setting_name)
+
static GtkWidget * remmina_file_editor_create_double(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, gdouble value, gint left, gint right, gchar *setting_name)
+
static GtkWidget * remmina_file_editor_create_select(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gpointer *list, const gchar *value, gchar *setting_name)
typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile
-
static void remmina_file_editor_protocol_combo_on_changed(GtkComboBox *combo, RemminaFileEditor *gfe)
+
static void remmina_file_editor_protocol_combo_on_changed(GtkComboBox *combo, RemminaFileEditor *gfe)
void remmina_plugin_manager_for_each_plugin(RemminaPluginType type, RemminaPluginFunc func, gpointer data)
@@ -131,12 +131,11 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
gchar * remmina_pref_get_recent(const gchar *protocol)
-
static void remmina_file_toggle_password_view(GtkWidget *widget, gpointer data)
static void remmina_file_editor_create_server(RemminaFileEditor *gfe, const RemminaProtocolSetting *setting, GtkWidget *grid, gint row)
void remmina_icon_populate_menu(void)
-
GtkWidget * remmina_file_editor_new_full(const gchar *server, const gchar *protocol)
-
static void remmina_file_editor_init(RemminaFileEditor *gfe)
+
GtkWidget * remmina_file_editor_new_full(const gchar *server, const gchar *protocol)
+
static void remmina_file_editor_init(RemminaFileEditor *gfe)
gdouble remmina_file_get_double(RemminaFile *remminafile, const gchar *setting, gfloat default_value)
void remmina_file_generate_filename(RemminaFile *remminafile)
Generate a new Remmina connection profile file name.
@@ -149,17 +148,17 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
RemminaProtocolWidgetResolutionMode
static void remmina_file_editor_show_validation_error_popup(RemminaFileEditor *gfe, GtkWidget *failed_widget, GError *err)
Shows a tooltip-like window which tells the user what they did wrong to trigger the validation functi...
GtkWidget * remmina_public_create_combo_map(const gpointer *key_value_list, const gchar *def, gboolean use_icon, const gchar *domain)
-
static GtkWidget * remmina_file_editor_create_chooser(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gint type, gchar *setting_name)
Create checkbox + gtk_file_chooser for open files and select folders.
+
static GtkWidget * remmina_file_editor_create_chooser(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gint type, gchar *setting_name)
Create checkbox + gtk_file_chooser for open files and select folders.
-
static GtkWidget * remmina_file_editor_create_password(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gchar *setting_name)
+
static GtkWidget * remmina_file_editor_create_password(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gchar *setting_name)
void remmina_file_set_filename(RemminaFile *remminafile, const gchar *filename)
-
static gpointer ssh_tunnel_auth_list[]
+
static gpointer ssh_tunnel_auth_list[]
-
static GError * remmina_file_editor_update_settings(RemminaFileEditor *gfe, GtkWidget **failed_widget)
+
static GError * remmina_file_editor_update_settings(RemminaFileEditor *gfe, GtkWidget **failed_widget)
-
void remmina_file_editor_check_profile(RemminaFileEditor *gfe)
+
void remmina_file_editor_check_profile(RemminaFileEditor *gfe)
GtkWidget * remmina_public_create_combo_text_d(const gchar *text, const gchar *def, const gchar *empty_choice)
struct _RemminaFileEditorPriv RemminaFileEditorPriv
static GtkWidget * remmina_file_editor_create_notebook_tab(RemminaFileEditor *gfe, const gchar *stock_id, const gchar *label, gint rows, gint cols)
@@ -170,25 +169,24 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)
void remmina_file_delete(const gchar *filename)
-
static void remmina_file_editor_entry_on_changed(GtkEditable *editable, RemminaFileEditor *gfe)
-
static GtkWidget * remmina_file_editor_create_text2(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gint left, gint right, gchar *setting_name)
+
static void remmina_file_editor_entry_on_changed(GtkEditable *editable, RemminaFileEditor *gfe)
+
static GtkWidget * remmina_file_editor_create_text2(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gint left, gint right, gchar *setting_name)
const RemminaProtocolSetting * basic_settings
-
static GtkWidget * remmina_file_editor_create_check(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint top, const gchar *label, gboolean value, gchar *setting_name)
-
static void remmina_file_editor_create_all_settings(RemminaFileEditor *gfe)
+
static GtkWidget * remmina_file_editor_create_check(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint top, const gchar *label, gboolean value, gchar *setting_name)
+
static void remmina_file_editor_create_all_settings(RemminaFileEditor *gfe)
static void remmina_file_editor_create_notebook_container(RemminaFileEditor *gfe)
-
GtkWidget * remmina_file_editor_new_from_file(RemminaFile *remminafile)
+
GtkWidget * remmina_file_editor_new_from_file(RemminaFile *remminafile)
-
gboolean remmina_pref_get_boolean(const gchar *key)
-
void remmina_file_editor_int_setting_filter(GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer data)
+
void remmina_file_editor_int_setting_filter(GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer data)
void remmina_string_list_set_text(const gchar *text, const gboolean clear_data)
-
GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)
+
GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)
-
static void remmina_file_editor_create_ssh_tunnel_tab(RemminaFileEditor *gfe, RemminaProtocolSSHSetting ssh_setting)
+
static void remmina_file_editor_create_ssh_tunnel_tab(RemminaFileEditor *gfe, RemminaProtocolSSHSetting ssh_setting)
RemminaProtocolSettingType type
@@ -197,55 +195,56 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
RemminaFile * remmina_file_new(void)
void remmina_string_list_set_titles(gchar *title1, gchar *title2)
-
static void remmina_file_editor_create_settings(RemminaFileEditor *gfe, GtkWidget *grid, const RemminaProtocolSetting *settings)
-
static void remmina_file_editor_on_save_connect(GtkWidget *button, RemminaFileEditor *gfe)
+
static void remmina_file_editor_create_settings(RemminaFileEditor *gfe, GtkWidget *grid, const RemminaProtocolSetting *settings)
+
static void remmina_file_editor_on_save_connect(GtkWidget *button, RemminaFileEditor *gfe)
void rcw_open_from_file(RemminaFile *remminafile)
-
void remmina_file_editor_file_save(RemminaFileEditor *gfe)
+
void remmina_file_editor_file_save(RemminaFileEditor *gfe)
gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)
-
GtkWidget * remmina_file_editor_new(void)
+
GtkWidget * remmina_file_editor_new(void)
static void remmina_file_editor_on_realize(GtkWidget *widget, gpointer user_data)
static void remmina_file_editor_button_on_toggled(GtkToggleButton *togglebutton, GtkWidget *widget)
-
static void remmina_file_editor_on_cancel(GtkWidget *button, RemminaFileEditor *gfe)
+
static void remmina_file_editor_on_cancel(GtkWidget *button, RemminaFileEditor *gfe)
RemminaPlugin * remmina_plugin_manager_get_plugin(RemminaPluginType type, const gchar *name)
-
static void remmina_file_editor_on_save(GtkWidget *button, RemminaFileEditor *gfe)
-
static void remmina_file_editor_on_default(GtkWidget *button, RemminaFileEditor *gfe)
+
static void remmina_file_editor_on_save(GtkWidget *button, RemminaFileEditor *gfe)
+
static void remmina_file_editor_on_default(GtkWidget *button, RemminaFileEditor *gfe)
-
void remmina_file_editor_double_setting_filter(GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer data)
+
void remmina_main_toggle_password_view(GtkWidget *widget, gpointer data)
+
void remmina_file_editor_double_setting_filter(GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer data)
gchar * remmina_file_manager_get_groups(void)
-
static GtkWidget * remmina_file_editor_create_text(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gchar *setting_name)
+
static GtkWidget * remmina_file_editor_create_text(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gchar *setting_name)
void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)
-
static void remmina_file_editor_save_behavior_tab(RemminaFileEditor *gfe)
-
static void remmina_file_editor_create_behavior_tab(RemminaFileEditor *gfe)
+
static void remmina_file_editor_save_behavior_tab(RemminaFileEditor *gfe)
+
static void remmina_file_editor_create_behavior_tab(RemminaFileEditor *gfe)
void remmina_file_save(RemminaFile *remminafile)
-
static void remmina_file_editor_browse_resolution(GtkWidget *button, RemminaFileEditor *gfe)
-
static gboolean remmina_file_editor_validate_settings(RemminaFileEditor *gfe, gchar *setting_name_to_validate, gconstpointer value, GError **err)
+
static void remmina_file_editor_browse_resolution(GtkWidget *button, RemminaFileEditor *gfe)
+
static gboolean remmina_file_editor_validate_settings(RemminaFileEditor *gfe, gchar *setting_name_to_validate, gconstpointer value, GError **err)
static void remmina_file_editor_ssh_tunnel_server_custom_radio_on_toggled(GtkToggleButton *togglebutton, RemminaFileEditor *gfe)
RemminaFile * remmina_file_copy(const gchar *filename)
RemminaFile * remmina_file_manager_load_file(const gchar *filename)
-
static gboolean remmina_file_editor_iterate_protocol(gchar *protocol, RemminaPlugin *plugin, gpointer data)
-
static GError * remmina_file_editor_update(RemminaFileEditor *gfe, GtkWidget **failed_widget)
+
static gboolean remmina_file_editor_iterate_protocol(gchar *protocol, RemminaPlugin *plugin, gpointer data)
+
static GError * remmina_file_editor_update(RemminaFileEditor *gfe, GtkWidget **failed_widget)
-
GtkWidget * remmina_file_editor_new_copy(const gchar *filename)
+
GtkWidget * remmina_file_editor_new_copy(const gchar *filename)
RemminaFileEditorPriv * priv
-
static GtkWidget * remmina_file_editor_create_textarea(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gchar *setting_name)
+
static GtkWidget * remmina_file_editor_create_textarea(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gchar *setting_name)
static void remmina_file_editor_browse_avahi(GtkWidget *button, RemminaFileEditor *gfe)
gint remmina_unlock_new(GtkWindow *parent)
void remmina_public_load_combo_text_d(GtkWidget *combo, const gchar *text, const gchar *def, const gchar *empty_choice)
-
static void remmina_file_editor_update_resolution(GtkWidget *widget, RemminaFileEditor *gfe)
+
static void remmina_file_editor_update_resolution(GtkWidget *widget, RemminaFileEditor *gfe)
N_("Unable to connect to VNC server")
static void remmina_file_editor_class_init(RemminaFileEditorClass *klass)
-
static void remmina_file_editor_save_ssh_tunnel_tab(RemminaFileEditor *gfe)
+
static void remmina_file_editor_save_ssh_tunnel_tab(RemminaFileEditor *gfe)
gchar * remmina_string_list_get_text(void)
diff --git a/public/remmina__file__editor_8h.html b/public/remmina__file__editor_8h.html
index 59b63986c..d2b18367f 100644
--- a/public/remmina__file__editor_8h.html
+++ b/public/remmina__file__editor_8h.html
@@ -190,7 +190,7 @@ Functions
@@ -210,7 +210,7 @@ Functions
@@ -248,7 +248,7 @@ Functions
@@ -268,7 +268,7 @@ Functions
@@ -288,7 +288,7 @@ Functions
@@ -308,7 +308,7 @@ Functions
@@ -338,7 +338,7 @@ Functions
diff --git a/public/remmina__file__editor_8h_source.html b/public/remmina__file__editor_8h_source.html
index 726670b8e..668a00208 100644
--- a/public/remmina__file__editor_8h_source.html
+++ b/public/remmina__file__editor_8h_source.html
@@ -89,19 +89,19 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8h_source.html',
Go to the documentation of this file. 40 #include <glib/gi18n.h> 47 #define REMMINA_TYPE_FILE_EDITOR (remmina_file_editor_get_type()) 48 #define REMMINA_FILE_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), REMMINA_TYPE_FILE_EDITOR, RemminaFileEditor)) 49 #define REMMINA_FILE_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), REMMINA_TYPE_FILE_EDITOR, RemminaFileEditorClass)) 50 #define REMMINA_IS_FILE_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), REMMINA_TYPE_FILE_EDITOR)) 51 #define REMMINA_IS_FILE_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), REMMINA_TYPE_FILE_EDITOR)) 52 #define REMMINA_FILE_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), REMMINA_TYPE_FILE_EDITOR, RemminaFileEditorClass)) typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile
struct _RemminaFileEditor RemminaFileEditor
-
void remmina_file_editor_check_profile(RemminaFileEditor *gfe)
+
void remmina_file_editor_check_profile(RemminaFileEditor *gfe)
GtkDialogClass parent_class
struct _RemminaFileEditorPriv RemminaFileEditorPriv
-
void remmina_file_editor_file_save(RemminaFileEditor *gfe)
-
GtkWidget * remmina_file_editor_new_copy(const gchar *filename)
+
void remmina_file_editor_file_save(RemminaFileEditor *gfe)
+
GtkWidget * remmina_file_editor_new_copy(const gchar *filename)
struct _RemminaFileEditorClass RemminaFileEditorClass
-
GtkWidget * remmina_file_editor_new(void)
+
GtkWidget * remmina_file_editor_new(void)
GType remmina_file_editor_get_type(void) G_GNUC_CONST
-
GtkWidget * remmina_file_editor_new_from_file(RemminaFile *remminafile)
-
GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)
-
GtkWidget * remmina_file_editor_new_full(const gchar *server, const gchar *protocol)
+
GtkWidget * remmina_file_editor_new_from_file(RemminaFile *remminafile)
+
GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)
+
GtkWidget * remmina_file_editor_new_full(const gchar *server, const gchar *protocol)
RemminaFileEditorPriv * priv
diff --git a/public/remmina__main_8c.html b/public/remmina__main_8c.html
index 64a3eef00..b8456c019 100644
--- a/public/remmina__main_8c.html
+++ b/public/remmina__main_8c.html
@@ -202,6 +202,8 @@ Functions
|
void | remmina_main_on_date_column_sort_clicked () |
|
+void | remmina_main_toggle_password_view (GtkWidget *widget, gpointer data) |
+ |
static void | remmina_main_import_file_list (GSList *files) |
|
static void | remmina_main_action_tools_import_on_response (GtkDialog *dialog, gint response_id, gpointer user_data) |
@@ -342,7 +344,7 @@ Variables
@@ -386,7 +388,7 @@ Variables
@@ -430,7 +432,7 @@ Variables
@@ -638,7 +640,7 @@ Variables
@@ -674,7 +676,7 @@ Variables
@@ -716,7 +718,7 @@ Variables
@@ -818,7 +820,7 @@ Variables
@@ -866,7 +868,7 @@ Variables
@@ -895,7 +897,7 @@ Variables
@@ -1170,7 +1172,7 @@ Variables
@@ -1226,7 +1228,7 @@ Variables
@@ -1262,7 +1264,7 @@ Variables
@@ -1298,7 +1300,7 @@ Variables
@@ -1406,7 +1408,7 @@ Variables
@@ -1514,7 +1516,7 @@ Variables
@@ -1802,7 +1804,7 @@ Variables
@@ -1838,7 +1840,7 @@ Variables
@@ -1874,7 +1876,7 @@ Variables
@@ -1910,7 +1912,7 @@ Variables
@@ -1946,7 +1948,7 @@ Variables
@@ -1982,7 +1984,7 @@ Variables
@@ -2018,7 +2020,7 @@ Variables
@@ -2054,7 +2056,7 @@ Variables
@@ -2090,7 +2092,7 @@ Variables
@@ -2233,7 +2235,7 @@ Variables
@@ -2263,7 +2265,7 @@ Variables
@@ -2318,7 +2320,7 @@ Variables
@@ -2348,7 +2350,7 @@ Variables
@@ -2378,7 +2380,7 @@ Variables
@@ -2420,7 +2422,7 @@ Variables
@@ -2448,7 +2450,7 @@ Variables
@@ -2478,7 +2480,7 @@ Variables
@@ -2786,7 +2788,7 @@ Variables
@@ -2833,7 +2835,37 @@ Variables
+
+
+◆ remmina_main_toggle_password_view()
+
+
+
+
+
+ void remmina_main_toggle_password_view |
+ ( |
+ GtkWidget * |
+ widget, |
+
+
+ |
+ |
+ gpointer |
+ data |
+
+
+ |
+ ) |
+ | |
+
+
+
@@ -2903,7 +2935,7 @@ Variables
@@ -2927,18 +2959,18 @@ Variables
-
Initial value:= {
}
void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)
+
Initial value:= {
}
void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)
Definition at line 96 of file remmina_main.c.
@@ -2964,17 +2996,17 @@ Variables
Initial value:= {
}
void remmina_main_on_action_connection_connect(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_delete_multiple(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_new(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)
Definition at line 111 of file remmina_main.c.
diff --git a/public/remmina__main_8c.js b/public/remmina__main_8c.js
index 51814edf0..f464536f7 100644
--- a/public/remmina__main_8c.js
+++ b/public/remmina__main_8c.js
@@ -85,6 +85,7 @@ var remmina__main_8c =
[ "remmina_main_show_dialog", "remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589", null ],
[ "remmina_main_show_snap_welcome", "remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5", null ],
[ "remmina_main_show_warning_dialog", "remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7", null ],
+ [ "remmina_main_toggle_password_view", "remmina__main_8c.html#aac3fe305e456dfa7bb55aa2f057e8cb0", null ],
[ "remmina_main_tree_row_activated", "remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c", null ],
[ "remmina_main_update_file_datetime", "remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a", null ],
[ "app_actions", "remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8", null ],
diff --git a/public/remmina__main_8c_source.html b/public/remmina__main_8c_source.html
index 0de01fd5a..b32c8950d 100644
--- a/public/remmina__main_8c_source.html
+++ b/public/remmina__main_8c_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
remmina_main.c
-
Go to the documentation of this file. 42 #include <gio/gdesktopappinfo.h> 44 #include <gdk/gdkkeysyms.h> 45 #include <glib/gi18n.h> 71 #define RM_GET_OBJECT(object_name) gtk_builder_get_object(remminamain->builder, object_name) 88 "x-scheme-handler/rdp",
89 "x-scheme-handler/spice",
90 "x-scheme-handler/vnc",
91 "x-scheme-handler/remmina",
92 "application/x-remmina",
128 {
"text/uri-list", 0, 1 }
133 "RDP",
"VNC",
"SSH",
"NX",
"SPICE",
"X2GO" 141 TRACE_CALL(__func__);
142 if ((gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(remminamain->
window))) & GDK_WINDOW_STATE_MAXIMIZED) == 0) {
152 TRACE_CALL(__func__);
166 TRACE_CALL(__func__);
182 TRACE_CALL(__func__);
183 if (!remminamain || !remminamain->
window)
195 TRACE_CALL(__func__);
199 gtk_widget_destroy(GTK_WIDGET(remminamain->
window));
201 g_object_unref(remminamain->
builder);
209 g_free(remminamain->
priv);
220 TRACE_CALL(__func__);
227 TRACE_CALL(__func__);
237 TRACE_CALL(__func__);
242 return G_SOURCE_REMOVE;
250 TRACE_CALL(__func__);
254 remminamain->
window = NULL;
263 TRACE_CALL(__func__);
274 GtkBuilder *dlgbuilder = NULL;
278 static gboolean shown_once = FALSE;
279 gboolean need_snap_interface_connections = FALSE;
288 g_print(
"Remmina is compiled as a SNAP package.\n");
290 if (remmina_secret_plugin == NULL) {
291 g_print(
" but we can’t find the secret plugin inside the SNAP.\n");
292 need_snap_interface_connections = TRUE;
295 g_print(
" but we can’t access a secret service. Secret service or SNAP interface connection is missing.\n");
296 need_snap_interface_connections = TRUE;
302 dsa = GTK_WIDGET(gtk_builder_get_object(dlgbuilder,
"dontshowagain"));
305 dlg = GTK_WIDGET(gtk_builder_get_object(dlgbuilder,
"SnapInfoDlg"));
307 gtk_window_set_transient_for(GTK_WINDOW(dlg), parent);
308 gtk_builder_connect_signals(dlgbuilder, NULL);
309 result = gtk_dialog_run(GTK_DIALOG(dlg));
314 gtk_widget_destroy(dlg);
315 g_object_unref(dlgbuilder);
323 gboolean path_currently_selected, gpointer user_data)
325 TRACE_CALL(__func__);
330 if (path_currently_selected)
333 if (!gtk_tree_model_get_iter(model, &iter, path))
338 gtk_tree_model_get(model, &iter,
343 context_id = gtk_statusbar_get_context_id(remminamain->
statusbar_main,
"status");
357 TRACE_CALL(__func__);
361 store = GTK_LIST_STORE(user_data);
365 gtk_list_store_append(store, &iter);
366 gtk_list_store_set(store, &iter,
382 TRACE_CALL(__func__);
390 iter = g_new0(GtkTreeIter, 1);
391 gtk_tree_store_append(store, iter, parent);
392 gtk_tree_store_set(store, iter,
401 for (child = g_node_first_child(node); child; child = g_node_next_sibling(child))
409 TRACE_CALL(__func__);
419 TRACE_CALL(__func__);
422 gchar *group, *filename;
430 if (filename == NULL) {
432 path = gtk_tree_model_get_path(tree, iter);
434 gtk_tree_path_free(path);
436 if (gtk_tree_model_iter_children(tree, &child, iter))
442 ret = gtk_tree_model_iter_next(tree, iter);
448 TRACE_CALL(__func__);
457 TRACE_CALL(__func__);
459 gchar *group, *filename;
466 match = (filename == NULL && g_strcmp0(group, match_group) == 0);
471 if (gtk_tree_model_iter_children(tree, &child, iter)) {
474 memcpy(iter, &child,
sizeof(GtkTreeIter));
478 ret = gtk_tree_model_iter_next(tree, iter);
485 TRACE_CALL(__func__);
486 GtkTreeIter iter, child;
489 gchar *datetime = NULL;
491 store = GTK_TREE_STORE(user_data);
494 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter))
500 gtk_tree_store_append(store, &child, (found ? &iter : NULL));
501 gtk_tree_store_set(store, &child,
517 TRACE_CALL(__func__);
521 gtk_tree_sortable_get_sort_column_id(sortable, &columnid, &order);
529 TRACE_CALL(__func__);
531 gchar *protocol, *name, *labels, *group, *server, *plugin, *date, *s;
532 gboolean result = TRUE;
535 if (text && text[0]) {
536 gtk_tree_model_get(model, iter,
545 if (g_strcmp0(protocol,
"folder-symbolic") != 0) {
546 s = g_ascii_strdown(name ? name :
"", -1);
549 s = g_ascii_strdown(group ? group :
"", -1);
552 s = g_ascii_strdown(server ? server :
"", -1);
555 s = g_ascii_strdown(plugin ? plugin :
"", -1);
558 s = g_ascii_strdown(date ? date :
"", -1);
561 result = (strstr(name, text) || strstr(group, text) || strstr(server, text) || strstr(plugin, text) || strstr(date, text));
565 s = g_ascii_strdown(labels ? labels :
"", -1);
569 if (strlen(labels) > 0) {
570 gboolean labels_result = TRUE;
571 gchar **labels_array = g_strsplit(labels,
",", -1);
572 gchar **text_array = g_strsplit(text,
",", -1);
574 for (
int t = 0; (NULL != text_array[t]); t++) {
575 if (0 == strlen(text_array[t])) {
579 gboolean text_result = FALSE;
581 for (
int l = 0; (NULL != labels_array[l]); l++) {
582 if (0 == strlen(labels_array[l])) {
586 text_result = (text_result || strstr(labels_array[l], text_array[t]));
593 labels_result = (labels_result && text_result);
595 if (!labels_result) {
600 result = (result || labels_result);
602 g_strfreev(labels_array);
603 g_strfreev(text_array);
620 TRACE_CALL(__func__);
623 gchar *item_filename;
631 cmp = g_strcmp0(item_filename, filename);
632 g_free(item_filename);
634 gtk_tree_selection_select_iter(gtk_tree_view_get_selection(remminamain->
tree_files_list),
637 gtk_tree_view_scroll_to_cell(remminamain->
tree_files_list, path, NULL, TRUE, 0.5, 0.0);
638 gtk_tree_path_free(path);
648 TRACE_CALL(__func__);
653 gboolean always_show_notes;
654 char *save_selected_filename;
655 GtkTreeModel *newmodel;
656 const gchar *neticon;
657 const gchar *connection_tooltip;
676 switch (view_file_mode) {
679 newmodel = GTK_TREE_MODEL(gtk_tree_store_new(9, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
691 newmodel = GTK_TREE_MODEL(gtk_list_store_new(9, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
701 if (!always_show_notes){
716 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(remminamain->
priv->
file_model_sort),
724 if (save_selected_filename) {
726 g_free(save_selected_filename);
732 gtk_widget_set_tooltip_text(GTK_WIDGET(label),
733 _(
"The latest successful connection attempt, or a pre-computed date"));
735 g_snprintf(buf,
sizeof(buf), ngettext(
"Total %i item.",
"Total %i items.", items_count), items_count);
736 context_id = gtk_statusbar_get_context_id(remminamain->
statusbar_main,
"status");
742 neticon = g_strdup(
"network-transmit-receive-symbolic");
743 connection_tooltip = g_strdup(_(
"Network status: fully online"));
745 neticon = g_strdup(
"network-offline-symbolic");
746 connection_tooltip = g_strdup(_(
"Network status: offline"));
751 GIcon *icon = g_themed_icon_new (neticon);
752 remminamain->
network_icon = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_BUTTON);
753 gtk_widget_set_tooltip_text (remminamain->
network_icon, connection_tooltip);
755 g_object_unref (icon);
764 TRACE_CALL(__func__);
770 TRACE_CALL(__func__);
779 if (remminafile == NULL)
798 TRACE_CALL(__func__);
807 TRACE_CALL(__func__);
816 TRACE_CALL(__func__);
819 const gchar *username;
822 const gchar *gatewayusername;
823 const gchar *gatewaydomain;
825 username = domain = group = gatewayusername = gatewaydomain =
"";
836 if (remminafile != NULL) {
847 if (remminafile != NULL)
853 TRACE_CALL(__func__);
865 gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain->
window);
866 gtk_widget_show(widget);
872 TRACE_CALL(__func__);
873 if (event->keyval == GDK_KEY_Escape) {
875 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(
"search_toggle")), FALSE);
883 TRACE_CALL(__func__);
884 if (gtk_tree_view_row_expanded(tree, path))
885 gtk_tree_view_collapse_row(tree, path);
887 gtk_tree_view_expand_row(tree, path, FALSE);
912 TRACE_CALL(__func__);
938 gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain->
window);
939 gtk_widget_show(widget);
948 TRACE_CALL(__func__);
969 gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain->
window);
970 gtk_widget_show(widget);
979 TRACE_CALL(__func__);
998 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
1000 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) {
1003 g_free(delfilename), delfilename = NULL;
1007 gtk_widget_destroy(dialog);
1013 TRACE_CALL(__func__);
1015 GtkTreeSelection *sel = gtk_tree_view_get_selection(remminamain->
tree_files_list);
1016 GtkTreeModel *model = gtk_tree_view_get_model(remminamain->
tree_files_list);
1017 GList *list = gtk_tree_selection_get_selected_rows(sel, &model);
1018 gchar *file_to_delete;
1020 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
1021 _(
"Are you sure you want to delete the selected files?"));
1024 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) {
1026 GtkTreePath *path = list->data;
1029 if (!gtk_tree_model_get_iter(model, &iter, path)) {
1030 GtkWidget *dialog_warning;
1031 dialog_warning = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
1032 _(
"Failed to delete files!"));
1033 gtk_dialog_run(GTK_DIALOG(dialog_warning));
1034 gtk_widget_destroy(dialog_warning);
1035 gtk_widget_destroy(dialog);
1040 gtk_tree_model_get(model, &iter,
1056 gchar *delfilename = g_strdup(file_to_delete);
1058 g_free(delfilename), delfilename = NULL;
1061 list = g_list_next(list);
1065 gtk_widget_destroy(dialog);
1071 TRACE_CALL(__func__);
1072 GVariant *v = g_variant_new(
"i", 0);
1079 GtkSettings *settings;
1080 settings = gtk_settings_get_default();
1083 gtk_toggle_button_set_active(remminamain->
search_toggle, FALSE);
1086 gtk_toggle_button_set_active(remminamain->
search_toggle, TRUE);
1093 TRACE_CALL(__func__);
1095 REMMINA_DEBUG(
"Opening the preferences");
1099 REMMINA_DEBUG(
"Parameter passed to preferences of type %s", g_variant_get_type_string(param));
1100 tab_num = g_variant_get_int32(param);
1101 REMMINA_DEBUG(
"We got a parameter for the preferences: %d", tab_num);
1112 gtk_widget_show_all(widget);
1117 TRACE_CALL(__func__);
1119 g_autoptr(GError) error = NULL;
1120 GDesktopAppInfo *desktop_info;
1121 GAppInfo *info = NULL;
1122 g_autofree gchar *
id = g_strconcat(REMMINA_APP_ID,
".desktop", NULL);
1125 desktop_info = g_desktop_app_info_new(
id);
1129 info = G_APP_INFO(desktop_info);
1133 g_warning(
"Failed to set '%s' as the default application for secondary content type '%s': %s",
1136 g_debug(
"Set '%s' as the default application for '%s'",
1137 g_app_info_get_name(info),
1146 TRACE_CALL(__func__);
1147 g_debug(
"Quit intercept");
1163 TRACE_CALL(__func__);
1172 err = g_string_new(NULL);
1174 for (element = files; element; element = element->next) {
1175 path = (gchar *)element->data;
1182 g_string_append(err, path);
1183 g_string_append_c(err,
'\n');
1191 g_slist_free(files);
1194 dlg = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
1195 _(
"Unable to import:\n%s"), err->str);
1196 g_signal_connect(G_OBJECT(dlg),
"response", G_CALLBACK(gtk_widget_destroy), NULL);
1197 gtk_widget_show(dlg);
1199 g_string_free(err, TRUE);
1206 TRACE_CALL(__func__);
1209 if (response_id == GTK_RESPONSE_ACCEPT) {
1210 files = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
1213 gtk_widget_destroy(GTK_WIDGET(dialog));
1218 TRACE_CALL(__func__);
1221 dialog = gtk_file_chooser_dialog_new(_(
"Import"), remminamain->
window, GTK_FILE_CHOOSER_ACTION_OPEN,
"Import",
1222 GTK_RESPONSE_ACCEPT, NULL);
1223 gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);
1225 gtk_widget_show(dialog);
1230 TRACE_CALL(__func__);
1239 if (remminafile == NULL)
1244 GTK_FILE_CHOOSER_ACTION_SAVE, _(
"_Save"), GTK_RESPONSE_ACCEPT, NULL);
1245 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
1246 plugin->
export_func(plugin, remminafile, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)));
1247 gtk_widget_destroy(dialog);
1249 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
1250 _(
"This protocol does not support exporting."));
1251 g_signal_connect(G_OBJECT(dialog),
"response", G_CALLBACK(gtk_widget_destroy), NULL);
1252 gtk_widget_show(dialog);
1259 TRACE_CALL(__func__);
1265 TRACE_CALL(__func__);
1266 GtkSettings *settings;
1268 settings = gtk_settings_get_default();
1281 TRACE_CALL(__func__);
1282 g_app_info_launch_default_for_uri(
"https://www.remmina.org", NULL, NULL);
1287 TRACE_CALL(__func__);
1288 g_app_info_launch_default_for_uri(
"https://gitlab.com/Remmina/Remmina/wikis/home", NULL, NULL);
1293 TRACE_CALL(__func__);
1294 g_app_info_launch_default_for_uri(
"https://remmina.org/community", NULL, NULL);
1299 TRACE_CALL(__func__);
1300 g_app_info_launch_default_for_uri(
"https://www.remmina.org/donations", NULL, NULL);
1305 TRACE_CALL(__func__);
1311 TRACE_CALL(__func__);
1320 if (!isspace((
unsigned char)*s))
1329 TRACE_CALL(__func__);
1332 gchar *server_trimmed;
1346 if (g_hostname_to_ascii(server) == NULL)
1352 if (g_strrstr(server,
"/") != NULL)
1360 server_trimmed = g_strdup(server);
1361 g_strstrip(server_trimmed);
1362 gchar **strings = g_strsplit(server_trimmed,
":", 2);
1364 if (strings[0] != NULL)
1365 if (g_hostname_is_ip_address(strings[0]))
1366 g_stpcpy(server, server_trimmed);
1373 g_free(server_trimmed);
1383 TRACE_CALL(__func__);
1398 TRACE_CALL(__func__);
1404 TRACE_CALL(__func__);
1405 REMMINA_DEBUG(
"Search toggle triggered");
1407 gboolean toggle_status = gtk_toggle_button_get_active(remminamain->
search_toggle);
1409 gtk_search_bar_set_search_mode(remminamain->
search_bar, toggle_status);
1410 if (toggle_status) {
1411 REMMINA_DEBUG(
"Search toggle is active");
1414 REMMINA_DEBUG(
"Search toggle is not active, focus is tree_files_list");
1421 TRACE_CALL(__func__);
1422 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remminamain->
search_toggle), TRUE);
1427 TRACE_CALL(__func__);
1434 TRACE_CALL(__func__);
1452 TRACE_CALL(__func__);
1453 if (event->button == MOUSE_BUTTON_RIGHT) {
1455 #if GTK_CHECK_VERSION(3, 22, 0) 1457 if (gtk_tree_selection_count_selected_rows(gtk_tree_view_get_selection(remminamain->
tree_files_list)) > 1) {
1459 return GDK_EVENT_STOP;
1462 gtk_menu_popup_at_pointer(GTK_MENU(remminamain->
menu_popup), (GdkEvent *)event);
1465 gtk_menu_popup(remminamain->
menu_popup, NULL, NULL, NULL, NULL, event->button, event->time);
1475 TRACE_CALL(__func__);
1476 if (event->keyval == GDK_KEY_Menu) {
1477 #if GTK_CHECK_VERSION(3, 22, 0) 1478 gtk_menu_popup_at_widget(GTK_MENU(remminamain->
menu_popup), widget,
1479 GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER,
1482 gtk_menu_popup(remminamain->
menu_popup, NULL, NULL, NULL, NULL, 0, event->time);
1490 TRACE_CALL(__func__);
1491 if (icon_pos == GTK_ENTRY_ICON_SECONDARY)
1492 gtk_entry_set_text(entry,
"");
1497 TRACE_CALL(__func__);
1516 GtkSelectionData *data, guint info, guint time, gpointer user_data)
1518 TRACE_CALL(__func__);
1520 GSList *files = NULL;
1523 uris = g_uri_list_extract_uris((
const gchar *)gtk_selection_data_get_data(data));
1524 for (i = 0; uris[i]; i++) {
1525 if (strncmp(uris[i],
"file://", 7) != 0)
1527 files = g_slist_append(files, g_strdup(uris[i] + 7));
1536 TRACE_CALL(__func__);
1538 GtkWidget *menuitem = gtk_menu_item_new_with_label(plugin->
description);
1540 gtk_widget_show(menuitem);
1541 gtk_menu_shell_append(GTK_MENU_SHELL(remminamain->
menu_popup_full), menuitem);
1542 g_signal_connect(G_OBJECT(menuitem),
"activate", G_CALLBACK(tool_plugin->
exec_func), tool_plugin);
1548 TRACE_CALL(__func__);
1555 TRACE_CALL(__func__);
1556 int i, qcp_idx, qcp_actidx;
1558 GtkSettings *settings;
1560 REMMINA_DEBUG(
"Initializing the Remmina main window");
1562 settings = gtk_settings_get_default();
1565 REMMINA_DEBUG (
"Initializing monitor");
1570 gtk_window_set_title(remminamain->
window, _(
"Remmina Remote Desktop Client"));
1572 gtk_window_set_title(remminamain->
window, _(
"Remmina Kiosk"));
1576 gtk_window_maximize(remminamain->
window);
1580 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(
"search_toggle")), FALSE);
1586 qcp_idx = qcp_actidx = 0;
1592 qcp_actidx = qcp_idx;
1603 gtk_tree_selection_set_select_function(
1620 g_object_set_data(G_OBJECT(remminamain->
window),
"tag",
"remmina-main-window");
1627 TRACE_CALL(__func__);
1636 TRACE_CALL(__func__);
1637 GSimpleActionGroup *actions;
1638 GtkAccelGroup *accel_group = NULL;
1644 remminamain->
window = GTK_WINDOW(RM_GET_OBJECT(
"RemminaMain"));
1646 gtk_window_set_position(remminamain->
window, GTK_WIN_POS_CENTER_ALWAYS);
1647 gtk_window_set_default_size(remminamain->
window, 800, 400);
1648 gtk_window_set_resizable(remminamain->
window, FALSE);
1651 remminamain->
button_new = GTK_BUTTON(RM_GET_OBJECT(
"button_new"));
1653 gtk_widget_set_sensitive(GTK_WIDGET(remminamain->
button_new), FALSE);
1655 remminamain->
search_toggle = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(
"search_toggle"));
1656 remminamain->
search_bar = GTK_SEARCH_BAR(RM_GET_OBJECT(
"search_bar"));
1658 remminamain->
view_toggle_button = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(
"view_toggle_button"));
1663 remminamain->
menu_popup = GTK_MENU(RM_GET_OBJECT(
"menu_popup"));
1664 remminamain->
menu_header_button = GTK_MENU_BUTTON(RM_GET_OBJECT(
"menu_header_button"));
1665 remminamain->
menu_popup_full = GTK_MENU(RM_GET_OBJECT(
"menu_popup_full"));
1668 gtk_widget_set_sensitive(GTK_WIDGET(remminamain->
menu_popup_full), FALSE);
1681 remminamain->
tree_files_list = GTK_TREE_VIEW(RM_GET_OBJECT(
"tree_files_list"));
1689 remminamain->
statusbar_main = GTK_STATUSBAR(RM_GET_OBJECT(
"statusbar_main"));
1694 actions = g_simple_action_group_new();
1696 gtk_widget_insert_action_group(GTK_WIDGET(remminamain->
window),
"app", G_ACTION_GROUP(actions));
1698 gtk_widget_insert_action_group(GTK_WIDGET(remminamain->
window),
"main", G_ACTION_GROUP(actions));
1699 g_object_unref(actions);
1701 accel_group = gtk_accel_group_new();
1702 gtk_window_add_accel_group(remminamain->
window, accel_group);
1703 gtk_accel_group_connect(accel_group, GDK_KEY_Q, GDK_CONTROL_MASK, 0,
1706 gtk_accel_group_connect(accel_group, GDK_KEY_P, GDK_CONTROL_MASK, 0,
1708 gtk_accel_group_connect(accel_group, GDK_KEY_F, GDK_CONTROL_MASK, 0,
1712 gtk_builder_connect_signals(remminamain->
builder, NULL);
1715 return GTK_WIDGET(remminamain->
window);
1722 if (!remminamain->
priv)
1726 remminamain->
window = GTK_WINDOW(RM_GET_OBJECT(
"RemminaMain"));
1727 return remminamain->
window;
1740 if (remminamain->
window) {
1741 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, msg, buttons,
"%s", message);
1742 gtk_dialog_run(GTK_DIALOG(dialog));
1743 gtk_widget_destroy(dialog);
1750 if (remminamain->
window) {
1751 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE,
1752 message, g_get_application_name());
1753 gtk_dialog_run(GTK_DIALOG(dialog));
1754 gtk_widget_destroy(dialog);
G_BEGIN_DECLS struct _RemminaGroupData RemminaGroupData
+
Go to the documentation of this file. 42 #include <gio/gdesktopappinfo.h> 44 #include <gdk/gdkkeysyms.h> 45 #include <glib/gi18n.h> 71 #define RM_GET_OBJECT(object_name) gtk_builder_get_object(remminamain->builder, object_name) 88 "x-scheme-handler/rdp",
89 "x-scheme-handler/spice",
90 "x-scheme-handler/vnc",
91 "x-scheme-handler/remmina",
92 "application/x-remmina",
128 {
"text/uri-list", 0, 1 }
133 "RDP",
"VNC",
"SSH",
"NX",
"SPICE",
"X2GO" 141 TRACE_CALL(__func__);
142 if ((gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(remminamain->
window))) & GDK_WINDOW_STATE_MAXIMIZED) == 0) {
152 TRACE_CALL(__func__);
166 TRACE_CALL(__func__);
182 TRACE_CALL(__func__);
183 if (!remminamain || !remminamain->
window)
195 TRACE_CALL(__func__);
199 gtk_widget_destroy(GTK_WIDGET(remminamain->
window));
201 g_object_unref(remminamain->
builder);
209 g_free(remminamain->
priv);
220 TRACE_CALL(__func__);
227 TRACE_CALL(__func__);
237 TRACE_CALL(__func__);
242 return G_SOURCE_REMOVE;
250 TRACE_CALL(__func__);
254 remminamain->
window = NULL;
263 TRACE_CALL(__func__);
274 GtkBuilder *dlgbuilder = NULL;
278 static gboolean shown_once = FALSE;
279 gboolean need_snap_interface_connections = FALSE;
288 g_print(
"Remmina is compiled as a SNAP package.\n");
290 if (remmina_secret_plugin == NULL) {
291 g_print(
" but we can’t find the secret plugin inside the SNAP.\n");
292 need_snap_interface_connections = TRUE;
295 g_print(
" but we can’t access a secret service. Secret service or SNAP interface connection is missing.\n");
296 need_snap_interface_connections = TRUE;
302 dsa = GTK_WIDGET(gtk_builder_get_object(dlgbuilder,
"dontshowagain"));
305 dlg = GTK_WIDGET(gtk_builder_get_object(dlgbuilder,
"SnapInfoDlg"));
307 gtk_window_set_transient_for(GTK_WINDOW(dlg), parent);
308 gtk_builder_connect_signals(dlgbuilder, NULL);
309 result = gtk_dialog_run(GTK_DIALOG(dlg));
314 gtk_widget_destroy(dlg);
315 g_object_unref(dlgbuilder);
323 gboolean path_currently_selected, gpointer user_data)
325 TRACE_CALL(__func__);
330 if (path_currently_selected)
333 if (!gtk_tree_model_get_iter(model, &iter, path))
338 gtk_tree_model_get(model, &iter,
343 context_id = gtk_statusbar_get_context_id(remminamain->
statusbar_main,
"status");
357 TRACE_CALL(__func__);
361 store = GTK_LIST_STORE(user_data);
365 gtk_list_store_append(store, &iter);
366 gtk_list_store_set(store, &iter,
382 TRACE_CALL(__func__);
390 iter = g_new0(GtkTreeIter, 1);
391 gtk_tree_store_append(store, iter, parent);
392 gtk_tree_store_set(store, iter,
401 for (child = g_node_first_child(node); child; child = g_node_next_sibling(child))
409 TRACE_CALL(__func__);
419 TRACE_CALL(__func__);
422 gchar *group, *filename;
430 if (filename == NULL) {
432 path = gtk_tree_model_get_path(tree, iter);
434 gtk_tree_path_free(path);
436 if (gtk_tree_model_iter_children(tree, &child, iter))
442 ret = gtk_tree_model_iter_next(tree, iter);
448 TRACE_CALL(__func__);
457 TRACE_CALL(__func__);
459 gchar *group, *filename;
466 match = (filename == NULL && g_strcmp0(group, match_group) == 0);
471 if (gtk_tree_model_iter_children(tree, &child, iter)) {
474 memcpy(iter, &child,
sizeof(GtkTreeIter));
478 ret = gtk_tree_model_iter_next(tree, iter);
485 TRACE_CALL(__func__);
486 GtkTreeIter iter, child;
489 gchar *datetime = NULL;
491 store = GTK_TREE_STORE(user_data);
494 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter))
500 gtk_tree_store_append(store, &child, (found ? &iter : NULL));
501 gtk_tree_store_set(store, &child,
517 TRACE_CALL(__func__);
521 gtk_tree_sortable_get_sort_column_id(sortable, &columnid, &order);
529 TRACE_CALL(__func__);
531 gchar *protocol, *name, *labels, *group, *server, *plugin, *date, *s;
532 gboolean result = TRUE;
535 if (text && text[0]) {
536 gtk_tree_model_get(model, iter,
545 if (g_strcmp0(protocol,
"folder-symbolic") != 0) {
546 s = g_ascii_strdown(name ? name :
"", -1);
549 s = g_ascii_strdown(group ? group :
"", -1);
552 s = g_ascii_strdown(server ? server :
"", -1);
555 s = g_ascii_strdown(plugin ? plugin :
"", -1);
558 s = g_ascii_strdown(date ? date :
"", -1);
561 result = (strstr(name, text) || strstr(group, text) || strstr(server, text) || strstr(plugin, text) || strstr(date, text));
565 s = g_ascii_strdown(labels ? labels :
"", -1);
569 if (strlen(labels) > 0) {
570 gboolean labels_result = TRUE;
571 gchar **labels_array = g_strsplit(labels,
",", -1);
572 gchar **text_array = g_strsplit(text,
",", -1);
574 for (
int t = 0; (NULL != text_array[t]); t++) {
575 if (0 == strlen(text_array[t])) {
579 gboolean text_result = FALSE;
581 for (
int l = 0; (NULL != labels_array[l]); l++) {
582 if (0 == strlen(labels_array[l])) {
586 text_result = (text_result || strstr(labels_array[l], text_array[t]));
593 labels_result = (labels_result && text_result);
595 if (!labels_result) {
600 result = (result || labels_result);
602 g_strfreev(labels_array);
603 g_strfreev(text_array);
620 TRACE_CALL(__func__);
623 gchar *item_filename;
631 cmp = g_strcmp0(item_filename, filename);
632 g_free(item_filename);
634 gtk_tree_selection_select_iter(gtk_tree_view_get_selection(remminamain->
tree_files_list),
637 gtk_tree_view_scroll_to_cell(remminamain->
tree_files_list, path, NULL, TRUE, 0.5, 0.0);
638 gtk_tree_path_free(path);
648 TRACE_CALL(__func__);
653 gboolean always_show_notes;
654 char *save_selected_filename;
655 GtkTreeModel *newmodel;
656 const gchar *neticon;
657 const gchar *connection_tooltip;
676 switch (view_file_mode) {
679 newmodel = GTK_TREE_MODEL(gtk_tree_store_new(9, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
691 newmodel = GTK_TREE_MODEL(gtk_list_store_new(9, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
701 if (!always_show_notes){
716 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(remminamain->
priv->
file_model_sort),
724 if (save_selected_filename) {
726 g_free(save_selected_filename);
732 gtk_widget_set_tooltip_text(GTK_WIDGET(label),
733 _(
"The latest successful connection attempt, or a pre-computed date"));
735 g_snprintf(buf,
sizeof(buf), ngettext(
"Total %i item.",
"Total %i items.", items_count), items_count);
736 context_id = gtk_statusbar_get_context_id(remminamain->
statusbar_main,
"status");
742 neticon = g_strdup(
"network-transmit-receive-symbolic");
743 connection_tooltip = g_strdup(_(
"Network status: fully online"));
745 neticon = g_strdup(
"network-offline-symbolic");
746 connection_tooltip = g_strdup(_(
"Network status: offline"));
751 GIcon *icon = g_themed_icon_new (neticon);
752 remminamain->
network_icon = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_BUTTON);
753 gtk_widget_set_tooltip_text (remminamain->
network_icon, connection_tooltip);
755 g_object_unref (icon);
764 TRACE_CALL(__func__);
770 TRACE_CALL(__func__);
779 if (remminafile == NULL)
798 TRACE_CALL(__func__);
807 TRACE_CALL(__func__);
816 TRACE_CALL(__func__);
819 const gchar *username;
822 const gchar *gatewayusername;
823 const gchar *gatewaydomain;
825 username = domain = group = gatewayusername = gatewaydomain =
"";
836 if (remminafile != NULL) {
847 if (remminafile != NULL)
853 TRACE_CALL(__func__);
865 gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain->
window);
866 gtk_widget_show(widget);
872 TRACE_CALL(__func__);
873 if (event->keyval == GDK_KEY_Escape) {
875 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(
"search_toggle")), FALSE);
883 TRACE_CALL(__func__);
884 if (gtk_tree_view_row_expanded(tree, path))
885 gtk_tree_view_collapse_row(tree, path);
887 gtk_tree_view_expand_row(tree, path, FALSE);
912 TRACE_CALL(__func__);
938 gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain->
window);
939 gtk_widget_show(widget);
948 TRACE_CALL(__func__);
969 gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain->
window);
970 gtk_widget_show(widget);
979 TRACE_CALL(__func__);
998 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
1000 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) {
1003 g_free(delfilename), delfilename = NULL;
1007 gtk_widget_destroy(dialog);
1013 TRACE_CALL(__func__);
1015 GtkTreeSelection *sel = gtk_tree_view_get_selection(remminamain->
tree_files_list);
1016 GtkTreeModel *model = gtk_tree_view_get_model(remminamain->
tree_files_list);
1017 GList *list = gtk_tree_selection_get_selected_rows(sel, &model);
1018 gchar *file_to_delete;
1020 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
1021 _(
"Are you sure you want to delete the selected files?"));
1024 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) {
1026 GtkTreePath *path = list->data;
1029 if (!gtk_tree_model_get_iter(model, &iter, path)) {
1030 GtkWidget *dialog_warning;
1031 dialog_warning = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
1032 _(
"Failed to delete files!"));
1033 gtk_dialog_run(GTK_DIALOG(dialog_warning));
1034 gtk_widget_destroy(dialog_warning);
1035 gtk_widget_destroy(dialog);
1040 gtk_tree_model_get(model, &iter,
1056 gchar *delfilename = g_strdup(file_to_delete);
1058 g_free(delfilename), delfilename = NULL;
1061 list = g_list_next(list);
1065 gtk_widget_destroy(dialog);
1071 TRACE_CALL(__func__);
1072 GVariant *v = g_variant_new(
"i", 0);
1079 GtkSettings *settings;
1080 settings = gtk_settings_get_default();
1083 gtk_toggle_button_set_active(remminamain->
search_toggle, FALSE);
1086 gtk_toggle_button_set_active(remminamain->
search_toggle, TRUE);
1093 TRACE_CALL(__func__);
1095 REMMINA_DEBUG(
"Opening the preferences");
1099 REMMINA_DEBUG(
"Parameter passed to preferences of type %s", g_variant_get_type_string(param));
1100 tab_num = g_variant_get_int32(param);
1101 REMMINA_DEBUG(
"We got a parameter for the preferences: %d", tab_num);
1112 gtk_widget_show_all(widget);
1117 TRACE_CALL(__func__);
1119 g_autoptr(GError) error = NULL;
1120 GDesktopAppInfo *desktop_info;
1121 GAppInfo *info = NULL;
1122 g_autofree gchar *
id = g_strconcat(REMMINA_APP_ID,
".desktop", NULL);
1125 desktop_info = g_desktop_app_info_new(
id);
1129 info = G_APP_INFO(desktop_info);
1133 g_warning(
"Failed to set '%s' as the default application for secondary content type '%s': %s",
1136 g_debug(
"Set '%s' as the default application for '%s'",
1137 g_app_info_get_name(info),
1146 TRACE_CALL(__func__);
1147 g_debug(
"Quit intercept");
1163 GtkWindow *mainwindow;
1164 gboolean visible = gtk_entry_get_visibility(GTK_ENTRY(widget));
1171 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
1172 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widget), GTK_ENTRY_ICON_SECONDARY,
"org.remmina.Remmina-password-reveal-symbolic");
1174 gtk_entry_set_visibility(GTK_ENTRY(widget), TRUE);
1175 gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widget), GTK_ENTRY_ICON_SECONDARY,
"org.remmina.Remmina-password-conceal-symbolic");
1181 TRACE_CALL(__func__);
1190 err = g_string_new(NULL);
1192 for (element = files; element; element = element->next) {
1193 path = (gchar *)element->data;
1200 g_string_append(err, path);
1201 g_string_append_c(err,
'\n');
1209 g_slist_free(files);
1212 dlg = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
1213 _(
"Unable to import:\n%s"), err->str);
1214 g_signal_connect(G_OBJECT(dlg),
"response", G_CALLBACK(gtk_widget_destroy), NULL);
1215 gtk_widget_show(dlg);
1217 g_string_free(err, TRUE);
1224 TRACE_CALL(__func__);
1227 if (response_id == GTK_RESPONSE_ACCEPT) {
1228 files = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
1231 gtk_widget_destroy(GTK_WIDGET(dialog));
1236 TRACE_CALL(__func__);
1239 dialog = gtk_file_chooser_dialog_new(_(
"Import"), remminamain->
window, GTK_FILE_CHOOSER_ACTION_OPEN,
"Import",
1240 GTK_RESPONSE_ACCEPT, NULL);
1241 gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);
1243 gtk_widget_show(dialog);
1248 TRACE_CALL(__func__);
1257 if (remminafile == NULL)
1262 GTK_FILE_CHOOSER_ACTION_SAVE, _(
"_Save"), GTK_RESPONSE_ACCEPT, NULL);
1263 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
1264 plugin->
export_func(plugin, remminafile, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)));
1265 gtk_widget_destroy(dialog);
1267 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
1268 _(
"This protocol does not support exporting."));
1269 g_signal_connect(G_OBJECT(dialog),
"response", G_CALLBACK(gtk_widget_destroy), NULL);
1270 gtk_widget_show(dialog);
1277 TRACE_CALL(__func__);
1283 TRACE_CALL(__func__);
1284 GtkSettings *settings;
1286 settings = gtk_settings_get_default();
1299 TRACE_CALL(__func__);
1300 g_app_info_launch_default_for_uri(
"https://www.remmina.org", NULL, NULL);
1305 TRACE_CALL(__func__);
1306 g_app_info_launch_default_for_uri(
"https://gitlab.com/Remmina/Remmina/wikis/home", NULL, NULL);
1311 TRACE_CALL(__func__);
1312 g_app_info_launch_default_for_uri(
"https://remmina.org/community", NULL, NULL);
1317 TRACE_CALL(__func__);
1318 g_app_info_launch_default_for_uri(
"https://www.remmina.org/donations", NULL, NULL);
1323 TRACE_CALL(__func__);
1329 TRACE_CALL(__func__);
1338 if (!isspace((
unsigned char)*s))
1347 TRACE_CALL(__func__);
1350 gchar *server_trimmed;
1364 if (g_hostname_to_ascii(server) == NULL)
1370 if (g_strrstr(server,
"/") != NULL)
1378 server_trimmed = g_strdup(server);
1379 g_strstrip(server_trimmed);
1380 gchar **strings = g_strsplit(server_trimmed,
":", 2);
1382 if (strings[0] != NULL)
1383 if (g_hostname_is_ip_address(strings[0]))
1384 g_stpcpy(server, server_trimmed);
1391 g_free(server_trimmed);
1401 TRACE_CALL(__func__);
1416 TRACE_CALL(__func__);
1422 TRACE_CALL(__func__);
1423 REMMINA_DEBUG(
"Search toggle triggered");
1425 gboolean toggle_status = gtk_toggle_button_get_active(remminamain->
search_toggle);
1427 gtk_search_bar_set_search_mode(remminamain->
search_bar, toggle_status);
1428 if (toggle_status) {
1429 REMMINA_DEBUG(
"Search toggle is active");
1432 REMMINA_DEBUG(
"Search toggle is not active, focus is tree_files_list");
1439 TRACE_CALL(__func__);
1440 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remminamain->
search_toggle), TRUE);
1445 TRACE_CALL(__func__);
1452 TRACE_CALL(__func__);
1470 TRACE_CALL(__func__);
1471 if (event->button == MOUSE_BUTTON_RIGHT) {
1473 #if GTK_CHECK_VERSION(3, 22, 0) 1475 if (gtk_tree_selection_count_selected_rows(gtk_tree_view_get_selection(remminamain->
tree_files_list)) > 1) {
1477 return GDK_EVENT_STOP;
1480 gtk_menu_popup_at_pointer(GTK_MENU(remminamain->
menu_popup), (GdkEvent *)event);
1483 gtk_menu_popup(remminamain->
menu_popup, NULL, NULL, NULL, NULL, event->button, event->time);
1493 TRACE_CALL(__func__);
1494 if (event->keyval == GDK_KEY_Menu) {
1495 #if GTK_CHECK_VERSION(3, 22, 0) 1496 gtk_menu_popup_at_widget(GTK_MENU(remminamain->
menu_popup), widget,
1497 GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER,
1500 gtk_menu_popup(remminamain->
menu_popup, NULL, NULL, NULL, NULL, 0, event->time);
1508 TRACE_CALL(__func__);
1509 if (icon_pos == GTK_ENTRY_ICON_SECONDARY)
1510 gtk_entry_set_text(entry,
"");
1515 TRACE_CALL(__func__);
1534 GtkSelectionData *data, guint info, guint time, gpointer user_data)
1536 TRACE_CALL(__func__);
1538 GSList *files = NULL;
1541 uris = g_uri_list_extract_uris((
const gchar *)gtk_selection_data_get_data(data));
1542 for (i = 0; uris[i]; i++) {
1543 if (strncmp(uris[i],
"file://", 7) != 0)
1545 files = g_slist_append(files, g_strdup(uris[i] + 7));
1554 TRACE_CALL(__func__);
1556 GtkWidget *menuitem = gtk_menu_item_new_with_label(plugin->
description);
1558 gtk_widget_show(menuitem);
1559 gtk_menu_shell_append(GTK_MENU_SHELL(remminamain->
menu_popup_full), menuitem);
1560 g_signal_connect(G_OBJECT(menuitem),
"activate", G_CALLBACK(tool_plugin->
exec_func), tool_plugin);
1566 TRACE_CALL(__func__);
1573 TRACE_CALL(__func__);
1574 int i, qcp_idx, qcp_actidx;
1576 GtkSettings *settings;
1578 REMMINA_DEBUG(
"Initializing the Remmina main window");
1580 settings = gtk_settings_get_default();
1583 REMMINA_DEBUG (
"Initializing monitor");
1588 gtk_window_set_title(remminamain->
window, _(
"Remmina Remote Desktop Client"));
1590 gtk_window_set_title(remminamain->
window, _(
"Remmina Kiosk"));
1594 gtk_window_maximize(remminamain->
window);
1598 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(
"search_toggle")), FALSE);
1604 qcp_idx = qcp_actidx = 0;
1610 qcp_actidx = qcp_idx;
1621 gtk_tree_selection_set_select_function(
1638 g_object_set_data(G_OBJECT(remminamain->
window),
"tag",
"remmina-main-window");
1645 TRACE_CALL(__func__);
1654 TRACE_CALL(__func__);
1655 GSimpleActionGroup *actions;
1656 GtkAccelGroup *accel_group = NULL;
1662 remminamain->
window = GTK_WINDOW(RM_GET_OBJECT(
"RemminaMain"));
1664 gtk_window_set_position(remminamain->
window, GTK_WIN_POS_CENTER_ALWAYS);
1665 gtk_window_set_default_size(remminamain->
window, 800, 400);
1666 gtk_window_set_resizable(remminamain->
window, FALSE);
1669 remminamain->
button_new = GTK_BUTTON(RM_GET_OBJECT(
"button_new"));
1671 gtk_widget_set_sensitive(GTK_WIDGET(remminamain->
button_new), FALSE);
1673 remminamain->
search_toggle = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(
"search_toggle"));
1674 remminamain->
search_bar = GTK_SEARCH_BAR(RM_GET_OBJECT(
"search_bar"));
1676 remminamain->
view_toggle_button = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(
"view_toggle_button"));
1681 remminamain->
menu_popup = GTK_MENU(RM_GET_OBJECT(
"menu_popup"));
1682 remminamain->
menu_header_button = GTK_MENU_BUTTON(RM_GET_OBJECT(
"menu_header_button"));
1683 remminamain->
menu_popup_full = GTK_MENU(RM_GET_OBJECT(
"menu_popup_full"));
1686 gtk_widget_set_sensitive(GTK_WIDGET(remminamain->
menu_popup_full), FALSE);
1699 remminamain->
tree_files_list = GTK_TREE_VIEW(RM_GET_OBJECT(
"tree_files_list"));
1707 remminamain->
statusbar_main = GTK_STATUSBAR(RM_GET_OBJECT(
"statusbar_main"));
1712 actions = g_simple_action_group_new();
1714 gtk_widget_insert_action_group(GTK_WIDGET(remminamain->
window),
"app", G_ACTION_GROUP(actions));
1716 gtk_widget_insert_action_group(GTK_WIDGET(remminamain->
window),
"main", G_ACTION_GROUP(actions));
1717 g_object_unref(actions);
1719 accel_group = gtk_accel_group_new();
1720 gtk_window_add_accel_group(remminamain->
window, accel_group);
1721 gtk_accel_group_connect(accel_group, GDK_KEY_Q, GDK_CONTROL_MASK, 0,
1724 gtk_accel_group_connect(accel_group, GDK_KEY_P, GDK_CONTROL_MASK, 0,
1726 gtk_accel_group_connect(accel_group, GDK_KEY_F, GDK_CONTROL_MASK, 0,
1730 gtk_builder_connect_signals(remminamain->
builder, NULL);
1733 return GTK_WIDGET(remminamain->
window);
1740 if (!remminamain->
priv)
1744 remminamain->
window = GTK_WINDOW(RM_GET_OBJECT(
"RemminaMain"));
1745 return remminamain->
window;
1758 if (remminamain->
window) {
1759 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, msg, buttons,
"%s", message);
1760 gtk_dialog_run(GTK_DIALOG(dialog));
1761 gtk_widget_destroy(dialog);
1768 if (remminamain->
window) {
1769 dialog = gtk_message_dialog_new(remminamain->
window, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE,
1770 message, g_get_application_name());
1771 gtk_dialog_run(GTK_DIALOG(dialog));
1772 gtk_widget_destroy(dialog);
G_BEGIN_DECLS struct _RemminaGroupData RemminaGroupData
RemminaFile * remmina_file_load(const gchar *filename)
static RemminaSecretPlugin * remmina_secret_plugin
void remmina_log_start(void)
@@ -100,11 +100,11 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
GtkRadioMenuItem * menuitem_view_mode_list
static void remmina_main_load_file_tree_callback(RemminaFile *remminafile, gpointer user_data)
-
void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)
static void remmina_main_show_snap_welcome()
-
GtkWindow * remmina_main_get_window()
+
GtkWindow * remmina_main_get_window()
gchar * selected_filename
GtkTreeModel * file_model
static void remmina_main_save_expanded_group(void)
@@ -126,7 +126,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
gchar * last_quickconnect_protocol
-
gboolean remmina_main_file_list_on_button_press(GtkWidget *widget, GdkEventButton *event, gpointer user_data)
+
gboolean remmina_main_file_list_on_button_press(GtkWidget *widget, GdkEventButton *event, gpointer user_data)
RemminaFile *(* import_func)(struct _RemminaFilePlugin *instance, const gchar *from_file)
static gboolean remmina_main_filter_visible_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
@@ -138,7 +138,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
RemminaFilePlugin * remmina_plugin_manager_get_import_file_handler(const gchar *file)
static gboolean remmina_main_search_key_event(GtkWidget *search_entry, GdkEventKey *event, gpointer user_data)
-
void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)
RemminaMonitor * remmina_network_monitor_new()
RemminaSecretPlugin * remmina_plugin_manager_get_secret_plugin(void)
@@ -158,8 +158,8 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
gchar * remmina_file_get_datetime(RemminaFile *remminafile)
Return the string date of the last time a Remmina state file has been modified.
static void remmina_main_file_model_on_sort(GtkTreeSortable *sortable, gpointer user_data)
-
GtkWidget * remmina_main_new(void)
-
void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)
+
GtkWidget * remmina_main_new(void)
+
void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)
gint remmina_string_array_find(RemminaStringArray *array, const gchar *str)
gchar * remmina_string_array_to_string(RemminaStringArray *array)
GtkSwitch * switch_dark_mode
@@ -175,30 +175,30 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
static gboolean remmina_main_load_file_tree_find(GtkTreeModel *tree, GtkTreeIter *iter, const gchar *match_group)
-
void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_load_files_cb(GtkEntry *entry, char *string, gpointer user_data)
-
gboolean remmina_main_on_window_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)
+
gboolean remmina_main_on_window_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)
-
void remmina_main_update_file_datetime(RemminaFile *file)
+
void remmina_main_update_file_datetime(RemminaFile *file)
GtkMenuButton * menu_header_button
static void remmina_main_load_file_tree_group(GtkTreeStore *store)
void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_plugin_manager_show(GtkWindow *parent)
-
static void remmina_main_import_file_list(GSList *files)
+
static void remmina_main_import_file_list(GSList *files)
-
void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)
gboolean remmina_main_idle_destroy(gpointer data)
static gboolean remmina_main_tree_row_activated(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
-
void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)
+
void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)
@@ -207,11 +207,11 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
gboolean prevent_snap_welcome_message
GtkBox * box_quick_connect
-
void remmina_main_on_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint time, gpointer user_data)
+
void remmina_main_on_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint time, gpointer user_data)
GtkTreeViewColumn * column_files_list_server
-
void remmina_main_show_warning_dialog(const gchar *message)
+
void remmina_main_show_warning_dialog(const gchar *message)
void remmina_main_on_action_connection_new(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_quick_search_enter(GtkWidget *widget, gpointer user_data)
+
void remmina_main_quick_search_enter(GtkWidget *widget, gpointer user_data)
void remmina_file_delete(const gchar *filename)
GtkMenu * menu_popup_full
@@ -221,33 +221,33 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
GtkStatusbar * statusbar_main
GtkTreeViewColumn * column_files_list_plugin
-
void remmina_main_quick_search_on_changed(GtkEditable *editable, gpointer user_data)
+
void remmina_main_quick_search_on_changed(GtkEditable *editable, gpointer user_data)
void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)
GtkBuilder * remmina_public_gtk_builder_new_from_resource(gchar *resource)
void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)
-
static gboolean is_empty(const gchar *s)
+
static gboolean is_empty(const gchar *s)
RemminaStringArray * remmina_string_array_new_from_string(const gchar *strs)
gboolean remmina_pref_get_boolean(const gchar *key)
RemminaStringArray * remmina_string_array_new(void)
void remmina_file_touch(RemminaFile *remminafile)
Update the atime and mtime of a given filename.
-
GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)
+
GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)
static void remmina_main_save_expanded_group_func(GtkTreeView *tree_view, GtkTreePath *path, gpointer user_data)
-
void remmina_main_on_show(GtkWidget *w, gpointer user_data)
-
static void remmina_main_init(void)
+
void remmina_main_on_show(GtkWidget *w, gpointer user_data)
+
static void remmina_main_init(void)
GtkTreeView * tree_files_list
static void remmina_main_select_file(const gchar *filename)
gboolean remmina_main_on_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data)
-
void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)
GtkToggleButton * view_toggle_button
void remmina_main_destroy()
RemminaFile * remmina_file_new(void)
GtkTreeViewColumn * column_files_list_group
-
void remmina_main_file_list_on_row_activated(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
+
void remmina_main_file_list_on_row_activated(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
static void remmina_main_expand_group_traverse(GtkTreeIter *iter)
RemminaStringArray * expanded_group
static gboolean remmina_main_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer user_data)
@@ -257,26 +257,27 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
void rcw_open_from_file(RemminaFile *remminafile)
void remmina_main_on_date_column_sort_clicked()
-
gboolean remmina_main_file_list_on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
+
gboolean remmina_main_file_list_on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)
-
void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_about_open(GtkWindow *parent)
-
GtkWidget * remmina_file_editor_new(void)
+
GtkWidget * remmina_file_editor_new(void)
RemminaPlugin * remmina_plugin_manager_get_plugin(RemminaPluginType type, const gchar *name)
-
static gboolean remmina_main_add_tool_plugin(gchar *name, RemminaPlugin *plugin, gpointer user_data)
+
static gboolean remmina_main_add_tool_plugin(gchar *name, RemminaPlugin *plugin, gpointer user_data)
gboolean remmina_pref_save(void)
void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_toggle_password_view(GtkWidget *widget, gpointer data)
GtkTreeModel * file_model_sort
gboolean rcw_open_from_filename(const gchar *filename)
static const gchar * supported_mime_types[]
-
void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)
gboolean(* export_func)(struct _RemminaFilePlugin *instance, RemminaFile *file, const gchar *to_file)
@@ -285,13 +286,13 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
static char * quick_connect_plugin_list[]
void remmina_file_save(RemminaFile *remminafile)
GtkTreeViewColumn * column_files_list_notes
-
static gboolean remmina_main_quickconnect(void)
+
static gboolean remmina_main_quickconnect(void)
gboolean always_show_notes
void remmina_string_array_add(RemminaStringArray *array, const gchar *str)
static GtkTargetEntry remmina_drop_types[]
GtkSearchBar * search_bar
static RemminaMain * remminamain
-
GtkWidget * remmina_file_editor_new_copy(const gchar *filename)
+
GtkWidget * remmina_file_editor_new_copy(const gchar *filename)
void remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data)
GtkEntry * entry_quick_connect_server
gint remmina_unlock_new(GtkWindow *parent)
@@ -303,24 +304,24 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)
GNode * remmina_file_manager_get_group_tree(void)
-
void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)
gboolean override_view_file_mode_to_list
-
void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)
static void remmina_main_file_editor_destroy(GtkWidget *widget, gpointer user_data)
gint remmina_file_manager_iterate(GFunc func, gpointer user_data)
static void remmina_main_expand_group(void)
-
void remmina_main_quick_search_on_icon_press(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data)
-
void remmina_main_on_accel_search_toggle(RemminaMain *remminamain)
+
void remmina_main_quick_search_on_icon_press(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data)
+
void remmina_main_on_accel_search_toggle(RemminaMain *remminamain)
static void remmina_main_load_files()
GtkTreeViewColumn * column_files_list_date
-
void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)
-
static void remmina_main_action_tools_import_on_response(GtkDialog *dialog, gint response_id, gpointer user_data)
-
void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)
+
static void remmina_main_action_tools_import_on_response(GtkDialog *dialog, gint response_id, gpointer user_data)
+
void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)
static gboolean remmina_main_dexit(gpointer data)
Try to exit remmina after a delete window event.
-
gboolean remmina_main_quickconnect_on_click(GtkWidget *widget, gpointer user_data)
+
gboolean remmina_main_quickconnect_on_click(GtkWidget *widget, gpointer user_data)
diff --git a/public/remmina__main_8h.html b/public/remmina__main_8h.html
index ef0ac5a7c..a37c379b2 100644
--- a/public/remmina__main_8h.html
+++ b/public/remmina__main_8h.html
@@ -175,6 +175,8 @@ Functions
|
void | remmina_main_on_action_search_toggle (GSimpleAction *action, GVariant *param, gpointer data) |
|
+void | remmina_main_toggle_password_view (GtkWidget *widget, gpointer data) |
+ |
void | remmina_main_reload_preferences () |
|
@@ -246,7 +248,7 @@ Functions
@@ -266,7 +268,7 @@ Functions
@@ -302,7 +304,7 @@ Functions
@@ -338,7 +340,7 @@ Functions
@@ -446,7 +448,7 @@ Functions
@@ -554,7 +556,7 @@ Functions
@@ -842,7 +844,7 @@ Functions
@@ -878,7 +880,7 @@ Functions
@@ -914,7 +916,7 @@ Functions
@@ -950,7 +952,7 @@ Functions
@@ -986,7 +988,7 @@ Functions
@@ -1022,7 +1024,7 @@ Functions
@@ -1058,7 +1060,7 @@ Functions
@@ -1094,7 +1096,7 @@ Functions
@@ -1130,7 +1132,7 @@ Functions
@@ -1230,7 +1232,7 @@ Functions
@@ -1250,7 +1252,37 @@ Functions
+
+
+◆ remmina_main_toggle_password_view()
+
+
+
+
+
+ void remmina_main_toggle_password_view |
+ ( |
+ GtkWidget * |
+ widget, |
+
+
+ |
+ |
+ gpointer |
+ data |
+
+
+ |
+ ) |
+ | |
+
+
+
@@ -1270,7 +1302,7 @@ Functions
diff --git a/public/remmina__main_8h.js b/public/remmina__main_8h.js
index 470985bce..3cc2f4545 100644
--- a/public/remmina__main_8h.js
+++ b/public/remmina__main_8h.js
@@ -36,5 +36,6 @@ var remmina__main_8h =
[ "remmina_main_save_before_destroy", "remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5", null ],
[ "remmina_main_show_dialog", "remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589", null ],
[ "remmina_main_show_warning_dialog", "remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7", null ],
+ [ "remmina_main_toggle_password_view", "remmina__main_8h.html#aac3fe305e456dfa7bb55aa2f057e8cb0", null ],
[ "remmina_main_update_file_datetime", "remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a", null ]
];
\ No newline at end of file
diff --git a/public/remmina__main_8h_source.html b/public/remmina__main_8h_source.html
index 9bd1d24fa..451dbcae3 100644
--- a/public/remmina__main_8h_source.html
+++ b/public/remmina__main_8h_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina__main_8h_source.html','');});
remmina_main.h
-
Go to the documentation of this file.void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)
+
Go to the documentation of this file.void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)
GtkToggleButton * search_toggle
GtkRadioMenuItem * menuitem_view_mode_list
@@ -97,7 +97,7 @@ $(document).ready(function(){initNavTree('remmina__main_8h_source.html','');});
GtkTreeModel * file_model
void remmina_main_destroy(void)
-
void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)
typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile
GtkMenuItem * menuitem_connection_quit
GtkRadioMenuItem * menuitem_view_mode_tree
@@ -105,22 +105,22 @@ $(document).ready(function(){initNavTree('remmina__main_8h_source.html','');});
GtkMenu * menu_popup_delete_rc
-
void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)
-
G_BEGIN_DECLS GtkWidget * remmina_main_new(void)
-
void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)
+
G_BEGIN_DECLS GtkWidget * remmina_main_new(void)
+
void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)
GtkSwitch * switch_dark_mode
GtkAccelGroup * accelgroup_shortcuts
-
void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data)
GtkTreeModel * file_model_filter
void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)
GtkMenuButton * menu_header_button
-
void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)
-
void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)
+
void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_reload_preferences()
@@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('remmina__main_8h_source.html','');});
void remmina_main_on_action_connection_delete_multiple(GSimpleAction *action, GVariant *param, gpointer data)
GtkBox * box_quick_connect
GtkTreeViewColumn * column_files_list_server
-
void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)
GtkMenu * menu_popup_full
GtkStatusbar * statusbar_main
@@ -140,30 +140,31 @@ $(document).ready(function(){initNavTree('remmina__main_8h_source.html','');});
GtkButton * button_quick_connect
-
void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)
-
GtkWindow * remmina_main_get_window(void)
+
void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_toggle_password_view(GtkWidget *widget, gpointer data)
+
GtkWindow * remmina_main_get_window(void)
void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)
GtkTreeView * tree_files_list
GtkToggleButton * view_toggle_button
GtkTreeViewColumn * column_files_list_group
RemminaStringArray * expanded_group
void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_show_warning_dialog(const gchar *message)
+
void remmina_main_show_warning_dialog(const gchar *message)
void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)
GtkTreeModel * file_model_sort
-
void remmina_main_update_file_datetime(RemminaFile *file)
+
void remmina_main_update_file_datetime(RemminaFile *file)
void remmina_main_on_action_connection_connect(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data)
GtkToggleButton * ustats_toggle
void remmina_main_on_action_connection_new(GSimpleAction *action, GVariant *param, gpointer data)
-
void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)
GtkButton * button_make_default
-
void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)
GtkTreeViewColumn * column_files_list_notes
GtkSearchBar * search_bar
GtkEntry * entry_quick_connect_server
-
void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)
+
void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)
gboolean override_view_file_mode_to_list
struct _RemminaMain RemminaMain
diff --git a/public/remmina__message__panel_8c.html b/public/remmina__message__panel_8c.html
index 630bd874d..fcffc0626 100644
--- a/public/remmina__message__panel_8c.html
+++ b/public/remmina__message__panel_8c.html
@@ -177,7 +177,7 @@ Variables
@@ -215,7 +215,7 @@ Variables
@@ -243,7 +243,7 @@ Variables
@@ -273,7 +273,7 @@ Variables
@@ -303,7 +303,7 @@ Variables
@@ -333,7 +333,7 @@ Variables
@@ -369,7 +369,7 @@ Variables
@@ -405,7 +405,7 @@ Variables
@@ -441,7 +441,7 @@ Variables
@@ -461,7 +461,7 @@ Variables
@@ -489,7 +489,7 @@ Variables
@@ -509,7 +509,7 @@ Variables
@@ -539,7 +539,7 @@ Variables
@@ -593,7 +593,7 @@ Variables
@@ -629,7 +629,7 @@ Variables
@@ -671,7 +671,7 @@ Variables
@@ -713,7 +713,7 @@ Variables
@@ -755,7 +755,7 @@ Variables
@@ -780,7 +780,7 @@ Variables
@@ -804,7 +804,7 @@ Variables
diff --git a/public/remmina__message__panel_8c_source.html b/public/remmina__message__panel_8c_source.html
index 4915b76d7..85f67cf64 100644
--- a/public/remmina__message__panel_8c_source.html
+++ b/public/remmina__message__panel_8c_source.html
@@ -86,51 +86,53 @@ $(document).ready(function(){initNavTree('remmina__message__panel_8c_source.html
remmina_message_panel.c
-
Go to the documentation of this file. 37 #include <glib/gi18n.h> 77 g_signal_new (
"response",
78 G_OBJECT_CLASS_TYPE (
class),
80 G_STRUCT_OFFSET (RemminaMessagePanelClass, response),
91 RemminaMessagePanel* mp;
92 mp = (RemminaMessagePanel*)g_object_new(REMMINA_TYPE_MESSAGE_PANEL,
93 "orientation", GTK_ORIENTATION_VERTICAL,
97 priv = remmina_message_panel_get_instance_private(mp);
104 gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(mp)),
"message_panel");
105 gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(mp)),
"background");
111 GtkButton *button, gpointer user_data)
113 TRACE_CALL(__func__);
114 RemminaMessagePanel *mp = (RemminaMessagePanel*)user_data;
119 btn_data = (gint)((gint64)g_object_get_data(G_OBJECT(button),
btn_response_key));
135 TRACE_CALL(__func__);
141 printf(
"WARNING: %s called in a subthread. This should not happen.\n", __func__);
145 hbox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0));
148 w = gtk_spinner_new();
149 gtk_box_pack_start(hbox, w, FALSE, FALSE, 0);
150 gtk_spinner_start(GTK_SPINNER(w));
153 w = gtk_label_new(message);
154 gtk_box_pack_start(hbox, w, TRUE, TRUE, 0);
161 if (response_callback) {
162 w = gtk_button_new_with_label(_(
"Cancel"));
163 gtk_box_pack_end(hbox, w, FALSE, FALSE, 0);
164 g_object_set_data(G_OBJECT(w),
btn_response_key, (
void *)GTK_RESPONSE_CANCEL);
168 gtk_box_pack_start(GTK_BOX(mp), GTK_WIDGET(hbox), TRUE, TRUE, 0);
170 gtk_widget_show_all(GTK_WIDGET(mp));
182 TRACE_CALL(__func__);
188 printf(
"WARNING: %s called in a subthread. This should not happen.\n", __func__);
191 hbox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0));
194 w = gtk_label_new(message);
195 gtk_box_pack_start(hbox, w, TRUE, TRUE, 0);
198 w = gtk_button_new_with_label(_(
"Close"));
199 gtk_box_pack_end(hbox, w, FALSE, FALSE, 0);
207 gtk_box_pack_start(GTK_BOX(mp), GTK_WIDGET(hbox), TRUE, TRUE, 0);
209 gtk_widget_show_all(GTK_WIDGET(mp));
223 TRACE_CALL(__func__);
230 printf(
"WARNING: %s called in a subthread. This should not happen. Raising SIGINT for debugging.\n", __func__);
235 grid = gtk_grid_new();
236 gtk_widget_set_halign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
237 gtk_widget_set_valign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
238 gtk_widget_show(grid);
239 gtk_grid_set_row_spacing(GTK_GRID(grid), 6);
240 gtk_grid_set_column_spacing(GTK_GRID(grid), 6);
243 w = gtk_label_new(NULL);
244 gtk_label_set_markup(GTK_LABEL(w), message);
246 gtk_widget_set_halign(GTK_WIDGET(w), GTK_ALIGN_START);
247 gtk_widget_set_valign(GTK_WIDGET(w), GTK_ALIGN_FILL);
248 gtk_widget_set_margin_top (GTK_WIDGET(w), 18);
249 gtk_widget_set_margin_bottom (GTK_WIDGET(w), 9);
250 gtk_widget_set_margin_start (GTK_WIDGET(w), 18);
251 gtk_widget_set_margin_end (GTK_WIDGET(w), 18);
253 gtk_grid_attach(GTK_GRID(grid), w, 0, 0, 2, 1);
256 bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
257 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_START);
258 gtk_grid_attach(GTK_GRID(grid), bbox, 0, 1, 1, 1);
259 w = gtk_button_new_with_label(_(
"Yes"));
260 gtk_widget_set_valign(GTK_WIDGET(w), GTK_ALIGN_CENTER);
264 gtk_container_add(GTK_CONTAINER(bbox), w);
266 w = gtk_button_new_with_label(_(
"No"));
267 gtk_widget_set_valign(GTK_WIDGET(w), GTK_ALIGN_CENTER);
274 gtk_container_add(GTK_CONTAINER(bbox), w);
276 gtk_box_pack_start(GTK_BOX(mp), GTK_WIDGET(grid), TRUE, TRUE, 0);
278 gtk_widget_show_all(GTK_WIDGET(mp));
284 TRACE_CALL(__func__);
286 GtkWidget *password_entry;
287 GtkWidget *username_entry;
288 GtkWidget *domain_entry;
289 GtkWidget *save_password_switch;
292 GtkWidget *button_ok;
293 GtkWidget *button_cancel;
299 printf(
"WARNING: %s called in a subthread. This should not happen. Raising SIGINT to debug.\n", __func__);
304 grid = gtk_grid_new();
305 gtk_widget_set_halign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
306 gtk_widget_set_valign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
307 gtk_widget_show(grid);
308 gtk_grid_set_row_spacing(GTK_GRID(grid), 6);
309 gtk_grid_set_column_spacing(GTK_GRID(grid), 6);
315 widget = gtk_label_new(title);
316 gtk_style_context_add_class(gtk_widget_get_style_context(widget),
"title_label");
317 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
318 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_FILL);
319 gtk_widget_set_margin_top (GTK_WIDGET(widget), 18);
320 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 9);
321 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
322 gtk_widget_set_margin_end (GTK_WIDGET(widget), 18);
323 gtk_widget_show(widget);
324 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 3, 1);
329 widget = gtk_label_new(_(
"Username"));
330 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
331 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
332 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
333 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
334 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
335 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
336 gtk_widget_show(widget);
337 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
339 username_entry = gtk_entry_new();
341 gtk_widget_set_halign(GTK_WIDGET(username_entry), GTK_ALIGN_FILL);
342 gtk_widget_set_valign(GTK_WIDGET(username_entry), GTK_ALIGN_FILL);
343 gtk_widget_set_margin_top (GTK_WIDGET(username_entry), 9);
344 gtk_widget_set_margin_bottom (GTK_WIDGET(username_entry), 3);
345 gtk_widget_set_margin_start (GTK_WIDGET(username_entry), 6);
346 gtk_widget_set_margin_end (GTK_WIDGET(username_entry), 18);
348 gtk_grid_attach(GTK_GRID(grid), username_entry, 1, grid_row, 2, 1);
349 gtk_entry_set_max_length(GTK_ENTRY(username_entry), 100);
352 g_object_set(username_entry,
"editable", FALSE, NULL);
362 username_entry = NULL;
366 widget = gtk_label_new(password_prompt);
367 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
368 gtk_widget_set_margin_top (GTK_WIDGET(widget), 3);
369 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
370 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
371 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
372 gtk_widget_show(widget);
373 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
375 password_entry = gtk_entry_new();
376 gtk_widget_set_halign(GTK_WIDGET(password_entry), GTK_ALIGN_FILL);
377 gtk_widget_set_valign(GTK_WIDGET(password_entry), GTK_ALIGN_FILL);
378 gtk_widget_set_margin_top (GTK_WIDGET(password_entry), 3);
379 gtk_widget_set_margin_bottom (GTK_WIDGET(password_entry), 3);
380 gtk_widget_set_margin_start (GTK_WIDGET(password_entry), 6);
381 gtk_widget_set_margin_end (GTK_WIDGET(password_entry), 18);
382 gtk_entry_set_activates_default (GTK_ENTRY(password_entry), TRUE);
383 gtk_grid_attach(GTK_GRID(grid), password_entry, 1, grid_row, 2, 1);
384 gtk_entry_set_max_length(GTK_ENTRY(password_entry), 0);
385 gtk_entry_set_visibility(GTK_ENTRY(password_entry), FALSE);
390 widget = gtk_label_new(_(
"Domain"));
391 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
392 gtk_widget_set_margin_top (GTK_WIDGET(widget), 3);
393 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
394 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
395 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
396 gtk_widget_show(widget);
397 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
399 domain_entry = gtk_entry_new();
400 gtk_widget_set_halign(GTK_WIDGET(domain_entry), GTK_ALIGN_FILL);
401 gtk_widget_set_valign(GTK_WIDGET(domain_entry), GTK_ALIGN_FILL);
402 gtk_widget_set_margin_top (GTK_WIDGET(domain_entry), 3);
403 gtk_widget_set_margin_bottom (GTK_WIDGET(domain_entry), 3);
404 gtk_widget_set_margin_start (GTK_WIDGET(domain_entry), 6);
405 gtk_widget_set_margin_end (GTK_WIDGET(domain_entry), 18);
406 gtk_entry_set_activates_default (GTK_ENTRY(domain_entry), TRUE);
407 gtk_widget_show(domain_entry);
408 gtk_grid_attach(GTK_GRID(grid), domain_entry, 1, grid_row, 2, 1);
409 gtk_entry_set_max_length(GTK_ENTRY(domain_entry), 100);
419 widget = gtk_label_new(_(
"Save password"));
420 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
421 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
422 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 9);
423 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
424 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
425 gtk_widget_show(widget);
426 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
427 save_password_switch = gtk_switch_new();
428 gtk_widget_set_halign(GTK_WIDGET(save_password_switch), GTK_ALIGN_START);
429 gtk_widget_set_valign(GTK_WIDGET(save_password_switch), GTK_ALIGN_FILL);
430 gtk_widget_set_margin_top (GTK_WIDGET(save_password_switch), 9);
431 gtk_widget_set_margin_bottom (GTK_WIDGET(save_password_switch), 9);
432 gtk_widget_set_margin_start (GTK_WIDGET(save_password_switch), 6);
433 gtk_widget_set_margin_end (GTK_WIDGET(save_password_switch), 18);
434 gtk_grid_attach(GTK_GRID(grid), save_password_switch, 1, grid_row, 2, 1);
436 gtk_switch_set_active(GTK_SWITCH(save_password_switch), TRUE);
438 gtk_switch_set_active(GTK_SWITCH(save_password_switch), FALSE);
439 gtk_widget_set_sensitive(GTK_WIDGET(save_password_switch), FALSE);
444 bbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
445 gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_EDGE);
446 gtk_box_set_spacing (GTK_BOX (bbox), 40);
447 gtk_widget_set_margin_top (GTK_WIDGET(bbox), 9);
448 gtk_widget_set_margin_bottom (GTK_WIDGET(bbox), 18);
449 gtk_widget_set_margin_start (GTK_WIDGET(bbox), 18);
450 gtk_widget_set_margin_end (GTK_WIDGET(bbox), 18);
451 button_ok = gtk_button_new_with_label(_(
"_OK"));
452 gtk_button_set_use_underline(GTK_BUTTON(button_ok), TRUE);
453 gtk_widget_set_can_default(button_ok, TRUE);
454 gtk_container_add (GTK_CONTAINER (bbox), button_ok);
456 button_cancel = gtk_button_new_with_label(_(
"_Cancel"));
457 gtk_button_set_use_underline(GTK_BUTTON(button_cancel), TRUE);
458 gtk_container_add (GTK_CONTAINER (bbox), button_cancel);
459 gtk_grid_attach(GTK_GRID(grid), bbox, 0, grid_row, 3, 1);
461 gtk_box_pack_start(GTK_BOX(mp), grid, TRUE, TRUE, 4);
472 if (username_entry) g_signal_connect_swapped (username_entry,
"activate", (GCallback)gtk_widget_grab_focus, password_entry);
473 g_signal_connect_swapped (password_entry,
"activate", (GCallback)gtk_widget_grab_focus, button_ok);
474 g_object_set_data(G_OBJECT(button_cancel),
btn_response_key, (
void *)GTK_RESPONSE_CANCEL);
476 g_object_set_data(G_OBJECT(button_ok),
btn_response_key, (
void *)GTK_RESPONSE_OK);
482 TRACE_CALL(__func__);
487 GtkWidget *button_ok;
488 GtkWidget *button_cancel;
489 GtkWidget *cacert_file;
490 GtkWidget *cacrl_file;
491 GtkWidget *clientcert_file;
492 GtkWidget *clientkey_file;
498 printf(
"WARNING: %s called in a subthread. This should not happen. Raising SIGINT to debug.\n", __func__);
503 grid = gtk_grid_new();
504 gtk_widget_set_halign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
505 gtk_widget_set_valign(GTK_WIDGET(grid), GTK_ALIGN_CENTER);
506 gtk_widget_show(grid);
507 gtk_grid_set_row_spacing(GTK_GRID(grid), 6);
508 gtk_grid_set_column_spacing(GTK_GRID(grid), 6);
512 widget = gtk_label_new(_(
"Enter certificate authentication files"));
513 gtk_style_context_add_class(gtk_widget_get_style_context(widget),
"title_label");
514 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
515 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_FILL);
516 gtk_widget_set_margin_top (GTK_WIDGET(widget), 18);
517 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 9);
518 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
519 gtk_widget_set_margin_end (GTK_WIDGET(widget), 18);
520 gtk_widget_show(widget);
521 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 3, 1);
524 const gchar *lbl_cacert = _(
"CA Certificate File");
525 widget = gtk_label_new(lbl_cacert);
526 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
527 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
528 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
529 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
530 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
531 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
532 gtk_widget_show(widget);
533 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
534 cacert_file = gtk_file_chooser_button_new(lbl_cacert, GTK_FILE_CHOOSER_ACTION_OPEN);
536 gtk_widget_show(cacert_file);
537 gtk_widget_set_halign(GTK_WIDGET(cacert_file), GTK_ALIGN_FILL);
538 gtk_widget_set_valign(GTK_WIDGET(cacert_file), GTK_ALIGN_FILL);
539 gtk_widget_set_margin_top (GTK_WIDGET(cacert_file), 9);
540 gtk_widget_set_margin_bottom (GTK_WIDGET(cacert_file), 3);
541 gtk_widget_set_margin_start (GTK_WIDGET(cacert_file), 6);
542 gtk_widget_set_margin_end (GTK_WIDGET(cacert_file), 18);
543 gtk_grid_attach(GTK_GRID(grid), cacert_file, 1, grid_row, 2, 1);
546 const gchar *lbl_cacrl = _(
"CA CRL File");
547 widget = gtk_label_new(lbl_cacrl);
548 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
549 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
550 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
551 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
552 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
553 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
554 gtk_widget_show(widget);
555 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
556 cacrl_file = gtk_file_chooser_button_new(lbl_cacrl, GTK_FILE_CHOOSER_ACTION_OPEN);
558 gtk_widget_show(cacrl_file);
559 gtk_widget_set_halign(GTK_WIDGET(cacrl_file), GTK_ALIGN_FILL);
560 gtk_widget_set_valign(GTK_WIDGET(cacrl_file), GTK_ALIGN_FILL);
561 gtk_widget_set_margin_top (GTK_WIDGET(cacrl_file), 9);
562 gtk_widget_set_margin_bottom (GTK_WIDGET(cacrl_file), 3);
563 gtk_widget_set_margin_start (GTK_WIDGET(cacrl_file), 6);
564 gtk_widget_set_margin_end (GTK_WIDGET(cacrl_file), 18);
565 gtk_grid_attach(GTK_GRID(grid), cacrl_file, 1, grid_row, 2, 1);
568 const gchar *lbl_clicert = _(
"Client Certificate File");
569 widget = gtk_label_new(lbl_clicert);
570 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
571 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
572 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
573 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
574 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
575 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
576 gtk_widget_show(widget);
577 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
578 clientcert_file = gtk_file_chooser_button_new(lbl_clicert, GTK_FILE_CHOOSER_ACTION_OPEN);
580 gtk_widget_show(clientcert_file);
581 gtk_widget_set_halign(GTK_WIDGET(clientcert_file), GTK_ALIGN_FILL);
582 gtk_widget_set_valign(GTK_WIDGET(clientcert_file), GTK_ALIGN_FILL);
583 gtk_widget_set_margin_top (GTK_WIDGET(clientcert_file), 9);
584 gtk_widget_set_margin_bottom (GTK_WIDGET(clientcert_file), 3);
585 gtk_widget_set_margin_start (GTK_WIDGET(clientcert_file), 6);
586 gtk_widget_set_margin_end (GTK_WIDGET(clientcert_file), 18);
587 gtk_grid_attach(GTK_GRID(grid), clientcert_file, 1, grid_row, 2, 1);
590 const gchar *lbl_clikey = _(
"Client Certificate Key");
591 widget = gtk_label_new(lbl_clikey);
592 gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
593 gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
594 gtk_widget_set_margin_top (GTK_WIDGET(widget), 9);
595 gtk_widget_set_margin_bottom (GTK_WIDGET(widget), 3);
596 gtk_widget_set_margin_start (GTK_WIDGET(widget), 18);
597 gtk_widget_set_margin_end (GTK_WIDGET(widget), 6);
598 gtk_widget_show(widget);
599 gtk_grid_attach(GTK_GRID(grid), widget, 0, grid_row, 1, 1);
600 clientkey_file = gtk_file_chooser_button_new(lbl_clikey, GTK_FILE_CHOOSER_ACTION_OPEN);
602 gtk_widget_show(clientkey_file);
603 gtk_widget_set_halign(GTK_WIDGET(clientkey_file), GTK_ALIGN_FILL);
604 gtk_widget_set_valign(GTK_WIDGET(clientkey_file), GTK_ALIGN_FILL);
605 gtk_widget_set_margin_top (GTK_WIDGET(clientkey_file), 9);
606 gtk_widget_set_margin_bottom (GTK_WIDGET(clientkey_file), 3);
607 gtk_widget_set_margin_start (GTK_WIDGET(clientkey_file), 6);
608 gtk_widget_set_margin_end (GTK_WIDGET(clientkey_file), 18);
609 gtk_grid_attach(GTK_GRID(grid), clientkey_file, 1, grid_row, 2, 1);
613 bbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
614 gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_EDGE);
615 gtk_box_set_spacing (GTK_BOX (bbox), 40);
616 gtk_widget_set_margin_top (GTK_WIDGET(bbox), 9);
617 gtk_widget_set_margin_bottom (GTK_WIDGET(bbox), 18);
618 gtk_widget_set_margin_start (GTK_WIDGET(bbox), 18);
619 gtk_widget_set_margin_end (GTK_WIDGET(bbox), 18);
620 button_ok = gtk_button_new_with_label(_(
"_OK"));
621 gtk_widget_set_can_default (button_ok, TRUE);
623 gtk_button_set_use_underline(GTK_BUTTON(button_ok), TRUE);
625 gtk_container_add (GTK_CONTAINER (bbox), button_ok);
628 button_cancel = gtk_button_new_with_label(_(
"_Cancel"));
629 gtk_button_set_use_underline(GTK_BUTTON(button_cancel), TRUE);
631 gtk_container_add (GTK_CONTAINER (bbox), button_cancel);
632 gtk_grid_attach(GTK_GRID(grid), bbox, 0, grid_row, 3, 1);
634 gtk_box_pack_start(GTK_BOX(mp), grid, TRUE, TRUE, 4);
645 g_object_set_data(G_OBJECT(button_cancel),
btn_response_key, (
void *)GTK_RESPONSE_CANCEL);
647 g_object_set_data(G_OBJECT(button_ok),
btn_response_key, (
void *)GTK_RESPONSE_OK);
654 TRACE_CALL(__func__);
658 const gchar *username;
662 priv = remmina_message_panel_get_instance_private(mp);
666 if (w && G_TYPE_CHECK_INSTANCE_TYPE(w, gtk_button_get_type()))
667 gtk_widget_grab_default(w);
674 username = gtk_entry_get_text(GTK_ENTRY(w));
675 if (username[0] != 0)
681 if (!G_TYPE_CHECK_INSTANCE_TYPE(w, gtk_entry_get_type()))
684 gtk_widget_grab_focus(w);
693 priv = remmina_message_panel_get_instance_private(mp);
695 if (priv->
w[entryid] == NULL)
697 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_entry_get_type()))
700 gtk_entry_set_text(GTK_ENTRY(priv->
w[entryid]), text != NULL ? text :
"");
705 TRACE_CALL(__func__);
711 priv = remmina_message_panel_get_instance_private(mp);
713 if (priv->
w[entryid] == NULL)
715 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_entry_get_type()))
718 return g_strdup(gtk_entry_get_text(GTK_ENTRY(priv->
w[entryid])));
723 TRACE_CALL(__func__);
729 priv = remmina_message_panel_get_instance_private(mp);
731 if (priv->
w[entryid] == NULL)
733 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_switch_get_type()))
736 gtk_switch_set_state(GTK_SWITCH(priv->
w[entryid]), state);
741 TRACE_CALL(__func__);
747 priv = remmina_message_panel_get_instance_private(mp);
749 if (priv->
w[entryid] == NULL)
751 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_switch_get_type()))
754 return gtk_switch_get_state(GTK_SWITCH(priv->
w[entryid]));
760 TRACE_CALL(__func__);
766 priv = remmina_message_panel_get_instance_private(mp);
767 if (priv->
w[entryid] == NULL)
769 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_file_chooser_button_get_type()))
772 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(priv->
w[entryid]), filename);
777 TRACE_CALL(__func__);
783 priv = remmina_message_panel_get_instance_private(mp);
785 if (priv->
w[entryid] == NULL)
787 if (!G_TYPE_CHECK_INSTANCE_TYPE(priv->
w[entryid], gtk_file_chooser_button_get_type()))
790 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]
+
Go to the documentation of this file. 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_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 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 * 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_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)
+
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 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)
+
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_message_panel_setup_progress(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_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_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)
+
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)
diff --git a/public/remmina__message__panel_8h.html b/public/remmina__message__panel_8h.html
index 702d7be0d..33906931e 100644
--- a/public/remmina__message__panel_8h.html
+++ b/public/remmina__message__panel_8h.html
@@ -271,7 +271,7 @@ Functions
@@ -301,7 +301,7 @@ Functions
@@ -331,7 +331,7 @@ Functions
@@ -367,7 +367,7 @@ Functions
@@ -403,7 +403,7 @@ Functions
@@ -439,7 +439,7 @@ Functions
@@ -459,7 +459,7 @@ Functions
@@ -479,7 +479,7 @@ Functions
@@ -509,7 +509,7 @@ Functions
@@ -563,7 +563,7 @@ Functions
@@ -599,7 +599,7 @@ Functions
@@ -641,7 +641,7 @@ Functions
@@ -683,7 +683,7 @@ Functions
@@ -725,7 +725,7 @@ Functions
diff --git a/public/remmina__message__panel_8h_source.html b/public/remmina__message__panel_8h_source.html
index 21abd74b1..92ccaf508 100644
--- a/public/remmina__message__panel_8h_source.html
+++ b/public/remmina__message__panel_8h_source.html
@@ -86,29 +86,29 @@ $(document).ready(function(){initNavTree('remmina__message__panel_8h_source.html
remmina_message_panel.h
-
Go to the documentation of this file. 43 #define REMMINA_TYPE_MESSAGE_PANEL (remmina_message_panel_get_type()) 46 struct _RemminaMessagePanelClass {
47 GtkBoxClass parent_class;
48 void (*response) (RemminaMessagePanel *mp, gint response_id);
void remmina_message_panel_field_set_string(RemminaMessagePanel *mp, int entryid, const gchar *text)
+
Go to the documentation of this file. 43 #define REMMINA_TYPE_MESSAGE_PANEL (remmina_message_panel_get_type()) 46 struct _RemminaMessagePanelClass {
47 GtkBoxClass parent_class;
48 void (*response) (RemminaMessagePanel *mp, gint response_id);
void remmina_message_panel_field_set_string(RemminaMessagePanel *mp, int entryid, const gchar *text)
-
void remmina_message_panel_setup_question(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
+
void remmina_message_panel_setup_question(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_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)
-
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_message_panel_focus_auth_entry(RemminaMessagePanel *mp)
+
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)
+
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_message_panel_focus_auth_entry(RemminaMessagePanel *mp)
-
void remmina_message_panel_response(RemminaMessagePanel *mp, gint response_id)
+
void remmina_message_panel_response(RemminaMessagePanel *mp, gint response_id)
-
RemminaMessagePanel * remmina_message_panel_new(void)
-
void remmina_message_panel_field_set_switch(RemminaMessagePanel *mp, int entryid, gboolean state)
+
RemminaMessagePanel * remmina_message_panel_new(void)
+
void remmina_message_panel_field_set_switch(RemminaMessagePanel *mp, int entryid, gboolean state)
-
gchar * remmina_message_panel_field_get_filename(RemminaMessagePanel *mp, int entryid)
+
gchar * remmina_message_panel_field_get_filename(RemminaMessagePanel *mp, int entryid)
void(* RemminaMessagePanelCallback)(void *user_data, int button)
-
void remmina_message_panel_setup_auth_x509(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
+
void remmina_message_panel_setup_auth_x509(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
-
void remmina_message_panel_field_set_filename(RemminaMessagePanel *mp, int entryid, const gchar *filename)
-
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_field_set_filename(RemminaMessagePanel *mp, int entryid, const gchar *filename)
+
void remmina_message_panel_setup_auth(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data, const gchar *title, const gchar *password_prompt, unsigned flags)
G_DECLARE_DERIVABLE_TYPE(RemminaMessagePanel, remmina_message_panel, REMMINA, MESSAGE_PANEL, GtkBox) struct _RemminaMessagePanelClass
diff --git a/public/remmina__mpchange_8c_source.html b/public/remmina__mpchange_8c_source.html
index 5d47cb401..4cc9d8541 100644
--- a/public/remmina__mpchange_8c_source.html
+++ b/public/remmina__mpchange_8c_source.html
@@ -93,7 +93,7 @@ $(document).ready(function(){initNavTree('remmina__mpchange_8c_source.html','');
const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)
guint searchentrychange_timeout_source_id
static void remmina_mpchange_stopsearch(GtkSearchEntry *entry, gpointer user_data)
-
GtkWindow * remmina_main_get_window()
+
GtkWindow * remmina_main_get_window()
GtkEntry * eGatewayPassword2
diff --git a/public/remmina__plugin__manager_8c_source.html b/public/remmina__plugin__manager_8c_source.html
index 1eed65f04..ce304aa72 100644
--- a/public/remmina__plugin__manager_8c_source.html
+++ b/public/remmina__plugin__manager_8c_source.html
@@ -101,7 +101,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
static void htdestroy(gpointer ht)
-
GtkWindow * remmina_main_get_window()
+
GtkWindow * remmina_main_get_window()
gboolean remmina_plugin_native_load(RemminaPluginService *service, const char *name)
@@ -173,7 +173,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
RemminaPluginService remmina_plugin_manager_service
static const gchar * remmina_plugin_type_name[]
-
void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)
+
void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)
RemminaProtocolFeatureType type
diff --git a/public/remmina__protocol__widget_8c_source.html b/public/remmina__protocol__widget_8c_source.html
index ec2ac22e2..ec769c217 100644
--- a/public/remmina__protocol__widget_8c_source.html
+++ b/public/remmina__protocol__widget_8c_source.html
@@ -116,14 +116,14 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
gboolean remmina_ssh_tunnel_reverse(RemminaSSHTunnel *tunnel, gint port, gint local_port)
-
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_auth(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data, const gchar *title, const gchar *password_prompt, unsigned flags)
void(* call_feature)(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)
-
void remmina_message_panel_setup_question(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
+
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)
+
gchar * remmina_message_panel_field_get_filename(RemminaMessagePanel *mp, int entryid)
@@ -152,7 +152,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
gpointer destroy_func_callback_data
RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)
GtkWidget * rcw_open_from_file_full(RemminaFile *remminafile, GCallback disconnect_cb, gpointer data, guint *handler)
-
void remmina_message_panel_setup_auth_x509(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
+
void remmina_message_panel_setup_auth_x509(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
@@ -193,7 +193,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
gboolean(* open_connection)(RemminaProtocolWidget *gp)
-
void remmina_message_panel_field_set_string(RemminaMessagePanel *mp, int entryid, const gchar *text)
+
void remmina_message_panel_field_set_string(RemminaMessagePanel *mp, int entryid, const gchar *text)
@@ -223,7 +223,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
-
void remmina_message_panel_field_set_filename(RemminaMessagePanel *mp, int entryid, const gchar *filename)
+
void remmina_message_panel_field_set_filename(RemminaMessagePanel *mp, int entryid, const gchar *filename)
GtkWindow * rcw_get_gtkwindow(RemminaConnectionObject *cnnobj)
gboolean remmina_masterthread_exec_is_main_thread()
@@ -273,7 +273,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
-
void remmina_message_panel_field_set_switch(RemminaMessagePanel *mp, int entryid, gboolean state)
+
void remmina_message_panel_field_set_switch(RemminaMessagePanel *mp, int entryid, gboolean state)
@@ -305,7 +305,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
GtkWidget * rcw_get_gtkviewport(RemminaConnectionObject *cnnobj)
void(* RemminaMessagePanelCallback)(void *user_data, int button)
-
gchar * remmina_message_panel_field_get_string(RemminaMessagePanel *mp, int entryid)
+
gchar * remmina_message_panel_field_get_string(RemminaMessagePanel *mp, int entryid)
RemminaTypeHint opt2_type_hint
@@ -314,7 +314,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
-
void remmina_message_panel_setup_progress(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
+
void remmina_message_panel_setup_progress(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)
@@ -356,7 +356,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
gboolean(* get_plugin_screenshot)(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)
-
gboolean remmina_message_panel_field_get_switch_state(RemminaMessagePanel *mp, int entryid)
+
gboolean remmina_message_panel_field_get_switch_state(RemminaMessagePanel *mp, int entryid)
void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)
void remmina_file_save(RemminaFile *remminafile)
@@ -383,9 +383,9 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
gboolean(* RemminaXPortTunnelInitFunc)(RemminaProtocolWidget *gp, gint remotedisplay, const gchar *server, gint port)
-
void remmina_message_panel_response(RemminaMessagePanel *mp, gint response_id)
+
void remmina_message_panel_response(RemminaMessagePanel *mp, gint response_id)
-
RemminaMessagePanel * remmina_message_panel_new()
+
RemminaMessagePanel * remmina_message_panel_new()
RemminaTypeHint opt3_type_hint
RemminaSSHTunnelCallback connect_func
diff --git a/public/search/all_12.js b/public/search/all_12.js
index ef0c69443..2ce78e11b 100644
--- a/public/search/all_12.js
+++ b/public/search/all_12.js
@@ -408,7 +408,6 @@ var searchData=
['remmina_5ffile_5fset_5fstring',['remmina_file_set_string',['../remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954',1,'remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value): remmina_file.c'],['../remmina__file_8h.html#a85ca1ca2d0bf9ef29e490c6f4527a954',1,'remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value): remmina_file.c']]],
['remmina_5ffile_5fstate_5flast_5fsuccess',['remmina_file_state_last_success',['../remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8',1,'remmina_file_state_last_success(RemminaFile *remminafile): remmina_file.c'],['../remmina__file_8h.html#a493ffa77b862ff3bad9ea951592715a8',1,'remmina_file_state_last_success(RemminaFile *remminafile): remmina_file.c']]],
['remmina_5ffile_5fstore_5fsecret_5fplugin_5fpassword',['remmina_file_store_secret_plugin_password',['../remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5',1,'remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value): remmina_file.c'],['../remmina__file_8h.html#a3be28ff7f5a9b44dc47f92b883a85ac5',1,'remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value): remmina_file.c']]],
- ['remmina_5ffile_5ftoggle_5fpassword_5fview',['remmina_file_toggle_password_view',['../remmina__file__editor_8c.html#a65b38bc13546d3d890624a79b080ffe9',1,'remmina_file_editor.c']]],
['remmina_5ffile_5ftouch',['remmina_file_touch',['../remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c',1,'remmina_file_touch(RemminaFile *remminafile): remmina_file.c'],['../remmina__file_8h.html#a3d19095f74e9b7c92d74f11bd5a39a8c',1,'remmina_file_touch(RemminaFile *remminafile): remmina_file.c']]],
['remmina_5ffile_5funsave_5fpasswords',['remmina_file_unsave_passwords',['../remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014',1,'remmina_file_unsave_passwords(RemminaFile *remminafile): remmina_file.c'],['../remmina__file_8h.html#a503e53fe49430a5ed310c342c946c014',1,'remmina_file_unsave_passwords(RemminaFile *remminafile): remmina_file.c']]],
['remmina_5ffilezilla_5fsftp_2esh',['remmina_filezilla_sftp.sh',['../remmina__filezilla__sftp_8sh.html',1,'']]],
@@ -619,6 +618,7 @@ var searchData=
['remmina_5fmain_5fshow_5fdialog',['remmina_main_show_dialog',['../remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589',1,'remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message): remmina_main.c'],['../remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589',1,'remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message): remmina_main.c']]],
['remmina_5fmain_5fshow_5fsnap_5fwelcome',['remmina_main_show_snap_welcome',['../remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5',1,'remmina_main.c']]],
['remmina_5fmain_5fshow_5fwarning_5fdialog',['remmina_main_show_warning_dialog',['../remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7',1,'remmina_main_show_warning_dialog(const gchar *message): remmina_main.c'],['../remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7',1,'remmina_main_show_warning_dialog(const gchar *message): remmina_main.c']]],
+ ['remmina_5fmain_5ftoggle_5fpassword_5fview',['remmina_main_toggle_password_view',['../remmina__main_8c.html#aac3fe305e456dfa7bb55aa2f057e8cb0',1,'remmina_main_toggle_password_view(GtkWidget *widget, gpointer data): remmina_main.c'],['../remmina__main_8h.html#aac3fe305e456dfa7bb55aa2f057e8cb0',1,'remmina_main_toggle_password_view(GtkWidget *widget, gpointer data): remmina_main.c']]],
['remmina_5fmain_5ftree_5frow_5factivated',['remmina_main_tree_row_activated',['../remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c',1,'remmina_main.c']]],
['remmina_5fmain_5fupdate_5ffile_5fdatetime',['remmina_main_update_file_datetime',['../remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a',1,'remmina_main_update_file_datetime(RemminaFile *file): remmina_main.c'],['../remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a',1,'remmina_main_update_file_datetime(RemminaFile *file): remmina_main.c']]],
['remmina_5fmarshal_5fboolean_5f_5fint',['remmina_marshal_BOOLEAN__INT',['../remmina__marshals_8c.html#ae155b6ae758a6b0ef3d89a4458feec99',1,'remmina_marshal_BOOLEAN__INT(GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data): remmina_marshals.c'],['../remmina__marshals_8h.html#ab614355cdc97644b6505743b34a78384',1,'remmina_marshal_BOOLEAN__INT(GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data): remmina_marshals.h']]],
diff --git a/public/search/functions_11.js b/public/search/functions_11.js
index d81c6f61e..42d488647 100644
--- a/public/search/functions_11.js
+++ b/public/search/functions_11.js
@@ -283,7 +283,6 @@ var searchData=
['remmina_5ffile_5fset_5fstring',['remmina_file_set_string',['../remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954',1,'remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value): remmina_file.c'],['../remmina__file_8h.html#a85ca1ca2d0bf9ef29e490c6f4527a954',1,'remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value): remmina_file.c']]],
['remmina_5ffile_5fstate_5flast_5fsuccess',['remmina_file_state_last_success',['../remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8',1,'remmina_file_state_last_success(RemminaFile *remminafile): remmina_file.c'],['../remmina__file_8h.html#a493ffa77b862ff3bad9ea951592715a8',1,'remmina_file_state_last_success(RemminaFile *remminafile): remmina_file.c']]],
['remmina_5ffile_5fstore_5fsecret_5fplugin_5fpassword',['remmina_file_store_secret_plugin_password',['../remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5',1,'remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value): remmina_file.c'],['../remmina__file_8h.html#a3be28ff7f5a9b44dc47f92b883a85ac5',1,'remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value): remmina_file.c']]],
- ['remmina_5ffile_5ftoggle_5fpassword_5fview',['remmina_file_toggle_password_view',['../remmina__file__editor_8c.html#a65b38bc13546d3d890624a79b080ffe9',1,'remmina_file_editor.c']]],
['remmina_5ffile_5ftouch',['remmina_file_touch',['../remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c',1,'remmina_file_touch(RemminaFile *remminafile): remmina_file.c'],['../remmina__file_8h.html#a3d19095f74e9b7c92d74f11bd5a39a8c',1,'remmina_file_touch(RemminaFile *remminafile): remmina_file.c']]],
['remmina_5ffile_5funsave_5fpasswords',['remmina_file_unsave_passwords',['../remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014',1,'remmina_file_unsave_passwords(RemminaFile *remminafile): remmina_file.c'],['../remmina__file_8h.html#a503e53fe49430a5ed310c342c946c014',1,'remmina_file_unsave_passwords(RemminaFile *remminafile): remmina_file.c']]],
['remmina_5fftp_5fclient_5faction_5fdelete',['remmina_ftp_client_action_delete',['../remmina__ftp__client_8c.html#a5a433db0f6129e0bc4ec2fdc8f7588f6',1,'remmina_ftp_client.c']]],
@@ -445,6 +444,7 @@ var searchData=
['remmina_5fmain_5fshow_5fdialog',['remmina_main_show_dialog',['../remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589',1,'remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message): remmina_main.c'],['../remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589',1,'remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message): remmina_main.c']]],
['remmina_5fmain_5fshow_5fsnap_5fwelcome',['remmina_main_show_snap_welcome',['../remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5',1,'remmina_main.c']]],
['remmina_5fmain_5fshow_5fwarning_5fdialog',['remmina_main_show_warning_dialog',['../remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7',1,'remmina_main_show_warning_dialog(const gchar *message): remmina_main.c'],['../remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7',1,'remmina_main_show_warning_dialog(const gchar *message): remmina_main.c']]],
+ ['remmina_5fmain_5ftoggle_5fpassword_5fview',['remmina_main_toggle_password_view',['../remmina__main_8c.html#aac3fe305e456dfa7bb55aa2f057e8cb0',1,'remmina_main_toggle_password_view(GtkWidget *widget, gpointer data): remmina_main.c'],['../remmina__main_8h.html#aac3fe305e456dfa7bb55aa2f057e8cb0',1,'remmina_main_toggle_password_view(GtkWidget *widget, gpointer data): remmina_main.c']]],
['remmina_5fmain_5ftree_5frow_5factivated',['remmina_main_tree_row_activated',['../remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c',1,'remmina_main.c']]],
['remmina_5fmain_5fupdate_5ffile_5fdatetime',['remmina_main_update_file_datetime',['../remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a',1,'remmina_main_update_file_datetime(RemminaFile *file): remmina_main.c'],['../remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a',1,'remmina_main_update_file_datetime(RemminaFile *file): remmina_main.c']]],
['remmina_5fmarshal_5fboolean_5f_5fint',['remmina_marshal_BOOLEAN__INT',['../remmina__marshals_8c.html#ae155b6ae758a6b0ef3d89a4458feec99',1,'remmina_marshal_BOOLEAN__INT(GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data): remmina_marshals.c'],['../remmina__marshals_8h.html#ab614355cdc97644b6505743b34a78384',1,'remmina_marshal_BOOLEAN__INT(GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data): remmina_marshals.h']]],
diff --git a/public/struct_remmina_message_panel_private.html b/public/struct_remmina_message_panel_private.html
index c1921f01e..69decd946 100644
--- a/public/struct_remmina_message_panel_private.html
+++ b/public/struct_remmina_message_panel_private.html
@@ -100,7 +100,7 @@ Data Fields
-
Definition at line 46 of file remmina_message_panel.c.
+
Definition at line 47 of file remmina_message_panel.c.
◆ response_callback
@@ -114,7 +114,7 @@ Data Fields
@@ -130,7 +130,7 @@ Data Fields
@@ -146,7 +146,7 @@ Data Fields
--
cgit v1.2.3