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,6 +177,57 @@ static void destroy(GtkObject *widget) | ||
| 177 | 177 | ||
| 178 | static void menu_save(GtkWidget *button, pw3270_trace *window) | 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 |