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 |