/* * "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 #include #include #include #include /*--[ Implement ]------------------------------------------------------------------------------------*/ const gchar * v3270_get_default_colors() { #ifdef _WIN32 { HKEY hKey; DWORD disp = 0; LSTATUS rc = RegCreateKeyEx( HKEY_LOCAL_MACHINE, "Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE|KEY_READ, NULL, &hKey, &disp); debug("%s=%d","Software\\" LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME),rc); if(rc == ERROR_SUCCESS) { static char * default_colors = NULL; DWORD cbData = 4096; if(!default_colors) { default_colors = (char *) malloc(cbData+1); } else { default_colors = (char *) realloc(default_colors,cbData+1); } DWORD dwRet = RegQueryValueEx(hKey,"colors",NULL,NULL,(LPBYTE) default_colors, &cbData); debug("dwRet=%d",dwRet); RegCloseKey(hKey); if(dwRet == ERROR_SUCCESS) { default_colors = (char *) realloc(default_colors,cbData+1); default_colors[cbData] = 0; return default_colors; } free(default_colors); default_colors = NULL; } } #endif // _WIN32 return "#000000;" // V3270_COLOR_BACKGROUND "#7890F0;" // V3270_COLOR_BLUE "#FF0000;" // V3270_COLOR_RED "#FF00FF;" // V3270_COLOR_PINK "#00FF00;" // V3270_COLOR_GREEN "#00FFFF;" // V3270_COLOR_TURQUOISE "#FFFF00;" // V3270_COLOR_YELLOW "#FFFFFF;" // V3270_COLOR_WHITE "#000000;" // V3270_COLOR_BLACK "#000080;" // V3270_COLOR_DARK_BLUE "#FFA200;" // V3270_COLOR_ORANGE "#800080;" // V3270_COLOR_PURPLE "#008000;" // V3270_COLOR_DARK_GREEN "#008080;" // V3270_COLOR_DARK_TURQUOISE "#A0A000;" // V3270_COLOR_MUSTARD "#C0C0C0;" // V3270_COLOR_GRAY "#00FF00;" // V3270_COLOR_FIELD_DEFAULT "#FF0000;" // V3270_COLOR_FIELD_INTENSIFIED "#00FFFF;" // V3270_COLOR_FIELD_PROTECTED "#FFFFFF;" // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED "#404040;" // V3270_COLOR_SELECTED_BG "#FFFFFF;" // V3270_COLOR_SELECTED_FG, "#00FF00;" // V3270_COLOR_CROSS_HAIR "#000000;" // V3270_COLOR_OIA_BACKGROUND "#00FF00;" // V3270_COLOR_OIA "#7890F0;" // V3270_COLOR_OIA_SEPARATOR "#FFFFFF;" // V3270_COLOR_OIA_STATUS_OK "#FFFF00;" // V3270_COLOR_OIA_STATUS_WARNING "#FFFF00"; // V3270_COLOR_OIA_STATUS_INVALID } LIB3270_EXPORT void v3270_set_colors(GtkWidget *widget, const gchar *colors) { g_return_if_fail(GTK_IS_V3270(widget)); if(!colors) { colors = v3270_get_default_colors(); } v3270_set_color_table(GTK_V3270(widget)->color,colors); v3270_emit_save_settings(widget,NULL); v3270_reload(widget); } LIB3270_EXPORT void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, const GdkRGBA *color) { g_return_if_fail(GTK_IS_V3270(widget)); GTK_V3270(widget)->color[id] = *color; #if !GTK_CHECK_VERSION(3,0,0) gdk_colormap_alloc_color(gtk_widget_get_default_colormap(),color,TRUE,TRUE); #endif // !GTK(3,0,0) } LIB3270_EXPORT GdkRGBA * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id) { g_return_val_if_fail(GTK_IS_V3270(widget),NULL); return GTK_V3270(widget)->color+id; } LIB3270_EXPORT const GdkRGBA * v3270_get_color_table(GtkWidget *widget) { g_return_val_if_fail(GTK_IS_V3270(widget),NULL); return GTK_V3270(widget)->color; } LIB3270_EXPORT void v3270_set_mono_color_table(GdkRGBA *clr, const gchar *fg, const gchar *bg) { int f; gdk_rgba_parse(clr,bg); gdk_rgba_parse(clr+1,fg); for(f=2;fhost,colortype); } LIB3270_EXPORT unsigned short v3270_get_session_color_type(GtkWidget *widget) { g_return_val_if_fail(GTK_IS_V3270(widget),-1); return lib3270_get_color_type(GTK_V3270(widget)->host); }