Commit 1bd07549f6c809d31851f3cabf747c6bc2b1546e
1 parent
13c0f3e6
Exists in
master
and in
1 other branch
Fixes on FT dialog.
Showing
5 changed files
with
61 additions
and
4 deletions
Show diff stats
src/dialogs/print/print.c
| @@ -180,6 +180,8 @@ | @@ -180,6 +180,8 @@ | ||
| 180 | 180 | ||
| 181 | } | 181 | } |
| 182 | 182 | ||
| 183 | + G_OBJECT_CLASS(V3270PrintOperation_parent_class)->dispose(object); | ||
| 184 | + | ||
| 183 | } | 185 | } |
| 184 | 186 | ||
| 185 | static void V3270PrintOperation_class_init(V3270PrintOperationClass *klass) | 187 | static void V3270PrintOperation_class_init(V3270PrintOperationClass *klass) |
src/include/v3270/filetransfer.h
| @@ -141,6 +141,9 @@ | @@ -141,6 +141,9 @@ | ||
| 141 | typedef struct _V3270FTDialog V3270FTDialog; | 141 | typedef struct _V3270FTDialog V3270FTDialog; |
| 142 | typedef struct _V3270FTDialogClass V3270FTDialogClass; | 142 | typedef struct _V3270FTDialogClass V3270FTDialogClass; |
| 143 | 143 | ||
| 144 | + LIB3270_EXPORT GtkWidget * v3270_ft_dialog_new(GtkWidget *parent); | ||
| 145 | + LIB3270_EXPORT void v3270_ft_dialog_set_session(GtkWidget *widget, H3270 *hSession); | ||
| 146 | + | ||
| 144 | G_END_DECLS | 147 | G_END_DECLS |
| 145 | 148 | ||
| 146 | #endif // V3270FT_H_INCLUDED | 149 | #endif // V3270FT_H_INCLUDED |
src/v3270ft/activity.c
| @@ -78,6 +78,8 @@ | @@ -78,6 +78,8 @@ | ||
| 78 | g_free(activity->file.local); | 78 | g_free(activity->file.local); |
| 79 | g_free(activity->file.remote); | 79 | g_free(activity->file.remote); |
| 80 | 80 | ||
| 81 | + G_OBJECT_CLASS(V3270FTActivity_parent_class)->dispose(object); | ||
| 82 | + | ||
| 81 | } | 83 | } |
| 82 | 84 | ||
| 83 | static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) | 85 | static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) |
src/v3270ft/activitylist.c
| @@ -73,6 +73,8 @@ | @@ -73,6 +73,8 @@ | ||
| 73 | g_free(list->filename); | 73 | g_free(list->filename); |
| 74 | list->filename = NULL; | 74 | list->filename = NULL; |
| 75 | 75 | ||
| 76 | + G_OBJECT_CLASS(V3270FTActivityList_parent_class)->dispose(object); | ||
| 77 | + | ||
| 76 | } | 78 | } |
| 77 | 79 | ||
| 78 | static void V3270FTActivityList_has_file(GtkWidget G_GNUC_UNUSED(*widget), gboolean G_GNUC_UNUSED(has_file)) | 80 | static void V3270FTActivityList_has_file(GtkWidget G_GNUC_UNUSED(*widget), gboolean G_GNUC_UNUSED(has_file)) |
| @@ -186,7 +188,7 @@ | @@ -186,7 +188,7 @@ | ||
| 186 | } | 188 | } |
| 187 | 189 | ||
| 188 | 190 | ||
| 189 | - static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, V3270FTActivityList *widget, GError **error) | 191 | + static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar G_GNUC_UNUSED(**names),const gchar G_GNUC_UNUSED(**values), V3270FTActivityList *widget, GError G_GNUC_UNUSED(**error)) |
| 190 | { | 192 | { |
| 191 | debug("%s(%s)",__FUNCTION__, element_name); | 193 | debug("%s(%s)",__FUNCTION__, element_name); |
| 192 | if(!g_ascii_strcasecmp(element_name,"entry")) | 194 | if(!g_ascii_strcasecmp(element_name,"entry")) |
src/v3270ft/dialog.c
| @@ -37,9 +37,13 @@ | @@ -37,9 +37,13 @@ | ||
| 37 | { | 37 | { |
| 38 | GtkDialog parent; | 38 | GtkDialog parent; |
| 39 | 39 | ||
| 40 | - GtkWidget * settings; | 40 | + GtkWidget * settings; |
| 41 | 41 | ||
| 42 | - struct { | 42 | + H3270 * hSession; |
| 43 | + const void * stHandle; | ||
| 44 | + | ||
| 45 | + struct | ||
| 46 | + { | ||
| 43 | GtkWidget * insert; | 47 | GtkWidget * insert; |
| 44 | GtkWidget * update; | 48 | GtkWidget * update; |
| 45 | GtkWidget * remove; | 49 | GtkWidget * remove; |
| @@ -47,7 +51,8 @@ | @@ -47,7 +51,8 @@ | ||
| 47 | GtkWidget * begin; | 51 | GtkWidget * begin; |
| 48 | } button; | 52 | } button; |
| 49 | 53 | ||
| 50 | - struct { | 54 | + struct |
| 55 | + { | ||
| 51 | GtkWidget * view; | 56 | GtkWidget * view; |
| 52 | GtkWidget * load; | 57 | GtkWidget * load; |
| 53 | GtkWidget * save; | 58 | GtkWidget * save; |
| @@ -65,8 +70,24 @@ | @@ -65,8 +70,24 @@ | ||
| 65 | 70 | ||
| 66 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 71 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| 67 | 72 | ||
| 73 | +static void finalize(GObject *object) | ||
| 74 | +{ | ||
| 75 | + debug("%s",__FUNCTION__); | ||
| 76 | + | ||
| 77 | + V3270FTDialog * dialog = GTK_V3270_FT_DIALOG(object); | ||
| 78 | + | ||
| 79 | + if(dialog->hSession && dialog->stHandle) | ||
| 80 | + { | ||
| 81 | + lib3270_unregister_schange(dialog->hSession,LIB3270_STATE_CONNECT,dialog->stHandle); | ||
| 82 | + dialog->stHandle = NULL; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + G_OBJECT_CLASS(V3270FTDialog_parent_class)->finalize(object); | ||
| 86 | +} | ||
| 87 | + | ||
| 68 | static void V3270FTDialog_class_init(G_GNUC_UNUSED V3270FTDialogClass *klass) | 88 | static void V3270FTDialog_class_init(G_GNUC_UNUSED V3270FTDialogClass *klass) |
| 69 | { | 89 | { |
| 90 | + G_OBJECT_CLASS(klass)->finalize = finalize; | ||
| 70 | } | 91 | } |
| 71 | 92 | ||
| 72 | void activity_selected(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn G_GNUC_UNUSED(*column), V3270FTDialog *widget) | 93 | void activity_selected(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn G_GNUC_UNUSED(*column), V3270FTDialog *widget) |
| @@ -276,6 +297,7 @@ static void V3270FTDialog_init(V3270FTDialog *widget) | @@ -276,6 +297,7 @@ static void V3270FTDialog_init(V3270FTDialog *widget) | ||
| 276 | GtkWidget * scrolled = gtk_scrolled_window_new(NULL,NULL); | 297 | GtkWidget * scrolled = gtk_scrolled_window_new(NULL,NULL); |
| 277 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); | 298 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); |
| 278 | gtk_container_add(GTK_CONTAINER(scrolled),widget->queue.view); | 299 | gtk_container_add(GTK_CONTAINER(scrolled),widget->queue.view); |
| 300 | + gtk_widget_set_size_request(scrolled,50,150); | ||
| 279 | 301 | ||
| 280 | gtk_widget_set_vexpand(scrolled,TRUE); | 302 | gtk_widget_set_vexpand(scrolled,TRUE); |
| 281 | gtk_widget_set_hexpand(scrolled,TRUE); | 303 | gtk_widget_set_hexpand(scrolled,TRUE); |
| @@ -321,6 +343,7 @@ static void V3270FTDialog_init(V3270FTDialog *widget) | @@ -321,6 +343,7 @@ static void V3270FTDialog_init(V3270FTDialog *widget) | ||
| 321 | 343 | ||
| 322 | // gtk_widget_set_sensitive(widget->button.begin,FALSE); | 344 | // gtk_widget_set_sensitive(widget->button.begin,FALSE); |
| 323 | gtk_widget_set_tooltip_markup(widget->button.begin,_("Start transfer")); | 345 | gtk_widget_set_tooltip_markup(widget->button.begin,_("Start transfer")); |
| 346 | + gtk_widget_set_sensitive(widget->button.begin,FALSE); | ||
| 324 | 347 | ||
| 325 | /* | 348 | /* |
| 326 | #ifdef DEBUG | 349 | #ifdef DEBUG |
| @@ -358,6 +381,31 @@ LIB3270_EXPORT GtkWidget * v3270_ft_dialog_new(GtkWidget *parent) | @@ -358,6 +381,31 @@ LIB3270_EXPORT GtkWidget * v3270_ft_dialog_new(GtkWidget *parent) | ||
| 358 | gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); | 381 | gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); |
| 359 | } | 382 | } |
| 360 | 383 | ||
| 384 | + if(GTK_IS_V3270(parent)) | ||
| 385 | + v3270_ft_dialog_set_session(dialog,v3270_get_session(parent)); | ||
| 386 | + | ||
| 361 | return dialog; | 387 | return dialog; |
| 362 | } | 388 | } |
| 363 | 389 | ||
| 390 | +static void connect_changed(H3270 G_GNUC_UNUSED(*hSession), int state, void *widget) | ||
| 391 | +{ | ||
| 392 | + V3270FTDialog * dialog = GTK_V3270_FT_DIALOG( ((GtkWidget *) widget) ); | ||
| 393 | + gtk_widget_set_sensitive(dialog->button.begin,state ? TRUE : FALSE); | ||
| 394 | +} | ||
| 395 | + | ||
| 396 | +LIB3270_EXPORT void v3270_ft_dialog_set_session(GtkWidget *widget, H3270 *hSession) | ||
| 397 | +{ | ||
| 398 | + V3270FTDialog * dialog = GTK_V3270_FT_DIALOG(widget); | ||
| 399 | + | ||
| 400 | + if(dialog->hSession && dialog->stHandle) | ||
| 401 | + { | ||
| 402 | + lib3270_unregister_schange(dialog->hSession,LIB3270_STATE_CONNECT,dialog->stHandle); | ||
| 403 | + dialog->stHandle = NULL; | ||
| 404 | + } | ||
| 405 | + | ||
| 406 | + dialog->hSession = hSession; | ||
| 407 | + dialog->stHandle = lib3270_register_schange(hSession,LIB3270_STATE_CONNECT,connect_changed,(void *) widget); | ||
| 408 | + | ||
| 409 | + gtk_widget_set_sensitive(dialog->button.begin,lib3270_is_connected(hSession) ? TRUE : FALSE); | ||
| 410 | + | ||
| 411 | +} |