diff --git a/src/Makefile b/src/Makefile index e5b2bfc..3249c6a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,2 +1,2 @@ all: - gcc `pkg-config --libs --cflags gtk+-2.0` mountmatricula.c -o matricula \ No newline at end of file + gcc `pkg-config --libs --cflags gtk+-2.0 gmodule-export-2.0` mountmatricula.c -o matricula \ No newline at end of file diff --git a/src/gui.ui b/src/gui.ui index 97f38c2..3adc36c 100644 --- a/src/gui.ui +++ b/src/gui.ui @@ -31,9 +31,10 @@ - + gtk-connect True + False True True False @@ -167,7 +168,7 @@ button2 - button1 + btn_connect diff --git a/src/matricula b/src/matricula index 13153ed..d97a43d 100755 Binary files a/src/matricula and b/src/matricula differ diff --git a/src/mountmatricula.c b/src/mountmatricula.c index 9b4db29..7974d09 100644 --- a/src/mountmatricula.c +++ b/src/mountmatricula.c @@ -3,16 +3,73 @@ #include #include +gchar SERVIDOR[] = "localhost"; + +static void +mount_mountable_done_cb (GObject *object, + GAsyncResult *res, + gpointer user_data) +{ + GFile *target; + GError *error = NULL; + + target = g_file_mount_mountable_finish (G_FILE (object), res, &error); + + g_print ("Destino, %s", target); + + if (target == NULL) + g_printerr ("Error mounting location: %s\n", error->message); + else + g_object_unref (target); + /* + outstanding_mounts--; + + if (outstanding_mounts == 0) + g_main_loop_quit (main_loop); + */ +} + +void mount (char *username, char *password) { + GFile *file; + gchar *cmd; + GMountOperation *op; + + cmd = g_strdup_printf("ssh://%s@%s:/home/%s", + username, SERVIDOR, username); + + g_print ("mountando: %s\n", cmd); + + file = g_file_new_for_commandline_arg (cmd); + op = g_mount_operation_new (); + g_mount_operation_set_password (op, password); + g_file_mount_mountable (file, 0, op, NULL, mount_mountable_done_cb, op); + +} void values_changed_cb (GtkWidget *widget, GtkBuilder *builder) { - g_print ("values changed"); + GObject *obj; + gint u, p; + + obj = gtk_builder_get_object(builder, "username"); + u = gtk_entry_get_text_length (GTK_ENTRY(obj)); + + obj = gtk_builder_get_object(builder, "password"); + p = gtk_entry_get_text_length (GTK_ENTRY(obj)); + + obj = gtk_builder_get_object(builder, "btn_connect"); + + if ((u < 1) || (p < 1)) + gtk_widget_set_sensitive (GTK_WIDGET(obj), FALSE); + else + gtk_widget_set_sensitive (GTK_WIDGET(obj), TRUE); + } int main (int argc, char *argv[]) { GtkBuilder *builder; - GtkWidget *dialog; - + GtkWidget *dialog, *obj; + gchar *username, *password; gtk_init(&argc, &argv); builder = gtk_builder_new(); @@ -34,8 +91,17 @@ int main (int argc, char *argv[]) { gtk_builder_connect_signals (builder, builder); - dialog = gtk_builder_get_object (builder, "dialog"); - gtk_dialog_run (GTK_DIALOG(dialog)); + dialog = GTK_WIDGET(gtk_builder_get_object (builder, "dialog")); + gint result = gtk_dialog_run (GTK_DIALOG(dialog)); + + if (result) { + obj = gtk_builder_get_object (builder, "username"); + username = gtk_entry_get_text (GTK_ENTRY(obj)); + obj = gtk_builder_get_object (builder, "password"); + password = gtk_entry_get_text (GTK_ENTRY(obj)); + mount (username, password); + + } gtk_main(); }