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 | ... | ... |