diff --git a/src/pw3270/ft/ft.cbp b/src/pw3270/ft/ft.cbp
new file mode 100644
index 0000000..2a540b2
--- /dev/null
+++ b/src/pw3270/ft/ft.cbp
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pw3270/ft/ftdialog.c b/src/pw3270/ft/ftdialog.c
new file mode 100644
index 0000000..5e7de8a
--- /dev/null
+++ b/src/pw3270/ft/ftdialog.c
@@ -0,0 +1,176 @@
+/*
+ * "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 ftdialog.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 "v3270ft.h"
+
+/*--[ Widget definition ]----------------------------------------------------------------------------*/
+
+ enum _filename
+ {
+ FILENAME_LOCAL,
+ FILENAME_HOST,
+
+ FILENAME_COUNT
+ };
+
+ struct _v3270FTD
+ {
+ GtkDialog parent;
+ GtkWidget * filename[FILENAME_COUNT]; /**< Filenames for the transfer */
+ LIB3270_FT_OPTION options;
+ };
+
+ struct _v3270FTDClass
+ {
+ GtkDialogClass parent_class;
+
+ int dummy;
+ };
+
+ G_DEFINE_TYPE(v3270FTD, v3270FTD, GTK_TYPE_DIALOG);
+
+/*--[ Globals ]--------------------------------------------------------------------------------------*/
+
+static void v3270FTD_class_init(v3270FTDClass *klass)
+{
+// GtkDialogClass * widget_class = GTK_DIALOG_CLASS(klass);
+
+#if GTK_CHECK_VERSION(3,0,0)
+
+#else
+
+ #error Implementar
+
+#endif // GTK_CHECK_VERSION
+
+}
+
+static void v3270FTD_init(v3270FTD *widget)
+{
+}
+
+static void browse_file(GtkButton *button,v3270FTD *parent)
+{
+ gboolean recv = (parent->options & LIB3270_FT_OPTION_RECEIVE);
+ GtkWidget * dialog = gtk_file_chooser_dialog_new
+ (
+ recv ? _( "Select file to receive" ) : _( "Select file to send" ),
+ GTK_WINDOW(parent),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ _("_Cancel" ), GTK_RESPONSE_CANCEL,
+ recv ? _("_Save") : _("_Send"), GTK_RESPONSE_ACCEPT,
+ NULL
+ );
+
+ if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+ {
+ gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ gtk_entry_set_text(GTK_ENTRY(parent->filename[FILENAME_LOCAL]),filename);
+ g_free(filename);
+ }
+
+ gtk_widget_destroy(dialog);
+
+
+}
+
+GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options)
+{
+ v3270FTD *dialog = g_object_new(GTK_TYPE_V3270FTD, NULL);
+
+ // Set defaults
+ dialog->options = options;
+
+ // Filename entry
+ int f;
+
+ GtkWidget * label[FILENAME_COUNT] =
+ {
+ gtk_label_new_with_mnemonic( _( "_Local file name:" ) ),
+ gtk_label_new_with_mnemonic( _( "_Host file name:" ) )
+ };
+
+ for(f=0;ffilename[f] = gtk_entry_new();
+ gtk_label_set_mnemonic_widget(GTK_LABEL(label[f]),dialog->filename[f]);
+ gtk_widget_set_hexpand(dialog->filename[f],TRUE);
+ }
+
+ GtkGrid *grid = GTK_GRID(gtk_grid_new());
+ gtk_grid_set_row_homogeneous(grid,FALSE);
+ gtk_grid_set_column_homogeneous(grid,FALSE);
+ gtk_grid_set_column_spacing(grid,5);
+ gtk_grid_set_row_spacing(grid,5);
+
+// GtkButton * browse = GTK_BUTTON(gtk_button_new_with_mnemonic(_( "_Browse")));
+ GtkButton * browse = GTK_BUTTON(gtk_button_new_from_icon_name("text-x-generic",GTK_ICON_SIZE_BUTTON));
+ gtk_button_set_focus_on_click(browse,FALSE);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(browse),_("Select file"));
+ g_signal_connect(G_OBJECT(browse),"clicked",G_CALLBACK(browse_file),dialog);
+
+ if(options & LIB3270_FT_OPTION_RECEIVE)
+ {
+ // It's receiving file first host filename, then local filename
+ gtk_window_set_title(GTK_WINDOW(dialog),_( "Receive file from host" ));
+
+ gtk_grid_attach(grid,label[FILENAME_HOST],0,0,1,1);
+ gtk_grid_attach(grid,label[FILENAME_LOCAL],0,1,1,1);
+
+ gtk_grid_attach(grid,dialog->filename[FILENAME_HOST],1,0,3,1);
+ gtk_grid_attach(grid,dialog->filename[FILENAME_LOCAL],1,1,3,1);
+ gtk_grid_attach(grid,GTK_WIDGET(browse),5,1,1,1);
+
+ gtk_widget_set_tooltip_text(dialog->filename[FILENAME_HOST],_("Name of the origin file on the host"));
+ gtk_widget_set_tooltip_text(dialog->filename[FILENAME_LOCAL],_("Where to save the received file"));
+
+ }
+ else
+ {
+ // It's sending file first local filename, then hostfilename
+ gtk_window_set_title(GTK_WINDOW(dialog),_( "Send file to host" ));
+
+ gtk_grid_attach(grid,dialog->filename[FILENAME_LOCAL],0,0,1,1);
+ gtk_grid_attach(grid,dialog->filename[FILENAME_HOST],0,1,1,1);
+
+ gtk_grid_attach(grid,dialog->filename[FILENAME_LOCAL],1,0,3,1);
+ gtk_grid_attach(grid,dialog->filename[FILENAME_HOST],1,1,3,1);
+
+ gtk_widget_set_tooltip_text(dialog->filename[FILENAME_HOST],_("Name of the target file on the host"));
+ gtk_widget_set_tooltip_text(dialog->filename[FILENAME_LOCAL],_("Path of the local file to send"));
+
+ }
+
+ gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(grid),FALSE,TRUE,2);
+
+ // File transfer options
+
+ return GTK_WIDGET(dialog);
+}
+
diff --git a/src/pw3270/ft/testprogram.c b/src/pw3270/ft/testprogram.c
new file mode 100644
index 0000000..1b6c533
--- /dev/null
+++ b/src/pw3270/ft/testprogram.c
@@ -0,0 +1,47 @@
+/*
+ * "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 testprogram.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
+ #include "v3270ft.h"
+
+/*--[ Implement ]------------------------------------------------------------------------------------*/
+
+int main (int argc, char *argv[])
+{
+ GtkWidget *win;
+
+ gtk_init (&argc, &argv);
+ win = v3270_dialog_ft_new(LIB3270_FT_OPTION_RECEIVE);
+
+
+ gtk_widget_show_all (win);
+ gtk_main ();
+ return 0;
+
+}
diff --git a/src/pw3270/ft/v3270ft.h b/src/pw3270/ft/v3270ft.h
new file mode 100644
index 0000000..d8b27f2
--- /dev/null
+++ b/src/pw3270/ft/v3270ft.h
@@ -0,0 +1,67 @@
+/*
+ * "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 v3270ft.h 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)
+ *
+ */
+
+#ifndef V3270FT_H_INCLUDED
+
+ #define ENABLE_NLS
+
+ #ifndef GETTEXT_PACKAGE
+ #define GETTEXT_PACKAGE PACKAGE_NAME
+ #endif
+
+ #include
+ #include
+ #include
+ #include
+ #include
+
+ #define V3270FT_H_INCLUDED 1
+
+ G_BEGIN_DECLS
+
+ #define GTK_TYPE_V3270FTD (v3270FTD_get_type ())
+ #define GTK_V3270FTD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270FTD, v3270FTD))
+ #define GTK_V3270FTD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270FTD, v3270FTDClass))
+ #define GTK_IS_V3270FTD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_V3270FTD))
+ #define GTK_IS_V3270FTD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_V3270FTD))
+ #define GTK_V3270FTD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_V3270FTD, v3270FTDClass))
+
+ typedef struct _v3270FTD v3270FTD;
+ typedef struct _v3270FTDClass v3270FTDClass;
+
+ // Prototipes
+ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options);
+
+
+
+ G_END_DECLS
+
+#endif // V3270_H_INCLUDED
--
libgit2 0.21.2