/* * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a * aplicativos mainframe. Registro no INPI sob o nome G3270. * * Copyright (C) <2008> * * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela * Free Software Foundation. * * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para * obter mais detalhes. * * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin * St, Fifth Floor, Boston, MA 02110-1301 USA * * Este programa está nomeado como - e possui - linhas de código. * * Contatos: * * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) * */ #include "private.h" #include #include #include #include /*--[ Implement ]------------------------------------------------------------------------------------*/ int v3270_print_dialog(GtkWidget *widget, LIB3270_CONTENT_OPTION mode, GError **error) { int rc; if(!(widget && GTK_IS_V3270(widget))) { return errno = EINVAL; } lib3270_trace_event(v3270_get_session(widget),"print action activated (type=%d)",(int) mode); // Print operation. GtkPrintOperation * operation = v3270_print_operation_new(widget, mode); gtk_print_operation_set_show_progress(operation,TRUE); gtk_print_operation_set_allow_async(operation,FALSE); GtkPrintOperationResult result = GTK_PRINT_OPERATION_RESULT_ERROR; if(error) { result = gtk_print_operation_run( operation, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW(gtk_widget_get_toplevel(widget)), error ); rc = (*error == NULL ? 0 : -1); } else { GError *err = NULL; result = gtk_print_operation_run( operation, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW(gtk_widget_get_toplevel(widget)), &err ); if(err) { v3270_error_popup( widget, NULL, _("Print operation has failed"), err->message ); g_error_free(err); rc = -1; } } switch(result) { case GTK_PRINT_OPERATION_RESULT_ERROR: g_message("Error on print operation"); rc = -1; break; case GTK_PRINT_OPERATION_RESULT_APPLY: g_message("The print settings should be stored."); rc = 0; break; case GTK_PRINT_OPERATION_RESULT_CANCEL: g_message("The print operation has been canceled, the print settings should not be stored."); rc = 0; break; case GTK_PRINT_OPERATION_RESULT_IN_PROGRESS: g_message("The print operation is running"); rc = 0; break; default: g_message("Unexpected status %d in print operation",(int) result); } debug("%s(%p)",__FUNCTION__,operation); g_object_unref(operation); debug("%s(%p)",__FUNCTION__,operation); return rc; } int v3270_print(GtkWidget *widget, GError **error) { return v3270_print_dialog(widget,(lib3270_has_selection(GTK_V3270(widget)->host) ? LIB3270_CONTENT_SELECTED : LIB3270_CONTENT_ALL),error); } int v3270_print_all(GtkWidget *widget, GError **error) { return v3270_print_dialog(widget,LIB3270_CONTENT_ALL,error); } int v3270_print_selected(GtkWidget *widget, GError **error) { return v3270_print_dialog(widget,LIB3270_CONTENT_SELECTED,error); } int v3270_print_copy(GtkWidget *widget, GError **error) { return v3270_print_dialog(widget,LIB3270_CONTENT_COPY,error); }