diff --git a/src/terminal/actions/print.c b/src/terminal/actions/print.c new file mode 100644 index 0000000..de33f7b --- /dev/null +++ b/src/terminal/actions/print.c @@ -0,0 +1,66 @@ +/* + * "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 properties.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) + * + */ + + #include "private.h" + #include + #include + #include + +/*--[ Implement ]------------------------------------------------------------------------------------*/ + + int fire_print_action(GtkWidget *widget, const V3270_ACTION *action) { + + debug("%s",__FUNCTION__); + + switch( ((int) action->flags) ) + { + case -1: // Default action (depends on selection) + v3270_print(widget,NULL); + break; + + case LIB3270_CONTENT_ALL: // All terminal contents + v3270_print_all(widget,NULL); + break; + + case LIB3270_CONTENT_SELECTED: // Only selected area. + v3270_print_selected(widget,NULL); + break; + + case LIB3270_CONTENT_COPY: // Copy buffer. + v3270_print_copy(widget,NULL); + break; + + default: + g_warning("Unexpected print flags %u",(unsigned int) action->flags); + } + + return 0; + } + + diff --git a/src/terminal/actions/private.h b/src/terminal/actions/private.h index 1e1d922..5d07e8c 100644 --- a/src/terminal/actions/private.h +++ b/src/terminal/actions/private.h @@ -35,5 +35,7 @@ G_GNUC_INTERNAL int fire_copy_accelerator(GtkWidget *widget, const V3270_ACTION *action); G_GNUC_INTERNAL int fire_paste_accelerator(GtkWidget *widget, const V3270_ACTION *action); G_GNUC_INTERNAL int fire_zoom_action(GtkWidget *widget, const V3270_ACTION *action); + G_GNUC_INTERNAL int fire_save_action(GtkWidget *widget, const V3270_ACTION *action); + G_GNUC_INTERNAL int fire_print_action(GtkWidget *widget, const V3270_ACTION *action); G_GNUC_INTERNAL int fire_keypad_action(GtkWidget *widget, const V3270_ACTION *action); diff --git a/src/terminal/actions/save.c b/src/terminal/actions/save.c new file mode 100644 index 0000000..c7ebfb3 --- /dev/null +++ b/src/terminal/actions/save.c @@ -0,0 +1,56 @@ +/* + * "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 properties.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) + * + */ + + #include "private.h" + #include + #include + #include + #include + #include + +/*--[ Implement ]------------------------------------------------------------------------------------*/ + + int fire_save_action(GtkWidget *widget, const V3270_ACTION *action) { + + LIB3270_CONTENT_OPTION mode = (LIB3270_CONTENT_OPTION) action->flags; + + debug("%s(%d)",__FUNCTION__,((int) action->flags)); + + if(((int) action->flags) < 0) + mode = lib3270_has_selection(GTK_V3270(widget)->host) ? LIB3270_CONTENT_SELECTED : LIB3270_CONTENT_ALL; + + GtkWidget *dialog = v3270_save_dialog_new(widget,mode,NULL); + gtk_widget_show_all(dialog); + v3270_save_dialog_run(dialog); + gtk_widget_destroy(dialog); + + return 0; + } + + diff --git a/src/terminal/actions/table.c b/src/terminal/actions/table.c index b2b89a8..953b6e6 100644 --- a/src/terminal/actions/table.c +++ b/src/terminal/actions/table.c @@ -63,6 +63,7 @@ { .flags = 0, .name = "copy", + .icon = "edit-copy", .summary = N_( "Copy" ), .key = 'c', .mods = GDK_CONTROL_MASK, @@ -81,6 +82,7 @@ { .flags = V3270_COPY_TEXT, .name = "copy-text", + .icon = "edit-copy", .summary = N_( "Copy as plain text" ), .key = 'c', .mods = GDK_SHIFT_MASK|GDK_CONTROL_MASK, @@ -90,6 +92,7 @@ { .flags = V3270_ACTION_FLAG_CUT|V3270_COPY_DEFAULT, .name = "cut", + .icon = "edit-cut", .summary = N_( "Cut" ), .key = 'x', .mods = GDK_CONTROL_MASK, @@ -108,6 +111,7 @@ { .flags = V3270_ACTION_FLAG_CUT|V3270_COPY_TEXT, .name = "cut-text", + .icon = "edit-cut", .summary = N_( "Cut as plain text" ), .key = 'x', .mods = GDK_SHIFT_MASK|GDK_CONTROL_MASK, @@ -117,6 +121,7 @@ { .flags = 0, .name = "paste", + .icon = "edit-paste", .summary = N_("Paste"), .key = 'v', .mods = GDK_CONTROL_MASK, @@ -126,6 +131,7 @@ { .flags = 1, .name = "paste-text", + .icon = "edit-paste", .summary = N_("Paste as plain text"), .key = 'v', .mods = GDK_SHIFT_MASK|GDK_CONTROL_MASK, @@ -144,6 +150,7 @@ { .flags = 0, .name = "zoom-in", + .icon = "zoom-in", .summary = N_("Zoom in"), .key = GDK_KP_Add, .mods = GDK_CONTROL_MASK, @@ -154,6 +161,7 @@ .flags = 1, .name = "zoom-out", .summary = N_("Zoom out"), + .icon = "zoom-out", .key = GDK_KP_Subtract, .mods = GDK_CONTROL_MASK, .activate = fire_zoom_action @@ -163,11 +171,90 @@ .flags = 2, .name = "zoom-fit-best", .summary = N_("Zoom to best size"), + .icon = "zoom-fit-best", .key = '0', .mods = GDK_CONTROL_MASK, .activate = fire_zoom_action }, + // + // Save actions + // + { + .flags = -1, + .name = "save", + .icon = "document-save-as", + .summary = N_("Save screen or selection"), + .activate = fire_save_action + + }, + + { + .flags = LIB3270_CONTENT_ALL, + .name = "save-all", + .icon = "document-save-as", + .summary = N_("Save screen"), + .activate = fire_save_action + + }, + + { + .flags = LIB3270_CONTENT_SELECTED, + .name = "save-selected", + .icon = "document-save-as", + .summary = N_("Save selected area"), + .activate = fire_save_action + + }, + + { + .flags = LIB3270_CONTENT_COPY, + .name = "save-copy", + .icon = "document-save-as", + .summary = N_("Save Copy"), + .activate = fire_save_action + + }, + + // + // Print actions + // + { + .flags = -1, + .name = "print", + .icon = "document-print", + .summary = N_("Print screen or selection"), + .activate = fire_print_action + + }, + + { + .flags = LIB3270_CONTENT_ALL, + .name = "print-all", + .icon = "document-print", + .summary = N_("Print screen"), + .activate = fire_print_action + + }, + + { + .flags = LIB3270_CONTENT_SELECTED, + .name = "print-selected", + .icon = "document-print", + .summary = N_("Print selected area"), + .activate = fire_print_action + + }, + + { + .flags = LIB3270_CONTENT_COPY, + .name = "print-copy", + .icon = "document-print", + .summary = N_("Print Copy"), + .activate = fire_print_action + + }, + { .name = NULL } diff --git a/v3270.cbp b/v3270.cbp index 20b6555..71e4387 100644 --- a/v3270.cbp +++ b/v3270.cbp @@ -231,7 +231,13 @@ + + + + -- libgit2 0.21.2