From 437a1c76d2f9319eb37068919a839651e043bfa3 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Fri, 8 Feb 2019 11:46:02 -0200 Subject: [PATCH] Working on FT dialog component. --- src/dialogs/tools.c | 2 ++ src/include/internals.h | 6 ++++++ src/v3270ft/dialog.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/dialogs/tools.c b/src/dialogs/tools.c index 421d1f3..81ef021 100644 --- a/src/dialogs/tools.c +++ b/src/dialogs/tools.c @@ -69,3 +69,5 @@ return child; } + + diff --git a/src/include/internals.h b/src/include/internals.h index c530321..1354fc9 100644 --- a/src/include/internals.h +++ b/src/include/internals.h @@ -58,6 +58,12 @@ return child; } + inline GtkWidget * v3270_box_pack_end(GtkWidget *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding) + { + gtk_box_pack_end(GTK_BOX(box),child,expand,fill,padding); + return child; + } + G_GNUC_INTERNAL GtkWidget * v3270_box_pack_frame(GtkWidget *box, GtkWidget *child, const gchar *title, GtkAlign align, gboolean expand, gboolean fill, guint padding); G_GNUC_INTERNAL GtkWidget * v3270_box_pack_frame(GtkWidget *box, GtkWidget *child, const gchar *title, GtkAlign align, gboolean expand, gboolean fill, guint padding); G_GNUC_INTERNAL GtkWidget * v3270_dialog_create_grid(GtkAlign align); diff --git a/src/v3270ft/dialog.c b/src/v3270ft/dialog.c index cd166ff..df14368 100644 --- a/src/v3270ft/dialog.c +++ b/src/v3270ft/dialog.c @@ -38,7 +38,12 @@ GtkDialog parent; GtkWidget * settings; - // GtkWidget * buttons[FT_BUTTON_COUNT]; + + struct { + GtkWidget * insert; + GtkWidget * update; + GtkWidget * reset; + } button; }; @@ -79,6 +84,24 @@ static GtkWidget * create_button(V3270FTDialog *widget, FT_BUTTON id, const gcha } */ +void activity_selected(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn G_GNUC_UNUSED(*column), V3270FTDialog *widget) +{ + GtkTreeIter iter; + GtkTreeModel * model = gtk_tree_view_get_model(view); + + if(gtk_tree_model_get_iter(model, &iter, path)) + { + GObject * activity = NULL; + gtk_tree_model_get(model, &iter, 0, &activity, -1); + v3270_ft_settings_set_activity(widget->settings,activity); + + gtk_widget_set_sensitive(widget->button.update,TRUE); + gtk_widget_set_sensitive(widget->button.reset,TRUE); + + } + +} + static void V3270FTDialog_init(V3270FTDialog *widget) { widget->settings = v3270_ft_settings_new(); @@ -98,10 +121,28 @@ static void V3270FTDialog_init(V3270FTDialog *widget) gtk_widget_set_vexpand(GTK_WIDGET(widget->settings),FALSE); gtk_box_pack_start(GTK_BOX(container),widget->settings,FALSE,FALSE,0); + // Create action buttons + { + GtkWidget * buttons = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,6); + + g_object_set(G_OBJECT(buttons),"margin-top",6,NULL); + + widget->button.reset = v3270_box_pack_end(buttons,gtk_button_new_with_mnemonic("_Reset"),FALSE,FALSE,0); + widget->button.update = v3270_box_pack_end(buttons,gtk_button_new_with_mnemonic("_Update"),FALSE,FALSE,0); + widget->button.insert = v3270_box_pack_end(buttons,gtk_button_new_with_mnemonic("_Insert"),FALSE,FALSE,0); + + gtk_widget_set_sensitive(widget->button.update,FALSE); + gtk_widget_set_sensitive(widget->button.reset,FALSE); + + gtk_box_pack_start(GTK_BOX(container),buttons,FALSE,FALSE,0); + + } + // Create file list view { GtkWidget * files = v3270_activity_list_new(); gtk_widget_set_tooltip_markup(files,_("Files to transfer")); + g_signal_connect(G_OBJECT(files),"row-activated",G_CALLBACK(activity_selected),widget); // Put the view inside a scrolled window. GtkWidget * scrolled = gtk_scrolled_window_new(NULL,NULL); @@ -123,12 +164,10 @@ static void V3270FTDialog_init(V3270FTDialog *widget) v3270_ft_activity_set_options(activity,LIB3270_FT_OPTION_SEND|LIB3270_FT_OPTION_ASCII|LIB3270_FT_OPTION_CRLF|LIB3270_FT_OPTION_REMAP|LIB3270_FT_OPTION_APPEND|LIB3270_FT_RECORD_FORMAT_VARIABLE); v3270_activity_list_append(files,activity); - v3270_ft_settings_set_activity(widget->settings,activity); #endif // DEBUG } - } LIB3270_EXPORT GtkWidget * v3270_ft_dialog_new(GtkWidget *parent) -- libgit2 0.21.2