pidgin/gtkwhiteboard.c

changeset 42352
1c53950f9052
parent 42251
63639da06cbd
child 42575
580339aa47cc
equal deleted inserted replaced
42351:876522a8b982 42352:1c53950f9052
397 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); 397 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
398 gtk_window_present_with_time(GTK_WINDOW(dialog), GDK_CURRENT_TIME); 398 gtk_window_present_with_time(GTK_WINDOW(dialog), GDK_CURRENT_TIME);
399 } 399 }
400 400
401 static void 401 static void
402 pidgin_whiteboard_save_response(GtkNativeDialog *self, gint response_id, 402 pidgin_whiteboard_save_response(GObject *obj, GAsyncResult *result,
403 gpointer data) 403 gpointer data)
404 { 404 {
405 PidginWhiteboard *gtkwb = (PidginWhiteboard *)data; 405 PidginWhiteboard *gtkwb = (PidginWhiteboard *)data;
406 GFile *file = NULL;
407 char *filename = NULL;
406 GdkPixbuf *pixbuf; 408 GdkPixbuf *pixbuf;
407 409 gboolean success;
408 if(response_id == GTK_RESPONSE_ACCEPT) { 410
409 gboolean success; 411 file = gtk_file_dialog_save_finish(GTK_FILE_DIALOG(obj), result, NULL);
410 GFile *file = gtk_file_chooser_get_file(GTK_FILE_CHOOSER(self)); 412 if(file == NULL) {
411 gchar *filename = g_file_get_path(file); 413 return;
412 414 }
413 pixbuf = gdk_pixbuf_get_from_surface(gtkwb->surface, 0, 0, 415
414 gtkwb->width, gtkwb->height); 416 filename = g_file_get_path(file);
415 417 pixbuf = gdk_pixbuf_get_from_surface(gtkwb->surface, 0, 0,
416 success = gdk_pixbuf_save(pixbuf, filename, "png", NULL, 418 gtkwb->width, gtkwb->height);
417 "compression", "9", NULL); 419
418 g_object_unref(pixbuf); 420 success = gdk_pixbuf_save(pixbuf, filename, "png", NULL,
419 421 "compression", "9", NULL);
420 if (success) { 422 g_object_unref(pixbuf);
421 purple_debug_info("gtkwhiteboard", "whiteboard saved to \"%s\"", 423
422 filename); 424 if (success) {
423 } else { 425 purple_debug_info("gtkwhiteboard", "whiteboard saved to \"%s\"",
424 purple_notify_error(NULL, _("Whiteboard"), 426 filename);
425 _("Unable to save the file"), NULL, NULL); 427 } else {
426 purple_debug_error("gtkwhiteboard", "whiteboard " 428 purple_notify_error(NULL, _("Whiteboard"),
427 "couldn't be saved to \"%s\"", filename); 429 _("Unable to save the file"), NULL, NULL);
428 } 430 purple_debug_error("gtkwhiteboard",
429 431 "whiteboard couldn't be saved to \"%s\"", filename);
430 g_free(filename); 432 }
431 g_object_unref(file); 433
432 } 434 g_free(filename);
433 435 g_object_unref(file);
434 g_object_unref(self); 436 }
435 }
436
437 437
438 static void 438 static void
439 pidgin_whiteboard_button_save_press(G_GNUC_UNUSED GtkWidget *widget, 439 pidgin_whiteboard_button_save_press(G_GNUC_UNUSED GtkWidget *widget,
440 gpointer _gtkwb) 440 gpointer _gtkwb)
441 { 441 {
442 PidginWhiteboard *gtkwb = _gtkwb; 442 PidginWhiteboard *gtkwb = _gtkwb;
443 GtkFileChooserNative *chooser; 443 GtkFileDialog *dialog;
444 444
445 chooser = gtk_file_chooser_native_new(_("Save File"), GTK_WINDOW(gtkwb), 445 dialog = gtk_file_dialog_new();
446 GTK_FILE_CHOOSER_ACTION_SAVE, 446 gtk_file_dialog_set_title(dialog, _("Save File"));
447 _("_Save"), _("_Cancel")); 447 gtk_file_dialog_set_modal(dialog, TRUE);
448 448 gtk_file_dialog_set_initial_name(dialog, "whiteboard.png");
449 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), 449 gtk_file_dialog_save(dialog, GTK_WINDOW(gtkwb), NULL,
450 "whiteboard.png"); 450 pidgin_whiteboard_save_response, gtkwb);
451 451 g_object_unref(dialog);
452 g_signal_connect(chooser, "response",
453 G_CALLBACK(pidgin_whiteboard_save_response), gtkwb);
454
455 gtk_native_dialog_show(GTK_NATIVE_DIALOG(chooser));
456 } 452 }
457 453
458 static void 454 static void
459 notify_color_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec, gpointer data) { 455 notify_color_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec, gpointer data) {
460 PidginWhiteboard *gtkwb = data; 456 PidginWhiteboard *gtkwb = data;

mercurial