Commit 04dc4bb251970ba4d1d416b7f065244ba0e04051
1 parent
031fb7a7
Exists in
master
and in
5 other branches
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 | ... | ... |