38 #include <glib/gi18n.h> 41 #if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE) 57 #define GET_OBJECT(object_name) gtk_builder_get_object(remmina_pref_dialog->builder, object_name) 65 g_return_if_fail(GTK_IS_BUTTON(widget));
68 if (arguments->
response != GTK_RESPONSE_CANCEL && arguments->
response != GTK_RESPONSE_DELETE_EVENT) {
70 gtk_button_set_label(GTK_BUTTON(widget), val);
84 gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog->
dialog));
85 gtk_dialog_run(dialog);
88 gtk_widget_destroy(GTK_WIDGET(dialog));
102 sourcepath = gtk_file_chooser_get_filename(remmina_pref_dialog->
button_term_cs);
103 source = g_file_new_for_path(sourcepath);
105 remmina_dir = g_build_path(
"/", g_get_user_config_dir(),
"remmina", NULL);
107 destpath = g_strdup_printf(
"%s/remmina.colors", remmina_dir);
108 destination = g_file_new_for_path(destpath);
110 if (g_file_test(sourcepath, G_FILE_TEST_IS_REGULAR)) {
113 G_FILE_COPY_OVERWRITE,
121 g_object_unref(source);
126 TRACE_CALL(__func__);
130 dialog = GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(remmina_pref_dialog->
dialog),
131 GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
132 _(
"Recent lists cleared.")));
133 gtk_dialog_run(dialog);
134 gtk_widget_destroy(GTK_WIDGET(dialog));
140 TRACE_CALL(__func__);
144 gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog->
dialog));
145 gtk_dialog_run(dialog);
148 gtk_widget_destroy(GTK_WIDGET(dialog));
153 TRACE_CALL(__func__);
154 GtkCssProvider *provider;
156 const gchar *password;
157 const gchar *repassword;
159 provider = gtk_css_provider_new();
163 if (g_strcmp0(password, repassword) == 0) {
164 color = g_strdup(
"green");
166 color = g_strdup(
"red");
169 if (repassword == NULL || repassword[0] ==
'\0')
170 color = g_strdup(
"inherit");
172 gtk_css_provider_load_from_data(provider,
174 ".unlock_repassword {\n" 179 gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
180 GTK_STYLE_PROVIDER(provider),
181 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
184 g_object_unref(provider);
190 TRACE_CALL(__func__);
191 gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog->
dialog));
196 TRACE_CALL(__func__);
199 gboolean rebuild_remmina_icon = FALSE;
210 #if SODIUM_VERSION_INT >= 90200 246 #if SODIUM_VERSION_INT >= 90200 267 rebuild_remmina_icon = TRUE;
273 rebuild_remmina_icon = TRUE;
282 if (rebuild_remmina_icon) {
311 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_cursor), &color);
313 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color0), &color);
315 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color1), &color);
317 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color2), &color);
319 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color3), &color);
321 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color4), &color);
323 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color5), &color);
325 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color6), &color);
327 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color7), &color);
329 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color8), &color);
331 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color9), &color);
333 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color10), &color);
335 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color11), &color);
337 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color12), &color);
339 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color13), &color);
341 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color14), &color);
343 gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color15), &color);
353 remmina_pref_dialog->
dialog = NULL;
358 TRACE_CALL(__func__);
365 widget = gtk_label_new(pref_plugin->
pref_label);
366 gtk_widget_show(widget);
368 vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
369 gtk_widget_show(vbox);
370 gtk_notebook_append_page(GTK_NOTEBOOK(remmina_pref_dialog->
notebook_preferences), vbox, widget);
373 gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, FALSE, 0);
380 TRACE_CALL(__func__);
381 gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->
fontbutton_terminal_font), !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)));
386 TRACE_CALL(__func__);
389 b = !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
400 gtk_button_set_label(button, val);
407 TRACE_CALL(__func__);
411 #if !defined (HAVE_LIBSSH) || !defined (HAVE_LIBVTE) 415 #if !defined (HAVE_LIBVTE) 416 align = GTK_WIDGET(GET_OBJECT(
"alignment_terminal"));
417 gtk_widget_set_sensitive(align, FALSE);
420 #if !defined (HAVE_LIBSSH) 421 align = GTK_WIDGET(GET_OBJECT(
"alignment_ssh"));
422 gtk_widget_set_sensitive(align, FALSE);
425 gtk_dialog_set_default_response(GTK_DIALOG(remmina_pref_dialog->
dialog), GTK_RESPONSE_CLOSE);
428 #if SODIUM_VERSION_INT >= 90200 436 gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->
unlock_password), TRUE);
437 gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->
unlock_repassword), TRUE);
438 gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->
unlock_timeout), TRUE);
444 gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->
unlock_password), FALSE);
445 gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->
unlock_repassword), FALSE);
446 gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->
unlock_timeout), FALSE);
511 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_cursor), &color);
514 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color0), &color);
516 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color1), &color);
518 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color2), &color);
520 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color3), &color);
522 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color4), &color);
524 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color5), &color);
526 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color6), &color);
528 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color7), &color);
530 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color8), &color);
532 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color9), &color);
534 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color10), &color);
536 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color11), &color);
538 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color12), &color);
540 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color13), &color);
542 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color14), &color);
544 gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog->
colorbutton_color15), &color);
545 #if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE) 546 #if !VTE_CHECK_VERSION(0, 38, 0) 571 #if SODIUM_VERSION_INT >= 90200 608 g_object_set_data(G_OBJECT(remmina_pref_dialog->
dialog),
"tag",
"remmina-pref-dialog");
615 TRACE_CALL(__func__);
621 remmina_pref_dialog->
dialog = GTK_DIALOG(gtk_builder_get_object(remmina_pref_dialog->
builder,
"RemminaPrefDialog"));
623 gtk_window_set_transient_for(GTK_WINDOW(remmina_pref_dialog->
dialog), parent);
634 remmina_pref_dialog->
unlock_password = GTK_ENTRY(GET_OBJECT(
"unlock_password"));
635 remmina_pref_dialog->
unlock_repassword = GTK_ENTRY(GET_OBJECT(
"unlock_repassword"));
657 remmina_pref_dialog->
unlock_timeout = GTK_ENTRY(GET_OBJECT(
"unlock_timeout"));
690 remmina_pref_dialog->
colorbutton_cursor = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_cursor"));
692 remmina_pref_dialog->
colorbutton_color0 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color0"));
693 remmina_pref_dialog->
colorbutton_color1 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color1"));
694 remmina_pref_dialog->
colorbutton_color2 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color2"));
695 remmina_pref_dialog->
colorbutton_color3 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color3"));
696 remmina_pref_dialog->
colorbutton_color4 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color4"));
697 remmina_pref_dialog->
colorbutton_color5 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color5"));
698 remmina_pref_dialog->
colorbutton_color6 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color6"));
699 remmina_pref_dialog->
colorbutton_color7 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color7"));
701 remmina_pref_dialog->
colorbutton_color8 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color8"));
702 remmina_pref_dialog->
colorbutton_color9 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color9"));
703 remmina_pref_dialog->
colorbutton_color10 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color10"));
704 remmina_pref_dialog->
colorbutton_color11 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color11"));
705 remmina_pref_dialog->
colorbutton_color12 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color12"));
706 remmina_pref_dialog->
colorbutton_color13 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color13"));
707 remmina_pref_dialog->
colorbutton_color14 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color14"));
708 remmina_pref_dialog->
colorbutton_color15 = GTK_COLOR_BUTTON(GET_OBJECT(
"colorbutton_color15"));
709 #if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE) 710 #if VTE_CHECK_VERSION(0, 38, 0) 711 remmina_pref_dialog->
button_term_cs = GTK_FILE_CHOOSER(GET_OBJECT(
"button_term_cs"));
712 gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(remmina_pref_dialog->
button_term_cs), REMMINA_RUNTIME_TERM_CS_DIR);
717 gtk_builder_connect_signals(remmina_pref_dialog->
builder, NULL);
723 return remmina_pref_dialog->
dialog;
728 if (!remmina_pref_dialog)
730 return remmina_pref_dialog->
dialog;
guint shortcutkey_fullscreen
GtkDialog * remmina_string_list_new(gboolean two_columns, const gchar *fields_separator)
GtkButton * button_keyboard_select_all
static gboolean remmina_pref_dialog_add_pref_plugin(gchar *name, RemminaPlugin *plugin, gpointer user_data)
GtkColorButton * colorbutton_color2
guint shortcutkey_minimize
GtkColorButton * colorbutton_color14
GtkButton * button_keyboard_grab_keyboard
RemminaKeyChooserArguments * remmina_key_chooser_new(GtkWindow *parent_window, gboolean use_modifiers)
static void remmina_pref_dialog_set_button_label(GtkButton *button, guint keyval)
GtkComboBox * comboboxtext_appearance_fullscreen_toolbar_visibility
void remmina_string_list_set_validation_func(RemminaStringListValidationFunc func)
GtkButton * button_keyboard_paste
GtkButton * button_options_recent_items_clear
GtkEntry * entry_options_screenshot_name
guint shortcutkey_screenshot
guint shortcutkey_prevtab
static void remmina_pref_dialog_init(void)
void remmina_plugin_manager_for_each_plugin(RemminaPluginType type, RemminaPluginFunc func, gpointer data)
GtkEntry * entry_options_file_name
GtkCheckButton * checkbutton_appearance_fullscreen_on_auto
GtkLabel * label_terminal_foreground
GtkButton * button_keyboard_fullscreen
GtkWidget *(* get_pref_body)(void)
GtkCheckButton * checkbutton_options_save_settings
GtkButton * button_keyboard_toolbar
GtkButton * button_keyboard_disconnect
GtkEntry * entry_options_recent_items
guint vte_shortcutkey_copy
GtkEntry * entry_options_ssh_tcp_usrtimeout
void remmina_pref_dialog_disable_tray_icon_on_toggled(GtkWidget *widget, RemminaPrefDialog *dialog)
gboolean remmina_public_resolution_validation_func(const gchar *new_str, gchar **error)
GtkBuilder * remmina_public_gtk_builder_new_from_file(gchar *filename)
GtkSwitch * switch_terminal_bold
guint shortcutkey_autofit
GtkColorButton * colorbutton_color6
void remmina_icon_populate_menu(void)
GtkLabel * label_terminal_normal_colors
gboolean use_master_password
GtkSwitch * switch_options_remember_last_view_mode
GtkFontButton * fontbutton_terminal_font
GtkColorButton * colorbutton_color3
GtkColorButton * colorbutton_color15
gboolean deny_screenshot_clipboard
guint vte_shortcutkey_select_all
GtkCheckButton * checkbutton_appearance_hide_searchbar
GtkCheckButton * checkbutton_appearance_hide_toolbar
void remmina_pref_on_dialog_destroy(GtkWidget *widget, gpointer user_data)
void remmina_pref_on_color_scheme_selected(GtkWidget *widget, gpointer user_data)
GtkButton * button_keyboard_copy
GtkEntry * entry_options_ssh_tcp_keepintvl
GtkEntry * entry_options_ssh_port
gboolean vte_allow_bold_text
GtkFileChooser * filechooserbutton_options_screenshots_path
GtkEntry * entry_options_ssh_tcp_keepidle
gboolean disable_tray_icon
GtkEntry * entry_scrollback_lines
GtkColorButton * colorbutton_color4
void remmina_pref_dialog_on_key_chooser(GtkWidget *widget, gpointer user_data)
const gchar * screenshot_path
void remmina_icon_init(void)
GtkButton * button_keyboard_screenshot
GtkButton * button_keyboard_viewonly
GtkCheckButton * checkbutton_applet_new_connection_on_top
GtkSwitch * switch_terminal_font_system
GtkColorButton * colorbutton_color13
GtkColorButton * colorbutton_color5
GtkEntry * entry_options_ssh_tcp_keepcnt
GtkNotebook * notebook_preferences
const gchar * unlock_password
guint vte_shortcutkey_paste
GtkEntry * unlock_timeout
gchar * remmina_sodium_pwhash_str(const gchar *pass)
guint shortcutkey_disconnect
GtkEntry * unlock_password
GtkButton * button_keyboard_switch_tab_left
void remmina_pref_dialog_on_close_clicked(GtkWidget *widget, RemminaPrefDialog *dialog)
GtkCheckButton * checkbutton_applet_start_in_tray
GtkButton * button_keyboard_auto_fit
GtkLabel * label_terminal_background
GtkFileChooser * button_term_cs
GtkCheckButton * checkbutton_applet_light_tray
GtkColorButton * colorbutton_color0
GtkComboBox * comboboxtext_options_scale_quality
GtkEntry * entry_options_scroll
GtkCheckButton * checkbutton_appearance_show_tabs
const gchar * unlock_repassword
gboolean remmina_icon_is_autostart(void)
GtkEntry * unlock_repassword
GtkColorButton * colorbutton_foreground
gboolean periodic_usage_stats_permitted
static RemminaPrefDialog * remmina_pref_dialog
GtkColorButton * colorbutton_color11
GtkButton * button_keyboard_host_key
void remmina_string_list_set_text(const gchar *text, const gboolean clear_data)
void remmina_pref_clear_recent(void)
GtkComboBox * comboboxtext_appearance_tab_interface
guint shortcutkey_nexttab
gboolean applet_hide_count
GtkCheckButton * checkbutton_applet_disable_tray
GtkComboBox * comboboxtext_options_ssh_loglevel
void remmina_prefdiag_unlock_repwd_on_changed(GtkEditable *editable, RemminaPrefDialog *dialog)
void remmina_string_list_set_titles(gchar *title1, gchar *title2)
GtkLabel * label_terminal_cursor_color
void remmina_pref_dialog_vte_font_on_toggled(GtkWidget *widget, RemminaPrefDialog *dialog)
const gchar * remmina_file_name
void remmina_pref_init(void)
guint shortcutkey_toolbar
void remmina_pref_on_button_resolutions_clicked(GtkWidget *widget, gpointer user_data)
GtkComboBox * comboboxtext_options_double_click
void remmina_pref_on_button_keystrokes_clicked(GtkWidget *widget, gpointer user_data)
gboolean remmina_pref_save(void)
gboolean applet_new_ontop
const gchar * screenshot_name
GtkButton * button_keyboard_minimize
gboolean hide_connection_toolbar
GtkDialog * remmina_pref_dialog_get_dialog()
GtkCheckButton * checkbutton_options_ssh_parseconfig
const gchar * datadir_path
GtkSwitch * switch_options_deny_screenshot_clipboard
void remmina_pref_dialog_clear_recent(GtkWidget *widget, gpointer user_data)
GtkCheckButton * checkbutton_applet_hide_totals
GtkColorButton * colorbutton_color10
GtkButton * button_keyboard_switch_tab_right
GtkComboBox * comboboxtext_appearance_view_mode
GtkButton * button_keyboard_scaled
GtkDialog * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)
GtkColorButton * colorbutton_color8
GtkSwitch * switch_permit_send_stats
GtkColorButton * colorbutton_background
GtkSwitch * switch_security_use_master_password
GtkColorButton * colorbutton_cursor
GtkColorButton * colorbutton_color7
void remmina_icon_set_autostart(gboolean autostart)
RemminaColorPref color_pref
guint shortcutkey_viewonly
RemminaPrefDialogPriv * priv
gboolean fullscreen_on_auto
GtkColorButton * colorbutton_color9
GtkLabel * label_terminal_bright_colors
gint fullscreen_toolbar_visibility
GtkColorButton * colorbutton_color12
GtkFileChooser * filechooserbutton_options_datadir_path
GtkColorButton * colorbutton_color1
guint remmina_key_chooser_get_keyval(const gchar *value)
gchar * remmina_key_chooser_get_value(guint keyval, guint state)
gchar * remmina_string_list_get_text(void)