diff options
author | Jan Lipovský <janlipovsky@gmail.com> | 2010-12-29 17:56:04 +0100 |
---|---|---|
committer | Jan Lipovský <janlipovsky@gmail.com> | 2010-12-29 17:56:04 +0100 |
commit | 385f6377ca4f0be4cf4a5b493e8d13995534b5be (patch) | |
tree | d0155c60b8e10f8161b84398496d3fac25e5d47c /dialogs.c | |
download | gncpmount-385f6377ca4f0be4cf4a5b493e8d13995534b5be.tar.gz gncpmount-385f6377ca4f0be4cf4a5b493e8d13995534b5be.tar.xz gncpmount-385f6377ca4f0be4cf4a5b493e8d13995534b5be.zip |
GUI with Options dialog
Diffstat (limited to 'dialogs.c')
-rw-r--r-- | dialogs.c | 333 |
1 files changed, 333 insertions, 0 deletions
diff --git a/dialogs.c b/dialogs.c new file mode 100644 index 0000000..2f75057 --- /dev/null +++ b/dialogs.c @@ -0,0 +1,333 @@ +#include <gtk/gtk.h> +#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), "<span weight=\"bold\"><big>Set ncpmount options:</big></span>"); + 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]"); + /*g_signal_connect (G_OBJECT (chbox), "toggled", G_CALLBACK (passwd_uppercase), (gpointer) chbox);*/ + 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]"); + /*g_signal_connect (G_OBJECT (chbox), "toggled", G_CALLBACK (passwd_uppercase), (gpointer) chbox);*/ + 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]"); + /*g_signal_connect (G_OBJECT (chbox), "toggled", G_CALLBACK (passwd_uppercase), (gpointer) chbox);*/ + 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]"); + /*g_signal_connect (G_OBJECT (chbox), "toggled", G_CALLBACK (passwd_uppercase), (gpointer) chbox);*/ + 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); +} + + + +#if 0 + +static void passwd_uppercase (GtkWidget *wid, GtkWidget *win) +{ + /* Nastavit -C parametr */ +} + + + + +#endif |