diff --git a/src/include/internals.h b/src/include/internals.h index d982d5b..c530321 100644 --- a/src/include/internals.h +++ b/src/include/internals.h @@ -58,10 +58,13 @@ 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); - G_GNUC_INTERNAL GtkWidget * v3270_dialog_create_frame(GtkWidget * child, const gchar *title); + 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); + G_GNUC_INTERNAL GtkWidget * v3270_dialog_create_frame(GtkWidget * child, const gchar *title); + + G_GNUC_INTERNAL GtkWidget * v3270_activity_list_new(); + G_GNUC_INTERNAL void v3270_activity_list_append(GtkWidget *widget, GObject *activity); G_END_DECLS diff --git a/src/include/v3270/filetransfer.h b/src/include/v3270/filetransfer.h index 215e4b0..5956045 100644 --- a/src/include/v3270/filetransfer.h +++ b/src/include/v3270/filetransfer.h @@ -93,6 +93,7 @@ typedef struct _V3270FTSettingsClass V3270FTSettingsClass; LIB3270_EXPORT GtkWidget * v3270_ft_settings_new(); + LIB3270_EXPORT void v3270_ft_settings_set_activity(GtkWidget *widget, GObject *activity); // FT Activity widget #define G_TYPE_V3270_FT_ACTIVITY (V3270FTActivity_get_type ()) diff --git a/src/v3270ft/activity.c b/src/v3270ft/activity.c index fd19586..610bc4c 100644 --- a/src/v3270ft/activity.c +++ b/src/v3270ft/activity.c @@ -159,3 +159,54 @@ g_free(*ptr); *ptr = g_strdup(filename); } + + static void render_local(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) + { + V3270FTActivity * activity; + gtk_tree_model_get(tree_model, iter, 0, &activity, -1); + g_object_set(G_OBJECT(cell),"text",activity->file.local,NULL); + } + + static void render_remote(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) + { + V3270FTActivity * activity; + gtk_tree_model_get(tree_model, iter, 0, &activity, -1); + g_object_set(G_OBJECT(cell),"text",activity->file.remote,NULL); + } + + GtkWidget * v3270_activity_list_new() + { + GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(1,G_TYPE_OBJECT)); + GtkWidget * widget = gtk_tree_view_new_with_model(model); + + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(widget),TRUE); + gtk_tree_view_set_reorderable(GTK_TREE_VIEW(widget),TRUE); + + gtk_tree_view_insert_column_with_data_func( + GTK_TREE_VIEW(widget), + -1, + _( "Local file" ), + gtk_cell_renderer_text_new(), + render_local, + 0, NULL + ); + + gtk_tree_view_insert_column_with_data_func( + GTK_TREE_VIEW(widget), + -1, + _( "Remote file" ), + gtk_cell_renderer_text_new(), + render_remote, + 0, NULL + ); + + return widget; + } + + void v3270_activity_list_append(GtkWidget *widget, GObject *activity) + { + GtkTreeModel * model = gtk_tree_view_get_model(GTK_TREE_VIEW(widget)); + GtkTreeIter iter; + gtk_list_store_append((GtkListStore *) model,&iter); + gtk_list_store_set((GtkListStore *) model, &iter, 0, activity, -1); + } diff --git a/src/v3270ft/dialog.c b/src/v3270ft/dialog.c index 9d0f117..dc9e474 100644 --- a/src/v3270ft/dialog.c +++ b/src/v3270ft/dialog.c @@ -79,20 +79,6 @@ static GtkWidget * create_button(V3270FTDialog *widget, FT_BUTTON id, const gcha } */ -static void render_local(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) -{ - GObject * activity; - gtk_tree_model_get(tree_model, iter, 0, &activity, -1); - g_object_set(G_OBJECT(cell),"text",v3270_ft_activity_get_local_filename(activity),NULL); -} - -static void render_remote(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data) -{ - GObject * activity; - gtk_tree_model_get(tree_model, iter, 0, &activity, -1); - g_object_set(G_OBJECT(cell),"text",v3270_ft_activity_get_remote_filename(activity),NULL); -} - static void V3270FTDialog_init(V3270FTDialog *widget) { widget->settings = v3270_ft_settings_new(); @@ -112,35 +98,11 @@ 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 file list view { - GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(1,G_TYPE_OBJECT)); - GtkWidget * files = gtk_tree_view_new_with_model(model); - + GtkWidget * files = v3270_activity_list_new(); gtk_widget_set_tooltip_markup(files,_("Files to transfer")); - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(files),TRUE); - gtk_tree_view_set_reorderable(GTK_TREE_VIEW(files),TRUE); - - gtk_tree_view_insert_column_with_data_func( - GTK_TREE_VIEW(files), - -1, - _( "Local file" ), - gtk_cell_renderer_text_new(), - render_local, - 0, NULL - ); - - gtk_tree_view_insert_column_with_data_func( - GTK_TREE_VIEW(files), - -1, - _( "Remote file" ), - gtk_cell_renderer_text_new(), - render_remote, - 0, NULL - ); - // Put the view inside a scrolled window. GtkWidget * scrolled = gtk_scrolled_window_new(NULL,NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); @@ -153,15 +115,15 @@ static void V3270FTDialog_init(V3270FTDialog *widget) gtk_box_pack_start(GTK_BOX(container),frame,TRUE,TRUE,0); - /* +#ifdef DEBUG GObject * activity = v3270_ft_activity_new(); + v3270_ft_activity_set_local_filename(activity,"local---"); v3270_ft_activity_set_remote_filename(activity,"remote---"); - GtkTreeIter iter; - gtk_list_store_append((GtkListStore *) model,&iter); - gtk_list_store_set((GtkListStore *) model, &iter, 0, activity, -1); - */ + v3270_activity_list_append(files,activity); + v3270_ft_settings_set_activity(widget->settings,activity); +#endif // DEBUG } diff --git a/src/v3270ft/settings.c b/src/v3270ft/settings.c index 13a3c19..16a6aca 100644 --- a/src/v3270ft/settings.c +++ b/src/v3270ft/settings.c @@ -387,3 +387,11 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP return GTK_WIDGET(g_object_new(GTK_TYPE_V3270_FT_SETTINGS, NULL)); } + LIB3270_EXPORT void v3270_ft_settings_set_activity(GtkWidget *widget, GObject *activity) + { + V3270FTSettings * settings = GTK_V3270_FT_SETTINGS(widget); + + gtk_entry_set_text(settings->file.local,v3270_ft_activity_get_local_filename(activity)); + gtk_entry_set_text(settings->file.remote,v3270_ft_activity_get_remote_filename(activity)); + + } -- libgit2 0.21.2