diff --git a/src/filetransfer/activity.c b/src/filetransfer/activity.c index f42a5f4..a20ef7f 100644 --- a/src/filetransfer/activity.c +++ b/src/filetransfer/activity.c @@ -71,7 +71,7 @@ static void dispose(GObject *object) { - debug("%s",__FUNCTION__); + debug("activity::%s(%p)",__FUNCTION__,object); V3270FTActivity * activity = G_V3270_FT_ACTIVITY(object); diff --git a/src/filetransfer/worker.c b/src/filetransfer/worker.c index fe68f7f..53e2a83 100644 --- a/src/filetransfer/worker.c +++ b/src/filetransfer/worker.c @@ -45,9 +45,10 @@ { GtkGrid parent; - GtkProgressBar * pbar; ///< @brief Progress bar. + GtkProgressBar * pbar; ///< @brief Progress bar. + GObject * activity; ///< @brief File transfer activity; - GtkEntry * field[PROGRESS_FIELD_COUNT]; ///< @brief Transfer information widgets. + GtkEntry * field[PROGRESS_FIELD_COUNT]; ///< @brief Transfer information widgets. }; @@ -60,8 +61,13 @@ { debug("%s",__FUNCTION__); - // V3270FTWorker * worker = GTK_V3270_FT_WORKER(object); + V3270FTWorker * worker = GTK_V3270_FT_WORKER(object); + if(worker->activity) + { + g_object_unref(worker->activity); + worker->activity = NULL; + } G_OBJECT_CLASS(V3270FTWorker_parent_class)->finalize(object); @@ -115,7 +121,7 @@ gtk_box_set_homogeneous(GTK_BOX(views),TRUE); gtk_grid_attach(GTK_GRID(widget),views,0,2,10,1); g_object_set(G_OBJECT(views),"margin-top",8,NULL); - g_object_set(G_OBJECT(views),"margin-botton",8,NULL); + g_object_set(G_OBJECT(views),"margin-bottom",8,NULL); { // Left options @@ -168,3 +174,37 @@ return GTK_WIDGET(g_object_new(GTK_TYPE_V3270_FT_WORKER, NULL)); } + LIB3270_EXPORT void v3270_ft_worker_set_activity(GtkWidget *widget, GObject *activity) + { + size_t ix; + + V3270FTWorker * worker = GTK_V3270_FT_WORKER(widget); + + if(worker->activity) + { + g_object_unref(worker->activity); + worker->activity = NULL; + } + + if(activity) + { + worker->activity = activity; + g_object_ref(worker->activity); + + gtk_entry_set_text(worker->field[PROGRESS_FIELD_LOCAL],v3270_ft_activity_get_local_filename(activity)); + gtk_entry_set_text(worker->field[PROGRESS_FIELD_REMOTE],v3270_ft_activity_get_remote_filename(activity)); + + } + else + { + gtk_entry_set_text(worker->field[PROGRESS_FIELD_LOCAL],""); + gtk_entry_set_text(worker->field[PROGRESS_FIELD_REMOTE],""); + } + + for(ix = PROGRESS_FIELD_TOTAL; ix < PROGRESS_FIELD_COUNT; ix++) + { + gtk_entry_set_text(worker->field[ix],""); + } + + } + diff --git a/src/include/v3270/filetransfer.h b/src/include/v3270/filetransfer.h index b127402..741cf2d 100644 --- a/src/include/v3270/filetransfer.h +++ b/src/include/v3270/filetransfer.h @@ -158,5 +158,6 @@ typedef struct _V3270FTWorkerClass V3270FTWorkerClass; LIB3270_EXPORT GtkWidget * v3270_ft_worker_new(); + LIB3270_EXPORT void v3270_ft_worker_set_activity(GtkWidget *widget, GObject *activity); #endif // V3270FT_H_INCLUDED diff --git a/src/testprogram/testprogram.c b/src/testprogram/testprogram.c index f81ebca..5fc3d23 100644 --- a/src/testprogram/testprogram.c +++ b/src/testprogram/testprogram.c @@ -153,6 +153,12 @@ static void ft_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) GtkWidget * worker = v3270_ft_worker_new(); gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),worker,TRUE,TRUE,2); + GObject * activity = v3270_ft_activity_new(); + v3270_ft_activity_set_local_filename(activity,"local_file"); + v3270_ft_activity_set_remote_filename(activity,"remove_file"); + v3270_ft_worker_set_activity(worker,activity); + g_object_unref(activity); + // GtkWidget * dialog = v3270ftprogress_new(); // GtkWidget * dialog = v3270_ft_dialog_new(terminal); diff --git a/v3270.cbp b/v3270.cbp index 7130807..ab02518 100644 --- a/v3270.cbp +++ b/v3270.cbp @@ -121,6 +121,9 @@ + + -- libgit2 0.21.2