/* * "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., 59 Temple * Place, Suite 330, Boston, MA, 02111-1307, USA * * Este programa está nomeado como main.c e possui - linhas de código. * * Contatos: * * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) * licinio@bb.com.br (Licínio Luis Branco) * kraucer@bb.com.br (Kraucer Fernandes Mazuco) * */ #include "globals.h" #include "v3270/v3270.h" #include #include /*--[ Statics ]--------------------------------------------------------------------------------------*/ static GtkWidget *toplevel = NULL; /*--[ Implement ]------------------------------------------------------------------------------------*/ static int popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list args) { GtkWidget * dialog; GtkMessageType msgtype = GTK_MESSAGE_WARNING; GtkButtonsType buttons = GTK_BUTTONS_OK; gchar * text = g_strdup_vprintf(fmt,args); if(type == LIB3270_NOTIFY_CRITICAL) { msgtype = GTK_MESSAGE_ERROR; buttons = GTK_BUTTONS_CLOSE; } if(msg) { dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(toplevel),GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,msgtype,buttons,"%s",msg); gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog),"%s",text); } else { dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(toplevel),GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,msgtype,buttons,"%s",text); } g_free(text); gtk_window_set_title(GTK_WINDOW(dialog),title ? title : "Error"); gtk_dialog_run(GTK_DIALOG (dialog)); gtk_widget_destroy(dialog); return 0; } static int initialize(void) { const gchar * msg = gtk_check_version(GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); if(msg) { // Invalid GTK version, notify user int rc; GtkWidget *dialog = gtk_message_dialog_new( NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, _( "This program requires GTK version %d.%d.%d" ),GTK_MAJOR_VERSION,GTK_MINOR_VERSION,GTK_MICRO_VERSION ); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),"%s",msg); gtk_window_set_title(GTK_WINDOW(dialog),_( "GTK Version mismatch" )); #if GTK_CHECK_VERSION(2,10,0) gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE); #endif rc = gtk_dialog_run(GTK_DIALOG (dialog)); gtk_widget_destroy(dialog); if(rc != GTK_RESPONSE_OK) return EINVAL; } } int main (int argc, char *argv[]) { gtk_init(&argc, &argv); if(!initialize()) return -1; configuration_init(); lib3270_set_popup_handler(popup_handler); toplevel = create_main_window(); if(toplevel) { gtk_widget_show(toplevel); gtk_main(); } configuration_deinit(); return 0; }