Commit 04dc4bb251970ba4d1d416b7f065244ba0e04051

Authored by perry.werneck@gmail.com
1 parent 031fb7a7

Melhorando janela de trace

Showing 1 changed file with 51 additions and 0 deletions   Show diff stats
src/pw3270/trace.c
... ... @@ -177,6 +177,57 @@ static void destroy(GtkObject *widget)
177 177  
178 178 static void menu_save(GtkWidget *button, pw3270_trace *window)
179 179 {
  180 + GtkWindow * toplevel = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(window)));
  181 + GtkWidget * dialog;
  182 +
  183 + dialog = gtk_file_chooser_dialog_new( _( "Save trace file" ),
  184 + toplevel,
  185 + GTK_FILE_CHOOSER_ACTION_SAVE,
  186 + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
  187 + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
  188 + NULL );
  189 +
  190 + gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
  191 +
  192 + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog),g_get_user_special_dir(G_USER_DIRECTORY_DOCUMENTS));
  193 +
  194 + if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
  195 + {
  196 + gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
  197 + if(filename)
  198 + {
  199 + GError * error = NULL;
  200 + gchar * text;
  201 + GtkTextIter start;
  202 + GtkTextIter end;
  203 +
  204 + gtk_text_buffer_get_start_iter(window->text,&start);
  205 + gtk_text_buffer_get_end_iter(window->text,&end);
  206 + text = gtk_text_buffer_get_text(window->text,&start,&end,FALSE);
  207 +
  208 + g_file_set_contents(filename,text,-1,&error);
  209 +
  210 + g_free(text);
  211 +
  212 + if(error)
  213 + {
  214 + GtkWidget *popup = gtk_message_dialog_new_with_markup(GTK_WINDOW(dialog),GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE,_( "Can't save %s" ),filename);
  215 +
  216 + gtk_window_set_title(GTK_WINDOW(popup),_("Can't save file"));
  217 +
  218 + gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(popup),"%s",error->message);
  219 + g_error_free(error);
  220 +
  221 + gtk_dialog_run(GTK_DIALOG(popup));
  222 + gtk_widget_destroy(popup);
  223 +
  224 + }
  225 +
  226 + g_free(filename);
  227 + }
  228 + }
  229 +
  230 + gtk_widget_destroy(dialog);
180 231  
181 232 }
182 233  
... ...