Commit 891467e0aa734130bfaf5da3845a4327c25900e4
1 parent
5e333817
Exists in
master
and in
5 other branches
Implementando novos dialogos de transferencia de arquivos
Showing
5 changed files
with
251 additions
and
49 deletions
Show diff stats
src/pw3270/ft/ft.cbp
| @@ -40,6 +40,9 @@ | @@ -40,6 +40,9 @@ | ||
| 40 | <Unit filename="ftdialog.c"> | 40 | <Unit filename="ftdialog.c"> |
| 41 | <Option compilerVar="CC" /> | 41 | <Option compilerVar="CC" /> |
| 42 | </Unit> | 42 | </Unit> |
| 43 | + <Unit filename="ftprogress.c"> | ||
| 44 | + <Option compilerVar="CC" /> | ||
| 45 | + </Unit> | ||
| 43 | <Unit filename="testprogram.c"> | 46 | <Unit filename="testprogram.c"> |
| 44 | <Option compilerVar="CC" /> | 47 | <Option compilerVar="CC" /> |
| 45 | </Unit> | 48 | </Unit> |
src/pw3270/ft/ftdialog.c
| @@ -54,7 +54,8 @@ | @@ -54,7 +54,8 @@ | ||
| 54 | { | 54 | { |
| 55 | GtkDialog parent; | 55 | GtkDialog parent; |
| 56 | GtkWidget * filename[FILENAME_COUNT]; /**< Filenames for the transfer */ | 56 | GtkWidget * filename[FILENAME_COUNT]; /**< Filenames for the transfer */ |
| 57 | - int value[VALUE_COUNT]; | 57 | + GtkWidget * units; /**< Units frame box */ |
| 58 | + GtkSpinButton * value[VALUE_COUNT]; | ||
| 58 | LIB3270_FT_OPTION options; | 59 | LIB3270_FT_OPTION options; |
| 59 | }; | 60 | }; |
| 60 | 61 | ||
| @@ -166,22 +167,6 @@ static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt) | @@ -166,22 +167,6 @@ static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt) | ||
| 166 | return GTK_WIDGET(frame); | 167 | return GTK_WIDGET(frame); |
| 167 | } | 168 | } |
| 168 | 169 | ||
| 169 | -/* | ||
| 170 | -http://stackoverflow.com/questions/16539127/gtkentry-change-text-on-user-input | ||
| 171 | -void entry_insert(GtkEntryBuffer *buffer, guint position, gchar *chars, guint n_chars, gpointer user_data) | ||
| 172 | -{ | ||
| 173 | - | ||
| 174 | -} | ||
| 175 | -static void setup_numeric_entry(GtkEntry *entry) | ||
| 176 | -{ | ||
| 177 | - gtk_entry_set_max_length(entry,10); | ||
| 178 | - gtk_entry_set_width_chars(entry,10); | ||
| 179 | - gtk_entry_set_alignment(entry,1); | ||
| 180 | - gtk_entry_set_input_purpose(entry,GTK_INPUT_PURPOSE_NUMBER); | ||
| 181 | - g_signal_connect_after(G_OBJECT(entry), "insert-text", G_CALLBACK(entry_insert),NULL); | ||
| 182 | -} | ||
| 183 | -*/ | ||
| 184 | - | ||
| 185 | static GtkWidget * ftvalue_new(v3270FTD *dialog, GtkGrid *grid, int r, const struct ftvalues *val) | 170 | static GtkWidget * ftvalue_new(v3270FTD *dialog, GtkGrid *grid, int r, const struct ftvalues *val) |
| 186 | { | 171 | { |
| 187 | int f; | 172 | int f; |
| @@ -190,20 +175,22 @@ static GtkWidget * ftvalue_new(v3270FTD *dialog, GtkGrid *grid, int r, const str | @@ -190,20 +175,22 @@ static GtkWidget * ftvalue_new(v3270FTD *dialog, GtkGrid *grid, int r, const str | ||
| 190 | { | 175 | { |
| 191 | int col = (f&1)*2; | 176 | int col = (f&1)*2; |
| 192 | int row = (f/2)+r; | 177 | int row = (f/2)+r; |
| 178 | + int id = val[f].id; | ||
| 193 | GtkWidget * label = gtk_label_new_with_mnemonic(gettext(val[f].label)); | 179 | GtkWidget * label = gtk_label_new_with_mnemonic(gettext(val[f].label)); |
| 194 | - GtkWidget * entry = GTK_WIDGET(gtk_spin_button_new_with_range(0,99999,1)); | 180 | + |
| 181 | + dialog->value[id] = GTK_SPIN_BUTTON(gtk_spin_button_new_with_range(0,99999,1)); | ||
| 195 | 182 | ||
| 196 | gtk_widget_set_hexpand(GTK_WIDGET(label),TRUE); | 183 | gtk_widget_set_hexpand(GTK_WIDGET(label),TRUE); |
| 197 | gtk_widget_set_tooltip_text(GTK_WIDGET(label),gettext(val[f].tooltip)); | 184 | gtk_widget_set_tooltip_text(GTK_WIDGET(label),gettext(val[f].tooltip)); |
| 198 | gtk_misc_set_alignment(GTK_MISC(label),0,0.5); | 185 | gtk_misc_set_alignment(GTK_MISC(label),0,0.5); |
| 199 | 186 | ||
| 200 | - gtk_label_set_mnemonic_widget(GTK_LABEL(label),GTK_WIDGET(entry)); | ||
| 201 | - gtk_widget_set_tooltip_text(GTK_WIDGET(entry),gettext(val[f].tooltip)); | 187 | + gtk_label_set_mnemonic_widget(GTK_LABEL(label),GTK_WIDGET(dialog->value[id])); |
| 188 | + gtk_widget_set_tooltip_text(GTK_WIDGET(dialog->value[id]),gettext(val[f].tooltip)); | ||
| 202 | 189 | ||
| 203 | - g_object_set_data(G_OBJECT(entry),"cfg",(gpointer) &val[f]); | 190 | + g_object_set_data(G_OBJECT(dialog->value[id]),"cfg",(gpointer) &val[f]); |
| 204 | 191 | ||
| 205 | gtk_grid_attach(grid,GTK_WIDGET(label),col,row,1,1); | 192 | gtk_grid_attach(grid,GTK_WIDGET(label),col,row,1,1); |
| 206 | - gtk_grid_attach(grid,GTK_WIDGET(entry),col+1,row,1,1); | 193 | + gtk_grid_attach(grid,GTK_WIDGET(dialog->value[id]),col+1,row,1,1); |
| 207 | 194 | ||
| 208 | } | 195 | } |
| 209 | 196 | ||
| @@ -237,7 +224,7 @@ static GtkWidget * ftradio_new(v3270FTD *dialog, const gchar *title, const gchar | @@ -237,7 +224,7 @@ static GtkWidget * ftradio_new(v3270FTD *dialog, const gchar *title, const gchar | ||
| 237 | return GTK_WIDGET(frame); | 224 | return GTK_WIDGET(frame); |
| 238 | } | 225 | } |
| 239 | 226 | ||
| 240 | -GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | 227 | +GtkWidget * v3270_ft_dialog_new(LIB3270_FT_OPTION options) |
| 241 | { | 228 | { |
| 242 | v3270FTD *dialog = g_object_new(GTK_TYPE_V3270FTD, NULL); | 229 | v3270FTD *dialog = g_object_new(GTK_TYPE_V3270FTD, NULL); |
| 243 | 230 | ||
| @@ -266,7 +253,12 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -266,7 +253,12 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
| 266 | gtk_grid_set_column_spacing(grid,5); | 253 | gtk_grid_set_column_spacing(grid,5); |
| 267 | gtk_grid_set_row_spacing(grid,5); | 254 | gtk_grid_set_row_spacing(grid,5); |
| 268 | 255 | ||
| 256 | +#if GTK_CHECK_VERSION(3,10,0) | ||
| 269 | GtkButton * browse = GTK_BUTTON(gtk_button_new_from_icon_name("text-x-generic",GTK_ICON_SIZE_BUTTON)); | 257 | GtkButton * browse = GTK_BUTTON(gtk_button_new_from_icon_name("text-x-generic",GTK_ICON_SIZE_BUTTON)); |
| 258 | +#else | ||
| 259 | + GtkButton * browse = GTK_BUTTON(gtk_button_new_from_stock(GTK_STOCK_FILE)); | ||
| 260 | +#endif // GTK_CHECK_VERSION | ||
| 261 | + | ||
| 270 | gtk_button_set_focus_on_click(browse,FALSE); | 262 | gtk_button_set_focus_on_click(browse,FALSE); |
| 271 | gtk_widget_set_tooltip_text(GTK_WIDGET(browse),_("Select file")); | 263 | gtk_widget_set_tooltip_text(GTK_WIDGET(browse),_("Select file")); |
| 272 | g_signal_connect(G_OBJECT(browse),"clicked",G_CALLBACK(browse_file),dialog); | 264 | g_signal_connect(G_OBJECT(browse),"clicked",G_CALLBACK(browse_file),dialog); |
| @@ -308,7 +300,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -308,7 +300,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
| 308 | }, | 300 | }, |
| 309 | { | 301 | { |
| 310 | LIB3270_FT_OPTION_REMAP, | 302 | LIB3270_FT_OPTION_REMAP, |
| 311 | - N_("_Remap to ASCII Characters."), | 303 | + N_("Re_map to ASCII Characters."), |
| 312 | N_("Remap the text to ensure maximum compatibility between the workstation's character set and encoding and the host's EBCDIC code page.") | 304 | N_("Remap the text to ensure maximum compatibility between the workstation's character set and encoding and the host's EBCDIC code page.") |
| 313 | }, | 305 | }, |
| 314 | { | 306 | { |
| @@ -320,25 +312,19 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -320,25 +312,19 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
| 320 | 312 | ||
| 321 | gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftoption_new(dialog,opt),FALSE,TRUE,2); | 313 | gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftoption_new(dialog,opt),FALSE,TRUE,2); |
| 322 | 314 | ||
| 323 | - // Create values box | ||
| 324 | - /* | ||
| 325 | - static const struct ftvalues val[] = | ||
| 326 | - { | ||
| 327 | - { | ||
| 328 | - VALUE_DFT, | ||
| 329 | - N_( "DFT B_uffer size:" ), | ||
| 330 | - N_( "Buffer size for DFT-mode transfers. Can range from 256 to 32768. Larger values give better performance, but some hosts may not be able to support them." ) | ||
| 331 | - }, | 315 | + // Create DFT |
| 316 | + GtkBox * box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2)); | ||
| 317 | + GtkWidget * label = gtk_label_new_with_mnemonic(_("DFT B_uffer size:")); | ||
| 318 | + dialog->value[VALUE_DFT] = GTK_SPIN_BUTTON(gtk_spin_button_new_with_range(256,32768,1)); | ||
| 319 | + gtk_misc_set_alignment(GTK_MISC(label),0,0.5); | ||
| 332 | 320 | ||
| 333 | - { | ||
| 334 | - 0, | ||
| 335 | - NULL, | ||
| 336 | - NULL | ||
| 337 | - } | ||
| 338 | - }; | 321 | + gtk_label_set_mnemonic_widget(GTK_LABEL(label),GTK_WIDGET(dialog->value[VALUE_DFT])); |
| 322 | + | ||
| 323 | + gtk_box_pack_start(box,label,FALSE,TRUE,2); | ||
| 324 | + gtk_box_pack_start(box,GTK_WIDGET(dialog->value[VALUE_DFT]),FALSE,TRUE,2); | ||
| 325 | + | ||
| 326 | + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(box),FALSE,TRUE,2); | ||
| 339 | 327 | ||
| 340 | - // gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftvalue_new(dialog,val),FALSE,TRUE,2); | ||
| 341 | - */ | ||
| 342 | } | 328 | } |
| 343 | else | 329 | else |
| 344 | { | 330 | { |
| @@ -378,7 +364,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -378,7 +364,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
| 378 | }, | 364 | }, |
| 379 | { | 365 | { |
| 380 | LIB3270_FT_OPTION_REMAP, | 366 | LIB3270_FT_OPTION_REMAP, |
| 381 | - N_("_Remap to EBCDIC Characters."), | 367 | + N_("Re_map to EBCDIC Characters."), |
| 382 | N_("Remap the text to ensure maximum compatibility between the workstation's character set and encoding and the host's EBCDIC code page.") | 368 | N_("Remap the text to ensure maximum compatibility between the workstation's character set and encoding and the host's EBCDIC code page.") |
| 383 | }, | 369 | }, |
| 384 | { | 370 | { |
| @@ -462,8 +448,10 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -462,8 +448,10 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
| 462 | } | 448 | } |
| 463 | }; | 449 | }; |
| 464 | 450 | ||
| 451 | + dialog->units = ftradio_new(dialog,_("Space allocation units"),_("Specifies the units for the TSO host primary and secondary space options."),units); | ||
| 452 | + | ||
| 465 | gtk_grid_attach( grid, | 453 | gtk_grid_attach( grid, |
| 466 | - ftradio_new(dialog,_("Space allocation units"),_("Specifies the units for the TSO host primary and secondary space options."),units), | 454 | + dialog->units, |
| 467 | 2,0,2,1 | 455 | 2,0,2,1 |
| 468 | ); | 456 | ); |
| 469 | 457 | ||
| @@ -499,7 +487,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -499,7 +487,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
| 499 | { | 487 | { |
| 500 | VALUE_DFT, | 488 | VALUE_DFT, |
| 501 | N_( "DFT B_uffer size:" ), | 489 | N_( "DFT B_uffer size:" ), |
| 502 | - N_( "Buffer size for DFT-mode transfers. Can range from 256 to 32768. Larger values give better performance, but some hosts may not be able to support them." ) | 490 | + "" |
| 503 | }, | 491 | }, |
| 504 | 492 | ||
| 505 | { | 493 | { |
| @@ -513,8 +501,79 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -513,8 +501,79 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
| 513 | 501 | ||
| 514 | gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(grid),FALSE,TRUE,2); | 502 | gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(grid),FALSE,TRUE,2); |
| 515 | 503 | ||
| 504 | + gtk_spin_button_set_range(dialog->value[VALUE_DFT],256,32768); | ||
| 516 | } | 505 | } |
| 517 | 506 | ||
| 507 | + gtk_widget_set_tooltip_text(GTK_WIDGET(dialog->value[VALUE_DFT]),_( "Buffer size for DFT-mode transfers. Can range from 256 to 32768. Larger values give better performance, but some hosts may not be able to support them.")); | ||
| 508 | + gtk_spin_button_set_value(dialog->value[VALUE_DFT],4096); | ||
| 509 | + | ||
| 510 | + gtk_dialog_add_buttons(GTK_DIALOG(dialog), | ||
| 511 | + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | ||
| 512 | + (options & LIB3270_FT_OPTION_RECEIVE) != 0 ? GTK_STOCK_SAVE : GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, | ||
| 513 | + NULL); | ||
| 514 | + | ||
| 515 | + gtk_widget_show_all(gtk_dialog_get_content_area(GTK_DIALOG(dialog))); | ||
| 516 | + | ||
| 518 | return GTK_WIDGET(dialog); | 517 | return GTK_WIDGET(dialog); |
| 519 | } | 518 | } |
| 520 | 519 | ||
| 520 | +void v3270_ft_dialog_set_host_filename(GtkWidget *widget, const gchar *name) | ||
| 521 | +{ | ||
| 522 | + g_return_if_fail(GTK_IS_V3270FTD(widget)); | ||
| 523 | + gtk_entry_set_text(GTK_ENTRY(GTK_V3270FTD(widget)->filename[FILENAME_HOST]),name); | ||
| 524 | +} | ||
| 525 | + | ||
| 526 | +void v3270_ft_dialog_set_local_filename(GtkWidget *widget, const gchar *name) | ||
| 527 | +{ | ||
| 528 | + g_return_if_fail(GTK_IS_V3270FTD(widget)); | ||
| 529 | + gtk_entry_set_text(GTK_ENTRY(GTK_V3270FTD(widget)->filename[FILENAME_LOCAL]),name); | ||
| 530 | +} | ||
| 531 | + | ||
| 532 | +const gchar * v3270_ft_dialog_get_host_filename(GtkWidget *widget) | ||
| 533 | +{ | ||
| 534 | + g_return_val_if_fail(GTK_IS_V3270FTD(widget),NULL); | ||
| 535 | + return gtk_entry_get_text(GTK_ENTRY(GTK_V3270FTD(widget)->filename[FILENAME_HOST])); | ||
| 536 | +} | ||
| 537 | + | ||
| 538 | +const gchar * v3270_ft_dialog_get_local_filename(GtkWidget *widget) | ||
| 539 | +{ | ||
| 540 | + g_return_val_if_fail(GTK_IS_V3270FTD(widget),NULL); | ||
| 541 | + return gtk_entry_get_text(GTK_ENTRY(GTK_V3270FTD(widget)->filename[FILENAME_LOCAL])); | ||
| 542 | +} | ||
| 543 | + | ||
| 544 | +LIB3270_FT_OPTION v3270_ft_dialog_get_options(GtkWidget *widget) | ||
| 545 | +{ | ||
| 546 | + g_return_val_if_fail(GTK_IS_V3270FTD(widget),0); | ||
| 547 | + return GTK_V3270FTD(widget)->options; | ||
| 548 | +} | ||
| 549 | + | ||
| 550 | +void v3270_ft_dialog_set_options(GtkWidget *widget,LIB3270_FT_OPTION options) | ||
| 551 | +{ | ||
| 552 | + g_return_if_fail(GTK_IS_V3270FTD(widget)); | ||
| 553 | + | ||
| 554 | + #warning Implementar | ||
| 555 | +} | ||
| 556 | + | ||
| 557 | +void v3270_ft_dialog_set_tso(GtkWidget *widget,gboolean flag) | ||
| 558 | +{ | ||
| 559 | + g_return_if_fail(GTK_IS_V3270FTD(widget)); | ||
| 560 | + | ||
| 561 | + v3270FTD *dialog = GTK_V3270FTD(widget); | ||
| 562 | + | ||
| 563 | + GtkWidget *tsoWidget[] = | ||
| 564 | + { | ||
| 565 | + GTK_WIDGET(dialog->value[VALUE_BLKSIZE]), | ||
| 566 | + GTK_WIDGET(dialog->value[VALUE_PRIMSPACE]), | ||
| 567 | + GTK_WIDGET(dialog->value[VALUE_SECSPACE]), | ||
| 568 | + GTK_WIDGET(dialog->units), | ||
| 569 | + }; | ||
| 570 | + | ||
| 571 | + int f; | ||
| 572 | + | ||
| 573 | + for(f=0;f<G_N_ELEMENTS(tsoWidget);f++) | ||
| 574 | + { | ||
| 575 | + if(tsoWidget[f]) | ||
| 576 | + gtk_widget_set_sensitive(tsoWidget[f],flag); | ||
| 577 | + } | ||
| 578 | + | ||
| 579 | +} |
| @@ -0,0 +1,109 @@ | @@ -0,0 +1,109 @@ | ||
| 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 ftprogress.c 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 "v3270ft.h" | ||
| 31 | + | ||
| 32 | +/*--[ Widget definition ]----------------------------------------------------------------------------*/ | ||
| 33 | + | ||
| 34 | + enum _filename | ||
| 35 | + { | ||
| 36 | + TEXT_LOCALFILE, | ||
| 37 | + TEXT_HOSTFILE, | ||
| 38 | + TEXT_STATUS, | ||
| 39 | + | ||
| 40 | + TEXT_COUNT | ||
| 41 | + }; | ||
| 42 | + | ||
| 43 | + struct _v3270FTProgress | ||
| 44 | + { | ||
| 45 | + GtkBin parent; | ||
| 46 | + GtkWidget * text[TEXT_COUNT]; | ||
| 47 | + }; | ||
| 48 | + | ||
| 49 | + struct _v3270FTProgressClass | ||
| 50 | + { | ||
| 51 | + GtkBinClass parent_class; | ||
| 52 | + | ||
| 53 | + }; | ||
| 54 | + | ||
| 55 | + G_DEFINE_TYPE(v3270FTProgress, v3270FTProgress, GTK_TYPE_BIN); | ||
| 56 | + | ||
| 57 | + | ||
| 58 | +/*--[ Implement ]------------------------------------------------------------------------------------*/ | ||
| 59 | + | ||
| 60 | +static void v3270FTProgress_class_init(v3270FTProgressClass *klass) | ||
| 61 | +{ | ||
| 62 | +// GtkDialogClass * widget_class = GTK_DIALOG_CLASS(klass); | ||
| 63 | + | ||
| 64 | +#if GTK_CHECK_VERSION(3,0,0) | ||
| 65 | + | ||
| 66 | +#else | ||
| 67 | + | ||
| 68 | + #error Implementar | ||
| 69 | + | ||
| 70 | +#endif // GTK_CHECK_VERSION | ||
| 71 | + | ||
| 72 | +} | ||
| 73 | + | ||
| 74 | +static void v3270FTProgress_init(v3270FTProgress *widget) | ||
| 75 | +{ | ||
| 76 | + int f; | ||
| 77 | + | ||
| 78 | + // Create From/to fields | ||
| 79 | + static const gchar * label[TEXT_COUNT] = { N_("From"), N_("To"), N_("Status") }; | ||
| 80 | + GtkWidget * frame = gtk_frame_new( _( "Informations" ) ); | ||
| 81 | + GtkGrid * grid = GTK_GRID(gtk_grid_new()); | ||
| 82 | + | ||
| 83 | + gtk_grid_set_column_spacing(grid,5); | ||
| 84 | + gtk_grid_set_row_spacing(grid,5); | ||
| 85 | + | ||
| 86 | + for(f=0;f<TEXT_COUNT;f++) | ||
| 87 | + { | ||
| 88 | + GtkWidget * l = gtk_label_new(""); | ||
| 89 | + gchar * ptr = g_strdup_printf("<b>%s:</b>",gettext(label[f])); | ||
| 90 | + | ||
| 91 | + gtk_label_set_markup(GTK_LABEL(l),ptr); | ||
| 92 | + gtk_misc_set_alignment(GTK_MISC(l),0,0); | ||
| 93 | + g_free(ptr); | ||
| 94 | + | ||
| 95 | + gtk_grid_attach(grid,l,0,f,1,1); | ||
| 96 | + | ||
| 97 | + } | ||
| 98 | + gtk_container_add(GTK_CONTAINER(frame),GTK_WIDGET(grid)); | ||
| 99 | + | ||
| 100 | + | ||
| 101 | + | ||
| 102 | + gtk_container_add(GTK_CONTAINER(widget),GTK_WIDGET(frame)); | ||
| 103 | + | ||
| 104 | +} | ||
| 105 | + | ||
| 106 | +GtkWidget * v3270_ft_progress_new(void) | ||
| 107 | +{ | ||
| 108 | + return g_object_new(GTK_TYPE_V3270FTProgress, NULL); | ||
| 109 | +} |
src/pw3270/ft/testprogram.c
| @@ -37,12 +37,22 @@ int main (int argc, char *argv[]) | @@ -37,12 +37,22 @@ int main (int argc, char *argv[]) | ||
| 37 | GtkWidget *win; | 37 | GtkWidget *win; |
| 38 | 38 | ||
| 39 | gtk_init (&argc, &argv); | 39 | gtk_init (&argc, &argv); |
| 40 | -// win = v3270_dialog_ft_new(LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII); | ||
| 41 | - win = v3270_dialog_ft_new(LIB3270_FT_OPTION_SEND|LIB3270_FT_OPTION_REMAP); | ||
| 42 | 40 | ||
| 41 | + /* | ||
| 42 | +// win = v3270_ft_dialog_new(LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII); | ||
| 43 | + win = v3270_ft_dialog_new(LIB3270_FT_OPTION_SEND|LIB3270_FT_OPTION_REMAP); | ||
| 44 | + v3270_ft_dialog_set_tso(win,TRUE); | ||
| 45 | + */ | ||
| 43 | 46 | ||
| 44 | - gtk_widget_show_all (win); | 47 | + win = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
| 48 | + gtk_container_add(GTK_CONTAINER(win),v3270_ft_progress_new()); | ||
| 49 | + | ||
| 50 | + | ||
| 51 | + gtk_widget_show_all(win); | ||
| 45 | gtk_main (); | 52 | gtk_main (); |
| 53 | + | ||
| 54 | + gtk_dialog_run(GTK_DIALOG(win)); | ||
| 55 | + | ||
| 46 | return 0; | 56 | return 0; |
| 47 | 57 | ||
| 48 | } | 58 | } |
src/pw3270/ft/v3270ft.h
| @@ -47,6 +47,7 @@ | @@ -47,6 +47,7 @@ | ||
| 47 | 47 | ||
| 48 | G_BEGIN_DECLS | 48 | G_BEGIN_DECLS |
| 49 | 49 | ||
| 50 | +/*--[ Select file dialog ]---------------------------------------------------------------------------*/ | ||
| 50 | #define GTK_TYPE_V3270FTD (v3270FTD_get_type ()) | 51 | #define GTK_TYPE_V3270FTD (v3270FTD_get_type ()) |
| 51 | #define GTK_V3270FTD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270FTD, v3270FTD)) | 52 | #define GTK_V3270FTD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270FTD, v3270FTD)) |
| 52 | #define GTK_V3270FTD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270FTD, v3270FTDClass)) | 53 | #define GTK_V3270FTD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270FTD, v3270FTDClass)) |
| @@ -57,9 +58,29 @@ | @@ -57,9 +58,29 @@ | ||
| 57 | typedef struct _v3270FTD v3270FTD; | 58 | typedef struct _v3270FTD v3270FTD; |
| 58 | typedef struct _v3270FTDClass v3270FTDClass; | 59 | typedef struct _v3270FTDClass v3270FTDClass; |
| 59 | 60 | ||
| 60 | - // Prototipes | ||
| 61 | - GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options); | 61 | +/*--[ Progress widget ]------------------------------------------------------------------------------*/ |
| 62 | 62 | ||
| 63 | + #define GTK_TYPE_V3270FTProgress (v3270FTProgress_get_type ()) | ||
| 64 | + #define GTK_V3270FTProcess(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270FTProgress, v3270FTProgress)) | ||
| 65 | + #define GTK_V3270FTProgress_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270FTProgress, v3270FTProgressClass)) | ||
| 66 | + #define GTK_IS_V3270FTProgress(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_V3270FTProgress)) | ||
| 67 | + #define GTK_IS_V3270FTProgress_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_V3270FTProgress)) | ||
| 68 | + #define GTK_V3270FTProgress_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_V3270FTProgress, v3270FTProgressClass)) | ||
| 69 | + | ||
| 70 | + typedef struct _v3270FTProgress v3270FTProgress; | ||
| 71 | + typedef struct _v3270FTProgressClass v3270FTProgressClass; | ||
| 72 | + | ||
| 73 | +/*--[ Prototipes ]-----------------------------------------------------------------------------------*/ | ||
| 74 | + LIB3270_EXPORT GtkWidget * v3270_ft_dialog_new(LIB3270_FT_OPTION options); | ||
| 75 | + LIB3270_EXPORT void v3270_ft_dialog_set_host_filename(GtkWidget *widget, const gchar *name); | ||
| 76 | + LIB3270_EXPORT void v3270_ft_dialog_set_local_filename(GtkWidget *widget, const gchar *name); | ||
| 77 | + LIB3270_EXPORT const gchar * v3270_ft_dialog_get_host_filename(GtkWidget *widget); | ||
| 78 | + LIB3270_EXPORT const gchar * v3270_ft_dialog_get_local_filename(GtkWidget *widget); | ||
| 79 | + LIB3270_EXPORT void v3270_ft_dialog_set_options(GtkWidget *widget,LIB3270_FT_OPTION options); | ||
| 80 | + LIB3270_EXPORT LIB3270_FT_OPTION v3270_ft_dialog_get_options(GtkWidget *widget); | ||
| 81 | + LIB3270_EXPORT void v3270_ft_dialog_set_tso(GtkWidget *widget,gboolean flag); | ||
| 82 | + | ||
| 83 | + LIB3270_EXPORT GtkWidget * v3270_ft_progress_new(void); | ||
| 63 | 84 | ||
| 64 | 85 | ||
| 65 | G_END_DECLS | 86 | G_END_DECLS |