summaryrefslogtreecommitdiffstats
path: root/dialogs.c
diff options
context:
space:
mode:
authorJan Lipovský <janlipovsky@gmail.com>2010-12-29 17:56:04 +0100
committerJan Lipovský <janlipovsky@gmail.com>2010-12-29 17:56:04 +0100
commit385f6377ca4f0be4cf4a5b493e8d13995534b5be (patch)
treed0155c60b8e10f8161b84398496d3fac25e5d47c /dialogs.c
downloadgncpmount-385f6377ca4f0be4cf4a5b493e8d13995534b5be.tar.gz
gncpmount-385f6377ca4f0be4cf4a5b493e8d13995534b5be.tar.xz
gncpmount-385f6377ca4f0be4cf4a5b493e8d13995534b5be.zip
GUI with Options dialog
Diffstat (limited to 'dialogs.c')
-rw-r--r--dialogs.c333
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