Commit 817d865ec0a10aee39cba5f475aeb015122e46a3
1 parent
5e7ea614
Exists in
master
and in
1 other branch
Addint "save" methods.
Showing
13 changed files
with
235 additions
and
28 deletions
Show diff stats
.gitignore
Makefile.in
... | ... | @@ -38,7 +38,8 @@ SOURCES= \ |
38 | 38 | $(wildcard src/trace/*.c) \ |
39 | 39 | $(wildcard src/dialogs/*.c) \ |
40 | 40 | $(wildcard src/dialogs/@OSNAME@/*.c) \ |
41 | - $(wildcard src/dialogs/print/*.c) | |
41 | + $(wildcard src/dialogs/print/*.c) \ | |
42 | + $(wildcard src/dialogs/save/*.c) | |
42 | 43 | |
43 | 44 | TEST_SOURCES= \ |
44 | 45 | $(wildcard src/testprogram/*.c) | ... | ... |
src/dialogs/print/print.c
... | ... | @@ -210,7 +210,7 @@ |
210 | 210 | |
211 | 211 | |
212 | 212 | // Setup defaults |
213 | - widget->mode = LIB3270_PRINT_ALL; | |
213 | + widget->mode = LIB3270_CONTENT_ALL; | |
214 | 214 | widget->show_selection = FALSE; |
215 | 215 | widget->font.name = NULL; // g_strdup(v3270_default_font); |
216 | 216 | widget->contents.width = 80; |
... | ... | @@ -219,7 +219,7 @@ |
219 | 219 | |
220 | 220 | } |
221 | 221 | |
222 | -V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT_MODE mode) | |
222 | +V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode) | |
223 | 223 | { |
224 | 224 | g_return_val_if_fail(GTK_IS_V3270(widget),NULL); |
225 | 225 | |
... | ... | @@ -237,7 +237,7 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT |
237 | 237 | |
238 | 238 | /*--[ Convenience ]----------------------------------------------------------------------------------*/ |
239 | 239 | |
240 | - int v3270_print(GtkWidget *widget, LIB3270_PRINT_MODE mode, GError **error) | |
240 | + int v3270_print(GtkWidget *widget, LIB3270_CONTENT_OPTION mode, GError **error) | |
241 | 241 | { |
242 | 242 | if(*error) |
243 | 243 | { |
... | ... | @@ -262,26 +262,26 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT |
262 | 262 | |
263 | 263 | int v3270_print_all(GtkWidget *widget, GError **error) |
264 | 264 | { |
265 | - return v3270_print(widget,LIB3270_PRINT_ALL,error); | |
265 | + return v3270_print(widget,LIB3270_CONTENT_ALL,error); | |
266 | 266 | } |
267 | 267 | |
268 | 268 | int v3270_print_selected(GtkWidget *widget, GError **error) |
269 | 269 | { |
270 | - return v3270_print(widget,LIB3270_PRINT_SELECTED,error); | |
270 | + return v3270_print(widget,LIB3270_CONTENT_SELECTED,error); | |
271 | 271 | } |
272 | 272 | |
273 | 273 | int v3270_print_copy(GtkWidget *widget, GError **error) |
274 | 274 | { |
275 | - return v3270_print(widget,LIB3270_PRINT_COPY,error); | |
275 | + return v3270_print(widget,LIB3270_CONTENT_COPY,error); | |
276 | 276 | } |
277 | 277 | |
278 | - void V3270PrintOperation_set_text_by_mode(V3270PrintOperation * operation, LIB3270_PRINT_MODE mode) | |
278 | + void V3270PrintOperation_set_text_by_mode(V3270PrintOperation * operation, LIB3270_CONTENT_OPTION mode) | |
279 | 279 | { |
280 | 280 | operation->mode = mode; |
281 | 281 | |
282 | 282 | switch(mode) |
283 | 283 | { |
284 | - case LIB3270_PRINT_ALL: | |
284 | + case LIB3270_CONTENT_ALL: | |
285 | 285 | { |
286 | 286 | size_t row, col; |
287 | 287 | int baddr = 0; |
... | ... | @@ -304,7 +304,7 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT |
304 | 304 | } |
305 | 305 | break; |
306 | 306 | |
307 | - case LIB3270_PRINT_SELECTED: | |
307 | + case LIB3270_CONTENT_SELECTED: | |
308 | 308 | { |
309 | 309 | unsigned int row, col; |
310 | 310 | unsigned int baddr = 0; |
... | ... | @@ -361,7 +361,7 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT |
361 | 361 | } |
362 | 362 | break; |
363 | 363 | |
364 | - case LIB3270_PRINT_COPY: | |
364 | + case LIB3270_CONTENT_COPY: | |
365 | 365 | { |
366 | 366 | lib3270_autoptr(char) copy = v3270_get_copy(GTK_WIDGET(operation->widget)); |
367 | 367 | if(copy) | ... | ... |
src/dialogs/print/private.h
... | ... | @@ -48,21 +48,21 @@ |
48 | 48 | |
49 | 49 | struct _V3270PrintOperation |
50 | 50 | { |
51 | - GtkPrintOperation parent; | |
52 | - GdkRGBA colors[V3270_COLOR_COUNT]; | |
53 | - LIB3270_PRINT_MODE mode; | |
54 | - v3270 * widget; | |
55 | - H3270 * session; | |
51 | + GtkPrintOperation parent; | |
52 | + GdkRGBA colors[V3270_COLOR_COUNT]; | |
53 | + LIB3270_CONTENT_OPTION mode; | |
54 | + v3270 * widget; | |
55 | + H3270 * session; | |
56 | 56 | |
57 | - size_t lpp; ///< @brief Lines per page (in rows). | |
58 | - size_t pages; ///< @brief Number of pages. | |
59 | - gboolean show_selection; ///< @brief Print selection box? | |
57 | + size_t lpp; ///< @brief Lines per page (in rows). | |
58 | + size_t pages; ///< @brief Number of pages. | |
59 | + gboolean show_selection; ///< @brief Print selection box? | |
60 | 60 | |
61 | 61 | struct |
62 | 62 | { |
63 | - size_t width; ///< @brief Width of the contents (in columns); | |
64 | - size_t height; ///< @brief Height of the contents (in rows); | |
65 | - column **text; ///< @brief Report contents. | |
63 | + size_t width; ///< @brief Width of the contents (in columns); | |
64 | + size_t height; ///< @brief Height of the contents (in rows); | |
65 | + column **text; ///< @brief Report contents. | |
66 | 66 | } contents; |
67 | 67 | |
68 | 68 | struct | ... | ... |
src/dialogs/private.h
... | ... | @@ -0,0 +1,68 @@ |
1 | +/* | |
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
5 | + * | |
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
7 | + * | |
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
10 | + * Free Software Foundation. | |
11 | + * | |
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
15 | + * obter mais detalhes. | |
16 | + * | |
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
20 | + * | |
21 | + * Este programa está nomeado como - e possui - linhas de código. | |
22 | + * | |
23 | + * Contatos: | |
24 | + * | |
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
27 | + * | |
28 | + */ | |
29 | + | |
30 | + #include <config.h> | |
31 | + #include <errno.h> | |
32 | + #include <string.h> | |
33 | + #include "private.h" | |
34 | + | |
35 | +/*--[ Implement ]------------------------------------------------------------------------------------*/ | |
36 | + | |
37 | + LIB3270_EXPORT int v3270_save(GtkWidget *widget, LIB3270_CONTENT_OPTION mode, const gchar *filename, GError **error) | |
38 | + { | |
39 | + if(*error) | |
40 | + { | |
41 | + return -1; | |
42 | + } | |
43 | + | |
44 | + if(!v3270_is_connected(widget)) | |
45 | + { | |
46 | + *error = g_error_new(g_quark_from_static_string(PACKAGE_NAME),ENOTCONN,"%s",strerror(ENOTCONN)); | |
47 | + return -1; | |
48 | + } | |
49 | + | |
50 | + lib3270_trace_event(v3270_get_session(widget),"save action activated (type=%d)",(int) mode); | |
51 | + return lib3270_save(v3270_get_session(widget),mode,filename); | |
52 | + } | |
53 | + | |
54 | + int v3270_save_all(GtkWidget *widget, const gchar *filename, GError **error) | |
55 | + { | |
56 | + return v3270_save(widget,LIB3270_CONTENT_ALL,filename,error); | |
57 | + } | |
58 | + | |
59 | + int v3270_save_selected(GtkWidget *widget, const gchar *filename, GError **error) | |
60 | + { | |
61 | + return v3270_save(widget,LIB3270_CONTENT_SELECTED,filename,error); | |
62 | + } | |
63 | + | |
64 | + int v3270_save_copy(GtkWidget *widget, const gchar *filename, GError **error) | |
65 | + { | |
66 | + return v3270_save(widget,LIB3270_CONTENT_COPY,filename,error); | |
67 | + } | |
68 | + | ... | ... |
... | ... | @@ -0,0 +1,81 @@ |
1 | +/* | |
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
5 | + * | |
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
7 | + * | |
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
10 | + * Free Software Foundation. | |
11 | + * | |
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
15 | + * obter mais detalhes. | |
16 | + * | |
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
20 | + * | |
21 | + * Este programa está nomeado como - e possui - linhas de código. | |
22 | + * | |
23 | + * Contatos: | |
24 | + * | |
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
27 | + * | |
28 | + */ | |
29 | + | |
30 | + #include <v3270.h> | |
31 | + #include <v3270/print.h> | |
32 | + #include <lib3270/log.h> | |
33 | + #include <lib3270/trace.h> | |
34 | + | |
35 | +/*--[ Widget definition ]----------------------------------------------------------------------------*/ | |
36 | + | |
37 | + struct _V3270PrintOperationClass | |
38 | + { | |
39 | + GtkPrintOperationClass parent_class; | |
40 | + | |
41 | + }; | |
42 | + | |
43 | + typedef struct _column | |
44 | + { | |
45 | + unsigned char c; | |
46 | + unsigned short attr; | |
47 | + } column; | |
48 | + | |
49 | + struct _V3270PrintOperation | |
50 | + { | |
51 | + GtkPrintOperation parent; | |
52 | + GdkRGBA colors[V3270_COLOR_COUNT]; | |
53 | + LIB3270_CONTENT_OPTION mode; | |
54 | + v3270 * widget; | |
55 | + H3270 * session; | |
56 | + | |
57 | + size_t lpp; ///< @brief Lines per page (in rows). | |
58 | + size_t pages; ///< @brief Number of pages. | |
59 | + gboolean show_selection; ///< @brief Print selection box? | |
60 | + | |
61 | + struct | |
62 | + { | |
63 | + size_t width; ///< @brief Width of the contents (in columns); | |
64 | + size_t height; ///< @brief Height of the contents (in rows); | |
65 | + column **text; ///< @brief Report contents. | |
66 | + } contents; | |
67 | + | |
68 | + struct | |
69 | + { | |
70 | + gchar * name; | |
71 | + v3270FontInfo info; | |
72 | + } font; | |
73 | + | |
74 | + }; | |
75 | + | |
76 | +/*--[ Prototypes ]-----------------------------------------------------------------------------------*/ | |
77 | + | |
78 | + G_GNUC_INTERNAL void V3270PrintOperation_begin_print(GtkPrintOperation *prt, GtkPrintContext *context); | |
79 | + G_GNUC_INTERNAL void V3270PrintOperation_draw_page(GtkPrintOperation *prt, GtkPrintContext *context, gint page); | |
80 | + | |
81 | + | ... | ... |
... | ... | @@ -0,0 +1,35 @@ |
1 | +/* | |
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
5 | + * | |
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
7 | + * | |
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
10 | + * Free Software Foundation. | |
11 | + * | |
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
15 | + * obter mais detalhes. | |
16 | + * | |
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
20 | + * | |
21 | + * Este programa está nomeado como - e possui - linhas de código. | |
22 | + * | |
23 | + * Contatos: | |
24 | + * | |
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
27 | + * | |
28 | + */ | |
29 | + | |
30 | + #include "private.h" | |
31 | + | |
32 | +/*--[ Implement ]------------------------------------------------------------------------------------*/ | |
33 | + | |
34 | + | |
35 | + | ... | ... |
src/include/v3270.h
... | ... | @@ -265,12 +265,18 @@ |
265 | 265 | LIB3270_EXPORT void v3270_select_host(GtkWidget *widget); |
266 | 266 | |
267 | 267 | |
268 | - LIB3270_EXPORT int v3270_print(GtkWidget *widget, LIB3270_PRINT_MODE mode, GError **error); | |
269 | - | |
268 | + LIB3270_EXPORT int v3270_print(GtkWidget *widget, LIB3270_CONTENT_OPTION mode, GError **error); | |
270 | 269 | LIB3270_EXPORT int v3270_print_all(GtkWidget *widget, GError **error); |
271 | 270 | LIB3270_EXPORT int v3270_print_selected(GtkWidget *widget, GError **error); |
272 | 271 | LIB3270_EXPORT int v3270_print_copy(GtkWidget *widget, GError **error); |
273 | 272 | |
273 | + // Save | |
274 | + LIB3270_EXPORT int v3270_save(GtkWidget *widget, LIB3270_CONTENT_OPTION mode, const gchar *filename, GError **error); | |
275 | + LIB3270_EXPORT int v3270_save_all(GtkWidget *widget, const gchar *filename, GError **error); | |
276 | + LIB3270_EXPORT int v3270_save_selected(GtkWidget *widget, const gchar *filename, GError **error); | |
277 | + LIB3270_EXPORT int v3270_save_copy(GtkWidget *widget, const gchar *filename, GError **error); | |
278 | + | |
279 | + // Misc | |
274 | 280 | LIB3270_EXPORT int v3270_exec_command(GtkWidget *widget, const gchar *cmdline); |
275 | 281 | |
276 | 282 | LIB3270_EXPORT GtkWidget * v3270_dialog_new(GtkWidget *widget, const gchar *title, const gchar *apply); | ... | ... |
src/include/v3270/print.h
... | ... | @@ -51,8 +51,8 @@ |
51 | 51 | |
52 | 52 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ |
53 | 53 | |
54 | - LIB3270_EXPORT V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT_MODE mode); | |
55 | - LIB3270_EXPORT void V3270PrintOperation_set_text_by_mode(V3270PrintOperation * operation, LIB3270_PRINT_MODE mode); | |
54 | + LIB3270_EXPORT V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode); | |
55 | + LIB3270_EXPORT void V3270PrintOperation_set_text_by_mode(V3270PrintOperation * operation, LIB3270_CONTENT_OPTION mode); | |
56 | 56 | |
57 | 57 | LIB3270_EXPORT GtkTreeModel * v3270_font_family_model_new(GtkWidget *widget, const gchar *selected, GtkTreeIter * active); |
58 | 58 | LIB3270_EXPORT GtkWidget * v3270_font_selection_new(const gchar *fontname); | ... | ... |
src/terminal/callbacks.c
... | ... | @@ -326,7 +326,7 @@ static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const |
326 | 326 | } |
327 | 327 | |
328 | 328 | |
329 | -static int print(H3270 *session, LIB3270_PRINT_MODE mode) | |
329 | +static int print(H3270 *session, LIB3270_CONTENT_OPTION mode) | |
330 | 330 | { |
331 | 331 | GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
332 | 332 | GError * error = NULL; | ... | ... |
src/testprogram/toolbar.c
... | ... | @@ -58,6 +58,11 @@ |
58 | 58 | lib3270_disconnect(v3270_get_session(terminal)); |
59 | 59 | } |
60 | 60 | |
61 | +static void save_all_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | |
62 | + { | |
63 | + lib3270_save_all(v3270_get_session(terminal),NULL); | |
64 | + } | |
65 | + | |
61 | 66 | static void ft_clicked(GtkButton *button, GtkWidget *terminal) |
62 | 67 | { |
63 | 68 | /* |
... | ... | @@ -175,7 +180,8 @@ |
175 | 180 | { "gtk-print", G_CALLBACK(print_clicked), "Print screen contents" }, |
176 | 181 | { "gtk-harddisk", G_CALLBACK(ft_clicked), "Open file transfer dialog" }, |
177 | 182 | { "gtk-copy", G_CALLBACK(copy_clicked), "Copy data" }, |
178 | - { "gtk-paste", G_CALLBACK(paste_clicked), "Paste data" } | |
183 | + { "gtk-paste", G_CALLBACK(paste_clicked), "Paste data" }, | |
184 | + { "gtk-save", G_CALLBACK(save_all_clicked), "Save screen" } | |
179 | 185 | }; |
180 | 186 | |
181 | 187 | GtkWidget * toolbar = gtk_toolbar_new(); | ... | ... |
v3270.cbp
... | ... | @@ -71,6 +71,13 @@ |
71 | 71 | </Unit> |
72 | 72 | <Unit filename="src/dialogs/print/private.h" /> |
73 | 73 | <Unit filename="src/dialogs/private.h" /> |
74 | + <Unit filename="src/dialogs/save/convenience.c"> | |
75 | + <Option compilerVar="CC" /> | |
76 | + </Unit> | |
77 | + <Unit filename="src/dialogs/save/private.h" /> | |
78 | + <Unit filename="src/dialogs/save/save.c"> | |
79 | + <Option compilerVar="CC" /> | |
80 | + </Unit> | |
74 | 81 | <Unit filename="src/dialogs/security.c"> |
75 | 82 | <Option compilerVar="CC" /> |
76 | 83 | </Unit> | ... | ... |