diff --git a/useful/stg312/.data.out b/useful/stg312/.data.out index 475f41c0ae5e31e70ad6599a70aac9e3526909e6..d1e10cde50140361b6234b15184cc7c900090a51 100644 --- a/useful/stg312/.data.out +++ b/useful/stg312/.data.out @@ -1 +1 @@ -{"login":"root","name":"MEGA ROOT","email":"root@root.com","city":null,"status":"ok","msg":"Get informations of user successful","code":"002"} \ No newline at end of file +{"login":"root","name":"Alessandro Elias","email":"ae11@c3sl.ufpr.br","city":null,"status":"ok","msg":"Get informations of user successful","code":"002"} \ No newline at end of file diff --git a/useful/stg312/.size.out b/useful/stg312/.size.out index b2a5411b4f58dd832e211adebe54449bc667b1ac..d0b3492b0333971d9accd1f181b7fb2cefe411b4 100644 --- a/useful/stg312/.size.out +++ b/useful/stg312/.size.out @@ -1 +1 @@ -1725600 testando-sem-crc-2.r1.tar.gz +1725528 testando.r1.tar.gz diff --git a/useful/stg312/.upid.out b/useful/stg312/.upid.out index c39cab2506cdae4bac0191b7f65efca588bed9d7..8409c26bf6945242cf9ebac5fe37e28b24baa8cd 100644 --- a/useful/stg312/.upid.out +++ b/useful/stg312/.upid.out @@ -1 +1 @@ -{"uploadid":"QzD0kFOzZ5W22miyHCooFOsN85ypK4ZsjRp","status":"ok","code":"003","msg":"New upload succesful"} \ No newline at end of file +{"uploadid":"0EFU45ZEhSpi7r3vRDv2zZW7stBu76SC10g","status":"ok","code":"003","msg":"New upload succesful"} \ No newline at end of file diff --git a/useful/stg312/openslx_gui b/useful/stg312/openslx_gui index f85970bf66db33352eb881a20c42cd7551632f7a..42d6d6efe29a28946333710762d873f60041222c 100755 Binary files a/useful/stg312/openslx_gui and b/useful/stg312/openslx_gui differ diff --git a/useful/stg312/openslx_gui.c b/useful/stg312/openslx_gui.c index a9dfc385f89da08bad5b858461ad6f1362333a54..d02d7163ad85a92ae57e103b660dced0ddd96690 100644 --- a/useful/stg312/openslx_gui.c +++ b/useful/stg312/openslx_gui.c @@ -23,11 +23,11 @@ void tela_upload_antigo(GtkWidget *w,gpointer p){ char *old_upload; old_upload = malloc(255*sizeof(char)); - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função janela_ant = (GtkWidget*) data_ant->dado1; - builder = gtk_builder_new(); - gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets button_continua_upload = GTK_WIDGET(gtk_builder_get_object(builder, "button_continua_upload")); button_nao_continua = GTK_WIDGET(gtk_builder_get_object(builder, "button_nao_continua")); @@ -66,10 +66,10 @@ void tela_principal(GtkWidget *w,gpointer p){ g_spawn_command_line_sync("./squash.sh 1", NULL, NULL, &status, NULL); // Executa o script } - builder = gtk_builder_new(); - gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função FILE *upload_antigo = fopen(".progress.out", "w"); fclose(upload_antigo); @@ -129,8 +129,8 @@ void tela_login(){ GtkWidget *window_login, *button_login, *entry_login, *entry_passwd, *label_login_erro; GtkBuilder *builder; - builder = gtk_builder_new(); - gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets printf("Linha %d\n", __LINE__); window_login = GTK_WIDGET(gtk_builder_get_object(builder, "window_login")); diff --git a/useful/stg312/openslx_gui_v01.glade b/useful/stg312/openslx_gui_v01.glade index 4d6be6a086ac38402d68d4ad6aba2ecff3abab00..00e5f3ce6a29b7b604642f5a4bd1e704e408c88b 100644 --- a/useful/stg312/openslx_gui_v01.glade +++ b/useful/stg312/openslx_gui_v01.glade @@ -4,8 +4,11 @@ <requires lib="gtk+" version="3.10"/> <object class="GtkMessageDialog" id="error_dialog"> <property name="can_focus">False</property> + <property name="type">popup</property> + <property name="window_position">center</property> <property name="icon">openslx_icon</property> <property name="type_hint">dialog</property> + <property name="gravity">center</property> <property name="message_type">error</property> <property name="buttons">ok</property> <property name="text" translatable="yes">Algum dos passos do processo não foi completado com sucesso. </property> @@ -58,6 +61,7 @@ O programa irá sair agora.</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">10</property> + <property name="margin_bottom">5</property> <property name="row_spacing">10</property> <property name="column_spacing">10</property> <child> @@ -476,6 +480,7 @@ Se precisar de ajuda, ative <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">10</property> + <property name="margin_bottom">5</property> <property name="row_spacing">35</property> <property name="column_spacing">10</property> <property name="column_homogeneous">True</property> @@ -486,6 +491,7 @@ Se precisar de ajuda, ative <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="tooltip_text" translatable="yes">Segue com a geração da imagem.</property> + <property name="margin_right">5</property> </object> <packing> <property name="left_attach">2</property> @@ -567,6 +573,7 @@ instalar softwares</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="tooltip_text" translatable="yes">Abre o software Gerenciador de Pacotes do Ubuntu para te auxiliar a instalar os pacotes desejados. Essa opção pode ser demorada pois o software é pesado. Se estiver utilizando um computador mais velho tente optar pelo Shell.</property> + <property name="margin_right">5</property> </object> <packing> <property name="left_attach">1</property> @@ -702,6 +709,7 @@ disponível no nosso site. <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">10</property> + <property name="margin_bottom">5</property> <property name="row_spacing">15</property> <property name="column_spacing">10</property> <child> @@ -1251,6 +1259,8 @@ em outras máquinas!</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">10</property> + <property name="margin_right">5</property> + <property name="margin_bottom">5</property> <property name="row_spacing">5</property> <child> <object class="GtkGrid" id="grid8"> @@ -1417,6 +1427,10 @@ em outras máquinas!</property> <object class="GtkGrid" id="grid10"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="margin_left">5</property> + <property name="margin_right">5</property> + <property name="margin_top">5</property> + <property name="margin_bottom">5</property> <child> <object class="GtkFrame" id="frame5"> <property name="visible">True</property> diff --git a/useful/stg312/stg4.c b/useful/stg312/stg4.c index f7fcee3783c100df18c8389cfac4c783fd050afe..a8a2f3df6dcd0e2bd7b76514a2eafcd8fdd55593 100644 --- a/useful/stg312/stg4.c +++ b/useful/stg312/stg4.c @@ -12,18 +12,31 @@ #include <gdk/gdk.h> #include <glib.h> -void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p){ +//void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p){ +void stg4_tela_confirmacao_upload(GPid pid, gint status,gpointer p){ //pid_t pid; // Para quando for implementado GtkWidget *window_stg4_upload_confirm, *janela_ant, *button_return_upload_confirm; //*loading_screen; // Para quando for implementado GtkBuilder *builder; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função + + ///////// + GtkWidget *loading; + loading = data_ant->dado6; + pid = data_ant->pid; + //gtk_widget_show(window); + checa_sucesso(); + g_spawn_close_pid(pid); + ///////////// + puts("Aqui"); - dados *data_ant = p; + puts("Aqui8"); janela_ant = (GtkWidget*) data_ant->dado1; puts("Aqui7"); - builder = data_ant->builder; + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets puts("Aqui6"); @@ -51,6 +64,7 @@ void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p){ gtk_widget_hide(janela_ant); puts("Aqui4"); + gtk_widget_hide(loading); gtk_widget_show_all(window_stg4_upload_confirm); puts("Aqui5"); } @@ -60,7 +74,7 @@ void stg4_tela_img_select(GtkWidget *w,gpointer p){ GtkWidget *window_escolha_imagem, *janela_ant, *button_update_img; //*loading_screen; // Para quando for implementado GtkBuilder *builder; - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função janela_ant = (GtkWidget*) data_ant->dado1; builder = data_ant->builder; int status; @@ -82,7 +96,78 @@ void stg4_tela_img_select(GtkWidget *w,gpointer p){ gtk_widget_hide(janela_ant); gtk_widget_show_all(window_escolha_imagem); } + // // A função que exibe a 3a tela do programa, a tela final +void stg4_2a_tela(GPid pid, gint status,gpointer p){ + + GtkWidget *window_stg4_final, *button_stg4_final_sair, *janela_ant, *button_help_4at, *button_stg4_upload, *label_tempo_upload; + GtkBuilder *builder; + char *texto_tempo_upload, *temp; + texto_tempo_upload = malloc(255*sizeof(char)); + temp = malloc(255*sizeof(char)); + + + dados *data_ant = p; //Pega os dados recebidos pela chamada da função + janela_ant = (GtkWidget*) data_ant->dado1; + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets + + + GtkWidget *loading; + loading = data_ant->dado6; + pid = data_ant->pid; + + //gtk_widget_show(window); + checa_sucesso(); + g_spawn_close_pid(pid); + + window_stg4_final = GTK_WIDGET(gtk_builder_get_object(builder, "window_stg4_final")); + g_signal_connect(window_stg4_final, "destroy", G_CALLBACK(chama_tela_principal), NULL); + + struct dados *data = malloc(sizeof(*data)); + + + data->dado2 = window_stg4_final; + data->control = 0; + + button_help_4at = GTK_WIDGET(gtk_builder_get_object(builder, "button_help_4at")); + button_stg4_final_sair = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_final_sair")); + button_stg4_upload = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_upload")); + label_tempo_upload = GTK_WIDGET(gtk_builder_get_object(builder, "label_tempo_upload")); + printf("Linha %d\n", __LINE__); + strcpy(texto_tempo_upload, "Tempo estimado de upload: "); + sprintf(temp, "%d",calcula_tempo_upload() ); + printf("Linha %d\n", __LINE__); + strcat(texto_tempo_upload, temp); + printf("Linha %d\n", __LINE__); + strcat(texto_tempo_upload, " segundos"); + printf("Linha %d\n", __LINE__); + gtk_label_set_text(GTK_LABEL(label_tempo_upload), texto_tempo_upload); + printf("Linha %d\n", __LINE__); + data->dado2 = button_stg4_final_sair; + data->dado3 = data_ant->dado4; + data->dado4 = data_ant->dado3; + data->dado5 = data_ant->dado5; + data->dado1 = window_stg4_final; + data->builder = builder; + printf("Linha %d\n", __LINE__); + g_signal_connect (G_OBJECT (window_stg4_final), "key_press_event", G_CALLBACK (on_key_press), data); //Conecta os sinais pra quando apertar uma tecla + g_signal_connect(button_help_4at, "clicked", G_CALLBACK(help_screen), NULL); + printf("Linha %d\n", __LINE__); + //g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload), data); + g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload_teste), data); + //g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload_dummy), data); + printf("Linha %d\n", __LINE__); + g_signal_connect(button_stg4_final_sair, "clicked", G_CALLBACK(mata_janela_e_chama_tela_principal), data); + printf("Linha %d\n", __LINE__); + gtk_widget_hide(janela_ant); + printf("Linha %d\n", __LINE__); + gtk_widget_hide(loading); + gtk_widget_show_all(window_stg4_final); + printf("Linha %d\n", __LINE__); + +} + void stg4_clique_2a_tela(GtkWidget *w,gpointer p){ GPid pid; @@ -104,7 +189,7 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){ texto_tempo_upload = malloc(255*sizeof(char)); temp = malloc(255*sizeof(char)); - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função janela_ant = (GtkWidget*) data_ant->dado1; builder = data_ant->builder; @@ -116,119 +201,102 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){ struct dados *data = malloc(sizeof(*data)); - //tmscripts = acha_tm_scripts(); - acha_tm_scripts(tmscripts); - - strcpy(version, gtk_entry_get_text(GTK_ENTRY(data_ant->dado4))); - - strcat(version, ".r1"); - - strcpy(home, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_ant->dado3))); - - strcpy(pasta_do_stg4, home); - strcat(home, "/pasta-"); - strcat(home, version); - strcat(tmscripts, "/scripts"); - - //gboolean g_spawn_async_with_pipes (const gchar *working_directory, gchar **argv, gchar **envp, GSpawnFlags flags, - // GSpawnChildSetupFunc child_setup, gpointer user_data, GPid *child_pid, GError **error); - - //strcpy(argv[0], CLONE_STG4_SCRIPT_DUMMY); - strcpy(argv[0], CLONE_STG4_SCRIPT); - - strcpy(argv[1], tmscripts); - - strcpy(argv[2], pasta_do_stg4); - - strcpy(argv[3], "local"); - - strcpy(argv[4], home ); - - strcpy(argv[5], version); - - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data_ant->dado6))) - strcpy(argv[6], "1"); - else - strcpy(argv[6], "0"); - - sprintf(number_of_parts_str, "%d", NUMBER_OF_PARTS); - strcpy(argv[7], number_of_parts_str); - - argv[8] = NULL; - - if(g_spawn_async_with_pipes(NULL, argv,NULL,G_SPAWN_DO_NOT_REAP_CHILD,NULL,NULL, &pid, NULL, NULL, NULL, NULL)){ - puts("Deu certo o spawn"); - } - //, environ); - - data->dado6 = loading_screen; - data->dado2 = window_stg4_final; - data->control = 0; - - data->pid = pid; - - handler = sai_do_script; - - g_child_watch_add(pid, handler, data); - printf("Linha %d\n", __LINE__); - - - /* - * checa_sucesso(); //Checa se o script foi executado corretamente - - strcpy(pasta_do_stg4, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_ant->dado3))); - strcpy(version, gtk_entry_get_text(GTK_ENTRY(data_ant->dado4))); - strcat(version, gtk_entry_get_text(GTK_ENTRY(data_ant->dado5))); - //strcpy(local, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_ant->dado2))); - strcpy(local, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_ant->dado3))); - strcat(local, "/pasta-"); - strcat(local, version); - - if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data_ant->dado6))){ - execlp("./squash.sh", "./squash.sh", "0", local, version, "1",pasta_do_stg4, NULL);// se o usuário decidiu remover os arquivos não compactados - }else{ - execlp("./squash.sh", "./squash.sh", "0", local, version, "0",pasta_do_stg4, NULL);// Se o usuário decidiu não remover os arquivos compactados - } - * */ - - - - printf("Linha %d\n", __LINE__); - button_help_4at = GTK_WIDGET(gtk_builder_get_object(builder, "button_help_4at")); - button_stg4_final_sair = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_final_sair")); - button_stg4_upload = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_upload")); - label_tempo_upload = GTK_WIDGET(gtk_builder_get_object(builder, "label_tempo_upload")); - printf("Linha %d\n", __LINE__); - strcpy(texto_tempo_upload, "Tempo estimado de upload: "); - sprintf(temp, "%d",calcula_tempo_upload() ); - printf("Linha %d\n", __LINE__); - strcat(texto_tempo_upload, temp); - printf("Linha %d\n", __LINE__); - strcat(texto_tempo_upload, " segundos"); - printf("Linha %d\n", __LINE__); - gtk_label_set_text(GTK_LABEL(label_tempo_upload), texto_tempo_upload); - printf("Linha %d\n", __LINE__); - data->dado2 = button_stg4_final_sair; - data->dado3 = data_ant->dado4; - data->dado4 = data_ant->dado3; - data->dado5 = data_ant->dado5; - data->dado1 = window_stg4_final; - data->builder = builder; - printf("Linha %d\n", __LINE__); - g_signal_connect (G_OBJECT (window_stg4_final), "key_press_event", G_CALLBACK (on_key_press), data); //Conecta os sinais pra quando apertar uma tecla - g_signal_connect(button_help_4at, "clicked", G_CALLBACK(help_screen), NULL); - printf("Linha %d\n", __LINE__); - g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload), data); - //g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload_teste), data); - //g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload_dummy), data); - printf("Linha %d\n", __LINE__); - g_signal_connect(button_stg4_final_sair, "clicked", G_CALLBACK(mata_janela_e_chama_tela_principal), data); - printf("Linha %d\n", __LINE__); - gtk_widget_hide(janela_ant); - printf("Linha %d\n", __LINE__); - gtk_widget_show_all(window_stg4_final); - printf("Linha %d\n", __LINE__); - + acha_tm_scripts(tmscripts); + + strcpy(version, gtk_entry_get_text(GTK_ENTRY(data_ant->dado4))); + + strcat(version, ".r1"); + + strcpy(home, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_ant->dado3))); + + strcpy(pasta_do_stg4, home); + strcat(home, "/pasta-"); + strcat(home, version); + strcat(tmscripts, "/scripts"); + + //gboolean g_spawn_async_with_pipes (const gchar *working_directory, gchar **argv, gchar **envp, GSpawnFlags flags, + // GSpawnChildSetupFunc child_setup, gpointer user_data, GPid *child_pid, GError **error); + + strcpy(argv[0], CLONE_STG4_SCRIPT_DUMMY); + //strcpy(argv[0], CLONE_STG4_SCRIPT); + + strcpy(argv[1], tmscripts); + + strcpy(argv[2], pasta_do_stg4); + + strcpy(argv[3], "local"); + + strcpy(argv[4], home ); + + strcpy(argv[5], version); + + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data_ant->dado6))) + strcpy(argv[6], "1"); + else + strcpy(argv[6], "0"); + + sprintf(number_of_parts_str, "%d", NUMBER_OF_PARTS); + strcpy(argv[7], number_of_parts_str); + + argv[8] = NULL; + + if(g_spawn_async_with_pipes(NULL, argv,NULL,G_SPAWN_DO_NOT_REAP_CHILD,NULL,NULL, &pid, NULL, NULL, NULL, NULL)){ + puts("Deu certo o spawn"); + } + + + data->dado6 = loading_screen; + data->dado2 = window_stg4_final; + data->dado4 = data_ant->dado4; + data->dado3 = data_ant->dado3; + data->dado5 = data_ant->dado5; + data->control = 0; + data->dado1 = data_ant->dado1; + + data->pid = pid; + + handler = stg4_2a_tela; + //handler = sai_do_script_teste; + + g_child_watch_add(pid, handler, data); + /* printf("Linha %d\n", __LINE__); + + printf("Linha %d\n", __LINE__); + button_help_4at = GTK_WIDGET(gtk_builder_get_object(builder, "button_help_4at")); + button_stg4_final_sair = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_final_sair")); + button_stg4_upload = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_upload")); + label_tempo_upload = GTK_WIDGET(gtk_builder_get_object(builder, "label_tempo_upload")); + printf("Linha %d\n", __LINE__); + strcpy(texto_tempo_upload, "Tempo estimado de upload: "); + sprintf(temp, "%d",calcula_tempo_upload() ); + printf("Linha %d\n", __LINE__); + strcat(texto_tempo_upload, temp); + printf("Linha %d\n", __LINE__); + strcat(texto_tempo_upload, " segundos"); + printf("Linha %d\n", __LINE__); + gtk_label_set_text(GTK_LABEL(label_tempo_upload), texto_tempo_upload); + printf("Linha %d\n", __LINE__); + data->dado2 = button_stg4_final_sair; + data->dado3 = data_ant->dado4; + data->dado4 = data_ant->dado3; + data->dado5 = data_ant->dado5; + data->dado1 = window_stg4_final; + data->builder = builder; + printf("Linha %d\n", __LINE__); + g_signal_connect (G_OBJECT (window_stg4_final), "key_press_event", G_CALLBACK (on_key_press), data); //Conecta os sinais pra quando apertar uma tecla + g_signal_connect(button_help_4at, "clicked", G_CALLBACK(help_screen), NULL); + printf("Linha %d\n", __LINE__); + //g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload), data); + g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload_teste), data); + //g_signal_connect(button_stg4_upload, "clicked", G_CALLBACK(faz_upload_dummy), data); + printf("Linha %d\n", __LINE__); + g_signal_connect(button_stg4_final_sair, "clicked", G_CALLBACK(mata_janela_e_chama_tela_principal), data); + printf("Linha %d\n", __LINE__); + gtk_widget_hide(janela_ant); + printf("Linha %d\n", __LINE__); + gtk_widget_show_all(window_stg4_final); + printf("Linha %d\n", __LINE__); +*/ } @@ -238,7 +306,7 @@ void stg4_clique_1a_tela(GtkWidget *w,gpointer p){ GtkWidget *window_stg4_escolha, *janela_ant, *button_clonar, *entry_imagem, *file_chooser_local, *button_help_2at, *check_button_remove; GtkBuilder *builder; - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função janela_ant = (GtkWidget*) data_ant->dado1; builder = data_ant->builder; @@ -281,7 +349,7 @@ void stg4_inicio(GtkWidget *w,gpointer p){ GtkWidget *window_stg4_inic, *janela_ant, *button_geren, *button_stg4_proximo, *button_help_1at; GtkBuilder *builder; - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função janela_ant = (GtkWidget*) data_ant->dado1; builder = data_ant->builder; diff --git a/useful/stg312/stg4.h b/useful/stg312/stg4.h index 461788452af71ef4c6cce5d2dcf57c16877d58d8..2a866f0f2a389d41a17d74fd90416310e015dcc0 100644 --- a/useful/stg312/stg4.h +++ b/useful/stg312/stg4.h @@ -8,7 +8,8 @@ #include <sys/wait.h> -void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p); +//void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p); +void stg4_tela_confirmacao_upload(GPid pid, gint status,gpointer p); // A função que exibe a quarta tela do programa, a tela final diff --git a/useful/stg312/upload-utils.c b/useful/stg312/upload-utils.c index e9a0785cc2044ab3fcbdacfeed18c7d9329d04ff..324a3452b45d10c07bd3dffcdd97bf045e842d4d 100644 --- a/useful/stg312/upload-utils.c +++ b/useful/stg312/upload-utils.c @@ -17,6 +17,32 @@ #include <sys/types.h> #include <signal.h> + +void logout(){ + + CURL *curl; + + + curl = curl_easy_init(); + if(curl) { + + curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0"); + curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1 ); + curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie"); + curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie"); + + curl_easy_setopt(curl, CURLOPT_VERBOSE, 0); + curl_easy_setopt(curl, CURLOPT_HEADER, 0); + + //curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.0.6/slx-admin/api.php?do=webservice"); + curl_easy_setopt(curl, CURLOPT_URL, API_URL); + curl_easy_setopt(curl, CURLOPT_POST, 1); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "request=logout"); + curl_easy_perform(curl); + } + +} + int checa_upload_antigo(){ FILE *upload_in_progress; @@ -287,14 +313,14 @@ int checa_sucesso_get_info(){ //Função que faz o Login do usuario no sistema. Utiliza a biblioteca Libcurlc para realizar as requisições http. // Guarda as saidas em arquivos para uso posterios. Guarda o cookie para uso posterios tbm int faz_login_dummy(GtkWidget *w, gpointer p){ - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função tela_principal(NULL, data_ant); return 1; } int faz_login(GtkWidget *w, gpointer p){ - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função CURL *curl; char *data = malloc(255*sizeof(char)); strcpy(data, "login="); @@ -381,7 +407,7 @@ int faz_login(GtkWidget *w, gpointer p){ //Função que faz o upload da imagem + dados para a api do site. Atualmente faz upload só de UM arquivo void faz_upload_dummy(GtkWidget *w, gpointer p){ - stg4_tela_confirmacao_upload(NULL, p); + // stg4_tela_confirmacao_upload(NULL, p); }//Função de teste dummy //função de teste que faz upload da imagem teste.r1 @@ -389,6 +415,7 @@ void faz_upload_teste(GtkWidget *w, gpointer p){ GtkWidget *loading, *window_stg4_upload_confirm; GtkBuilder *builder; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função int i; struct dados *data = malloc(sizeof(*data)); GPid pid; @@ -399,8 +426,8 @@ void faz_upload_teste(GtkWidget *w, gpointer p){ argv[i] = malloc(255*sizeof(char)); } - builder = gtk_builder_new(); - gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets loading = GTK_WIDGET(gtk_builder_get_object(builder, "loading_screen")); window_stg4_upload_confirm = GTK_WIDGET(gtk_builder_get_object(builder, "window_stg4_upload_confirm")); @@ -411,19 +438,20 @@ void faz_upload_teste(GtkWidget *w, gpointer p){ strcpy(argv[3], ".r1"); argv[4] = NULL; g_spawn_async_with_pipes(NULL, argv,NULL,G_SPAWN_DO_NOT_REAP_CHILD,NULL,NULL, &pid, NULL, NULL, NULL, NULL); - handler = sai_do_script; + handler = stg4_tela_confirmacao_upload; data->dado6 = loading; - data->dado1 = window_stg4_upload_confirm; + data->dado1 = data_ant->dado1; data->pid = pid; g_child_watch_add(pid, handler, data); - stg4_tela_confirmacao_upload(NULL, p); + // stg4_tela_confirmacao_upload(NULL, p); } void faz_upload(GtkWidget *w, gpointer p){ - GtkWidget *loading; - dados *data_ant = p; + printf("Linha faz upload %d\n", __LINE__); + GtkWidget *loading, *window_stg4_upload_confirm; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função GtkBuilder *builder; struct dados *data = malloc(sizeof(*data)); int i; @@ -434,22 +462,33 @@ void faz_upload(GtkWidget *w, gpointer p){ for (i=0; i < 10; i++){ argv[i] = malloc(255*sizeof(char)); } + printf("Linha %d\n", __LINE__); - builder = gtk_builder_new(); - gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets loading = GTK_WIDGET(gtk_builder_get_object(builder, "loading_screen")); + window_stg4_upload_confirm = GTK_WIDGET(gtk_builder_get_object(builder, "window_stg4_upload_confirm")); + + printf("Linha %d\n", __LINE__); gtk_widget_show_all(loading); + printf("Linha %d\n", __LINE__); strcpy(argv[0], "./upload"); strcpy(argv[1], gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_ant->dado4))); strcpy(argv[2], gtk_entry_get_text(GTK_ENTRY(data_ant->dado3))); strcpy(argv[3], ".r1"); argv[4] = NULL; + printf("Linha %d\n", __LINE__); g_spawn_async_with_pipes(NULL, argv,NULL,G_SPAWN_DO_NOT_REAP_CHILD,NULL,NULL, &pid, NULL, NULL, NULL, NULL); - handler = sai_do_script; + + printf("Linha %d\n", __LINE__); + + handler = stg4_tela_confirmacao_upload; data->dado6 = loading; + data->dado1 = data_ant->dado1; data->pid = pid; + printf("Linha %d\n", __LINE__); g_child_watch_add(pid, handler, data); - stg4_tela_confirmacao_upload(NULL, p); + //stg4_tela_confirmacao_upload(NULL, p); } diff --git a/useful/stg312/upload-utils.h b/useful/stg312/upload-utils.h index f021d4813501fa1d1649fe0b206505d858504635..f7f0fa6f12d9088326147c52d95c9e2479523599 100644 --- a/useful/stg312/upload-utils.h +++ b/useful/stg312/upload-utils.h @@ -6,7 +6,7 @@ #include <errno.h> #include <sys/wait.h> - +void logout(); int checa_upload_antigo(); int calcula_tempo_upload(); void gera_arquivo_dados_usuario(); diff --git a/useful/stg312/utils.c b/useful/stg312/utils.c index 34370a58fbfe629989e3a7560efec5345b49a23d..ce290603f398453fff1d67f6b2982d9b1147c250 100644 --- a/useful/stg312/utils.c +++ b/useful/stg312/utils.c @@ -35,12 +35,12 @@ void acha_tm_scripts(char *path){ } - -gboolean on_key_press (GtkWidget *w, GdkEventKey *event, gpointer p){ //funcção que lida com os inputs do teclado. Ver https://git.gnome.org/browse/gtk+/plain/gdk/gdkkeysyms.h para uma lista completa das Macros de teclas. +//função que lida com os inputs do teclado. Ver https://git.gnome.org/browse/gtk+/plain/gdk/gdkkeysyms.h para uma lista completa das Macros de teclas. +gboolean on_key_press (GtkWidget *w, GdkEventKey *event, gpointer p){ gpointer window, button; window = w; - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função button = data_ant->dado2; //Botão que da continuidade ao software, dado->2 por comodidade. switch (event->keyval){ @@ -70,51 +70,26 @@ gboolean on_key_press (GtkWidget *w, GdkEventKey *event, gpointer p){ //funcçã return FALSE; } +//Função que abre o software center do sistema void abre_software_center(GtkWidget *w, gpointer p){ int status; puts("software center"); - g_spawn_command_line_sync("software-center", NULL, NULL, &status, NULL); - /*pid_t pid; - int status; - - pid = fork(); - - //pid = 2; - if(pid == 0){ - execlp("software-center", "", NULL); - perror("O comando não foi executado corretamente. Erro: Saindo do programa. "); // Caso ocorra algum erro com o execlp. + g_spawn_command_line_sync("software-center", NULL, NULL, &status, NULL); //o comando "software-center" ainda não funciona, trocar por um outro funcional - gtk_main_quit(); - exit(1); - } - waitpid(pid, &status, 0); // Espera o script terminar de rodar*/ } +//Função que abre um shell para instalar os pacotes. void abre_shell(GtkWidget *w, gpointer p){ int status; - g_spawn_command_line_sync("x-terminal-emulator", NULL, NULL, &status, NULL); // Executa o script - - - /*pid_t pid; - int status; - - pid = fork(); + g_spawn_command_line_sync("x-terminal-emulator", NULL, NULL, &status, NULL); // Abre o shell - //pid = 2; - if(pid == 0){ - execlp("x-terminal-emulator", "", NULL); - perror("O comando não foi executado corretamente. Erro: Saindo do programa. "); // Caso ocorra algum erro com o execlp. - - gtk_main_quit(); - exit(1); - } - waitpid(pid, &status, 0); // Espera o script terminar de rodar*/ } +/* void logout(){ CURL *curl; @@ -138,8 +113,10 @@ void logout(){ curl_easy_perform(curl); } -} +}*/ + +//Função que sai do programa, fazendo logout antes void sair(GtkWidget *w, gpointer p){ logout(); @@ -157,17 +134,15 @@ int checa_sucesso(){ GtkWidget *dialogo; GtkBuilder *builder; - builder = gtk_builder_new(); - gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); - - //controle = (char*) malloc(5*sizeof(char)); + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets - dialogo = GTK_WIDGET(gtk_builder_get_object(builder, "error_dialog")); + dialogo = GTK_WIDGET(gtk_builder_get_object(builder, "error_dialog")); //Carrega o dialogo de erro resultado = fopen(".result.out", "r"); // .result.out é o arquivo que armazena se o script foi executado corretamente ou não if(resultado != NULL){ - fread(&controle, sizeof(char), 1, resultado); + fread(&controle, sizeof(char), 1, resultado); //Lê a saida do script printf("Controle = %c\n", controle); if(controle == 's'){ //Caso o script não tenha sido executado com sucesso o programa informa o usuário por meio de uma janela de dialogo do GTK @@ -178,7 +153,7 @@ int checa_sucesso(){ return(1); }else{ - gtk_dialog_run(GTK_DIALOG(dialogo)); + gtk_dialog_run(GTK_DIALOG(dialogo)); //Mostra a janela de erro gtk_widget_destroy(dialogo); system("rm .result.out"); // Remove o arquivo após a verificação para não dar conflito com o segundo script e execuções futuras do programa gtk_main_quit(); @@ -186,7 +161,7 @@ int checa_sucesso(){ } } - }else{ //Se o arquivo não existir algo de errado aconteceu na execução do programa, como por exemplo o usuário não informou nenhum campo na segunda tela. + }else{ //Se o arquivo não existir algo de errado aconteceu na execução do programa, como por exemplo o usuário não informou nenhum campo na tela de clonagem. puts("Arquivo não encontrado, erro crítico. Saíndo do programa."); gtk_main_quit(); exit(1); @@ -194,39 +169,38 @@ int checa_sucesso(){ return(0); } -// Acha o caminho para o tm-scripts - +// Função que verifica se o usuário inseriu um nome com espaços no campo nome da imagem void stg4_clique_2a_tela_caller(GtkWidget *w, gpointer p){ GtkWidget *entry; - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função GtkWidget *dialogo; GtkBuilder *builder; - builder = gtk_builder_new(); - gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets - dialogo = GTK_WIDGET(gtk_builder_get_object(builder, "space_dialog")); + dialogo = GTK_WIDGET(gtk_builder_get_object(builder, "space_dialog")); //Carrega o dialogo de erro caso ele tenha utilizado espaços entry = data_ant->dado4; - if(strchr(gtk_entry_get_text(GTK_ENTRY(entry)), ' ') == NULL){ - stg4_clique_2a_tela(w, p); + if(strchr(gtk_entry_get_text(GTK_ENTRY(entry)), ' ') == NULL){ //Verifica se ele utilizou espaços + stg4_clique_2a_tela(w, p); //Caso ele não tenha inserido espaços }else{ - gtk_dialog_run(GTK_DIALOG(dialogo)); + gtk_dialog_run(GTK_DIALOG(dialogo)); //Caso tenha inserido espaços gtk_widget_destroy(dialogo); } } - +//Altera o texto da janela de ajuda void altera_texto_help(GtkWidget *w, gpointer p){ const char *nome; int nome_int; GtkWidget *label; - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função label = data_ant->dado1; nome = gtk_widget_get_name(w); @@ -259,13 +233,14 @@ void altera_texto_help(GtkWidget *w, gpointer p){ } +//Janela de ajuda void help_screen(GtkWidget *w, gpointer p){ GtkWidget *window_help, *button_help_inicio, *button_help_2a_tela, *button_help_3a_tela, *button_help_4a_tela, *button_help_5a_tela, *label_help_info; GtkBuilder *builder; - builder = gtk_builder_new(); - gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); + builder = gtk_builder_new(); //Cria um novo Builder gtk + gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets button_help_inicio = GTK_WIDGET(gtk_builder_get_object(builder, "button_help_inicio")); button_help_2a_tela = GTK_WIDGET(gtk_builder_get_object(builder, "button_help_2a_tela")); @@ -291,21 +266,23 @@ void help_screen(GtkWidget *w, gpointer p){ } +//Sai do script chamado, verificando o sucesso void sai_do_script(GPid pid, gint status, gpointer p){ GtkWidget *loading; - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função loading = data_ant->dado6; pid = data_ant->pid; - gtk_widget_hide(loading); + gtk_widget_hide(loading); //Esconde a tela de loading //gtk_widget_show(window); - checa_sucesso(); - g_spawn_close_pid(pid); + checa_sucesso(); //Checa se o script foi executdo corretamente + g_spawn_close_pid(pid); //Mata o processo do script } +//Fecha a janela que chama essa função e mostra a janela principal void mata_janela_e_chama_tela_principal(GtkWidget *w, gpointer p){ - dados *data_ant = p; + dados *data_ant = p; //Pega os dados recebidos pela chamada da função puts("teste3"); GtkWidget *janela_ant; puts("teste2"); @@ -317,6 +294,7 @@ void mata_janela_e_chama_tela_principal(GtkWidget *w, gpointer p){ puts("teste5"); } +//Chama a tela principal void chama_tela_principal(GtkWidget *w, gpointer p){ struct dados *data = malloc(sizeof(*data)); data->dado1 = NULL; diff --git a/useful/stg312/utils.h b/useful/stg312/utils.h index 0d2cb2a978352e0623e1ea9a0947fae39d13a002..47cf084d0bd41f2497cbbe31ee6380f62f401242 100644 --- a/useful/stg312/utils.h +++ b/useful/stg312/utils.h @@ -11,7 +11,8 @@ #include "upload-utils.h" static const char UPLOAD_REQUEST[] = "request=newupload&nparts=10&name="; //nparts HAS to be the same as NUMBER_OF_PARTS -static const char API_URL[] = "http://192.168.0.6/slx-admin/api.php?do=webservice"; +//static const char API_URL[] = "http://192.168.0.6/slx-admin/api.php?do=webservice"; +static const char API_URL[] = "http://slxboxdev.c3sl.ufpr.br/slx-admin/api.php?do=webservice"; static const int NUMBER_OF_PARTS = 10; // static const char CLONE_STG4_SCRIPT[] = "./clone_stage4.sh"; static const char CLONE_STG4_SCRIPT_DUMMY[] = "./clone_stage4-dummy.sh";