#include #include "dialogs.h" typedef enum lvl { NOT_USED = 0, NEVER, SUPPORTED, PREFERED, REQUIRED } TLevel; gchar *sig_level_texts[] = { "Do not use signature level", "Level 0 - never", "Level 1 - supported", "Level 2 - prefered", "Level 3 - required" }; void save_options_to_cmdparams() { gint tmp; set_parameter_text ((options.entry_charset), &cmd_params.charset); set_parameter_text ((options.entry_codepage), &cmd_params.codepage); set_parameter_text ((options.entry_dmode), &cmd_params.dmode); set_parameter_text ((options.entry_fmode), &cmd_params.fmode); set_parameter_text ((options.entry_gid), &cmd_params.gid); set_parameter_text ((options.entry_retrycount), &cmd_params.retry_count); set_parameter_text ((options.entry_timeout), &cmd_params.time_out); set_parameter_text ((options.entry_uid), &cmd_params.uid); set_parameter_text ((options.entry_volume), &cmd_params.volume); /* Checkboxes */ set_parameter_bool ((options.check_b), &cmd_params.b); set_parameter_bool ((options.check_C), &cmd_params.C); set_parameter_bool ((options.check_m), &cmd_params.m); set_parameter_bool ((options.check_s), &cmd_params.s); tmp = gtk_combo_box_get_active (GTK_COMBO_BOX (options.combo_signature)); /* ComboBox */ switch(tmp) { case NEVER: g_free(cmd_params.level); cmd_params.level = g_strdup("0"); break; case SUPPORTED: g_free(cmd_params.level); cmd_params.level = g_strdup("1"); break; case PREFERED: g_free(cmd_params.level); cmd_params.level = g_strdup("2"); break; case REQUIRED: g_free(cmd_params.level); cmd_params.level = g_strdup("3"); break; default: if(cmd_params.level != NULL) { g_free(cmd_params.level); cmd_params.level = NULL; } break; } } static void set_options_from_cmdparams () { if(cmd_params.charset != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_charset), cmd_params.charset); if(cmd_params.codepage != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_codepage), cmd_params.codepage); if(cmd_params.dmode != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_dmode), cmd_params.dmode); if(cmd_params.fmode != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_fmode), cmd_params.fmode); if(cmd_params.gid != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_gid), cmd_params.gid); if(cmd_params.retry_count != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_retrycount), cmd_params.retry_count); if(cmd_params.time_out != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_timeout), cmd_params.time_out); if(cmd_params.uid != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_uid), cmd_params.uid); if(cmd_params.volume != NULL) gtk_entry_set_text(GTK_ENTRY(options.entry_volume), cmd_params.volume); /* Checkboxes */ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options.check_b), cmd_params.b); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options.check_C), cmd_params.C); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options.check_m), cmd_params.m); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options.check_s), cmd_params.s); /* ComboBox */ if(cmd_params.level != NULL) { if(cmd_params.level[0] == '0') gtk_combo_box_set_active (GTK_COMBO_BOX (options.combo_signature), 1); else if(cmd_params.level[0] == '1') gtk_combo_box_set_active (GTK_COMBO_BOX (options.combo_signature), 2); else if(cmd_params.level[0] == '2') gtk_combo_box_set_active (GTK_COMBO_BOX (options.combo_signature), 3); else if(cmd_params.level[0] == '3') gtk_combo_box_set_active (GTK_COMBO_BOX (options.combo_signature), 4); } else gtk_combo_box_set_active (GTK_COMBO_BOX (options.combo_signature), 0); } /* Function to open a dialog box displaying the message provided. */ void options_dialog () { GtkWidget *label, *content_area, *halign, *hsep, *table; gint result, row; row = 0; /* Create the widgets */ options.dialog = gtk_dialog_new_with_buttons ("Options", GTK_WINDOW (gui.win), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); content_area = gtk_dialog_get_content_area (GTK_DIALOG (options.dialog)); /* Page OTIONS */ table = gtk_table_new (21, 2, FALSE); gtk_container_add (GTK_CONTAINER (content_area), table); label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (label), "Set ncpmount options:"); gtk_table_attach(GTK_TABLE(table), label, 0, 2, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); row++; /* ----- */ hsep = gtk_hseparator_new(); gtk_table_attach (GTK_TABLE(table), hsep, 0, 2, row, row+1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 6, 6); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Codepage [-p]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); options.entry_codepage = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_codepage, 1, 2, row, row+1); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Charset [-y]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL, GTK_FILL | GTK_EXPAND, 6, 0); options.entry_charset = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_charset, 1, 2, row, row+1); row++; /* ----- */ hsep = gtk_hseparator_new(); gtk_table_attach (GTK_TABLE(table), hsep, 0, 2,row, row+1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 6, 6); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Signature level [-i]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL, GTK_FILL | GTK_EXPAND, 6, 0); options.combo_signature = gtk_combo_box_new_text(); gtk_combo_box_append_text(GTK_COMBO_BOX(options.combo_signature), sig_level_texts[NOT_USED]); gtk_combo_box_append_text(GTK_COMBO_BOX(options.combo_signature), sig_level_texts[NEVER]); gtk_combo_box_append_text(GTK_COMBO_BOX(options.combo_signature), sig_level_texts[SUPPORTED]); gtk_combo_box_append_text(GTK_COMBO_BOX(options.combo_signature), sig_level_texts[PREFERED]); gtk_combo_box_append_text(GTK_COMBO_BOX(options.combo_signature), sig_level_texts[REQUIRED]); gtk_combo_box_set_active(GTK_COMBO_BOX(options.combo_signature), 0); gtk_table_attach_defaults (GTK_TABLE (table), options.combo_signature, 1, 2, row, row+1); row++; /* ----- */ hsep = gtk_hseparator_new(); gtk_table_attach (GTK_TABLE(table), hsep, 0, 2, row, row+1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 6, 6); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Volume to mount [-V]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); options.entry_volume = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_volume, 1, 2, row, row+1); row++; /* ----- */ hsep = gtk_hseparator_new(); gtk_table_attach (GTK_TABLE(table), hsep, 0, 2, row, row+1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 6, 6); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Mounted files uid [-u]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); options.entry_uid = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_uid , 1, 2, row, row+1); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Mounted files gid [-g]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); options.entry_gid = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_gid , 1, 2, row, row+1); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Files permission [-f]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); options.entry_fmode = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_fmode , 1, 2, row, row+1); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Dirs permission [-d]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); options.entry_dmode = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_dmode , 1, 2, row, row+1); row++; /* ----- */ hsep = gtk_hseparator_new(); gtk_table_attach (GTK_TABLE(table), hsep, 0, 2, row, row+1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 6, 6); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Timeout [-t]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); options.entry_timeout = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_timeout , 1, 2, row, row+1); row++; halign = gtk_alignment_new(0, 0, 0, 1); label = gtk_label_new ("Retry count [-r]:"); gtk_container_add(GTK_CONTAINER(halign), label); gtk_table_attach(GTK_TABLE(table), halign, 0, 1, row, row+1, GTK_FILL , GTK_FILL | GTK_EXPAND, 6, 0); options.entry_retrycount = gtk_entry_new (); gtk_table_attach_defaults (GTK_TABLE (table), options.entry_retrycount , 1, 2, row, row+1); row++; /* ----- */ hsep = gtk_hseparator_new(); gtk_table_attach (GTK_TABLE(table), hsep, 0, 2, row, row+1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 6, 6); row++; options.check_C = gtk_check_button_new_with_label ("Don't convet password to uppercase [-C]"); gtk_table_attach_defaults (GTK_TABLE (table), options.check_C, 0, 2, row, row+1); row++; options.check_m = gtk_check_button_new_with_label ("Allow multiple logins to server [-m]"); gtk_table_attach_defaults (GTK_TABLE (table), options.check_m, 0, 2, row, row+1); row++; options.check_s = gtk_check_button_new_with_label ("Enable renaming/deletion of read-only files [-s]"); gtk_table_attach_defaults (GTK_TABLE (table), options.check_s, 0, 2, row, row+1); row++; options.check_b = gtk_check_button_new_with_label ("Force bindery login to NDS servers [-b]"); gtk_table_attach_defaults (GTK_TABLE (table), options.check_b, 0, 2, row, row+1); row++; /* ----- */ hsep = gtk_hseparator_new(); gtk_table_attach (GTK_TABLE(table), hsep, 0, 2, row, row+1, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 6, 6); row++; set_options_from_cmdparams(); gtk_widget_show_all (table); result = gtk_dialog_run (GTK_DIALOG(options.dialog)); if(result == GTK_RESPONSE_OK) { save_options_to_cmdparams(); } gtk_widget_destroy (options.dialog); } /** * Show info, error or warning message */ void show_message (GtkMessageType type, const gchar *format, gchar *msgtxt, const gchar *format_sec, gchar *msgtxt_sec) { GtkWidget *dialog; dialog = gtk_message_dialog_new ( GTK_WINDOW (gui.win), GTK_DIALOG_DESTROY_WITH_PARENT, type, GTK_BUTTONS_OK, format, msgtxt); gtk_window_set_title (GTK_WINDOW (dialog), GUI_TITLE ); gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (dialog), format_sec, msgtxt_sec); gtk_dialog_run ( GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); }