Commit 1280051c8ce9a70fdb768a01c5dfb1df1d7a260b
1 parent
179483d8
Exists in
master
and in
1 other branch
Moving class properties to the class structure.
Showing
8 changed files
with
87 additions
and
89 deletions
Show diff stats
src/include/internals.h
| @@ -37,6 +37,7 @@ | @@ -37,6 +37,7 @@ | ||
| 37 | #define GETTEXT_PACKAGE PACKAGE_NAME | 37 | #define GETTEXT_PACKAGE PACKAGE_NAME |
| 38 | 38 | ||
| 39 | #include <glib.h> | 39 | #include <glib.h> |
| 40 | + #include <glib/gi18n.h> | ||
| 40 | #include <gtk/gtk.h> | 41 | #include <gtk/gtk.h> |
| 41 | #include <lib3270.h> | 42 | #include <lib3270.h> |
| 42 | #include <lib3270/log.h> | 43 | #include <lib3270/log.h> |
| @@ -133,6 +134,7 @@ | @@ -133,6 +134,7 @@ | ||
| 133 | 134 | ||
| 134 | G_GNUC_INTERNAL gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); | 135 | G_GNUC_INTERNAL gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); |
| 135 | G_GNUC_INTERNAL void v3270_cursor_draw(v3270 *widget); | 136 | G_GNUC_INTERNAL void v3270_cursor_draw(v3270 *widget); |
| 137 | + G_GNUC_INTERNAL void v3270_set_cursor(GtkWidget *widget, LIB3270_POINTER id); | ||
| 136 | 138 | ||
| 137 | G_GNUC_INTERNAL void v3270_draw_oia(v3270 *terminal, cairo_t *cr, int row, int cols); | 139 | G_GNUC_INTERNAL void v3270_draw_oia(v3270 *terminal, cairo_t *cr, int row, int cols); |
| 138 | G_GNUC_INTERNAL void v3270_update_mouse_pointer(GtkWidget *widget); | 140 | G_GNUC_INTERNAL void v3270_update_mouse_pointer(GtkWidget *widget); |
src/terminal/callbacks.c
| @@ -71,7 +71,8 @@ static void set_timer(H3270 *session, unsigned char on) | @@ -71,7 +71,8 @@ static void set_timer(H3270 *session, unsigned char on) | ||
| 71 | 71 | ||
| 72 | static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, G_GNUC_UNUSED LIB3270_TOGGLE_TYPE reason, const char *name) | 72 | static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, G_GNUC_UNUSED LIB3270_TOGGLE_TYPE reason, const char *name) |
| 73 | { | 73 | { |
| 74 | - GtkWidget *widget = GTK_WIDGET(lib3270_get_user_data(session)); | 74 | + GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
| 75 | + v3270Class * klass = GTK_V3270_GET_CLASS(widget); | ||
| 75 | 76 | ||
| 76 | trace("%s(%s,%d)",__FUNCTION__,name,(int) value); | 77 | trace("%s(%s,%d)",__FUNCTION__,name,(int) value); |
| 77 | 78 | ||
| @@ -133,7 +134,7 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value | @@ -133,7 +134,7 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value | ||
| 133 | 134 | ||
| 134 | } | 135 | } |
| 135 | 136 | ||
| 136 | - g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties.toggle[ix]); | 137 | + g_object_notify_by_pspec(G_OBJECT(widget), klass->properties.toggle[ix]); |
| 137 | g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); | 138 | g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); |
| 138 | 139 | ||
| 139 | } | 140 | } |
| @@ -226,8 +227,7 @@ static void update_connect(H3270 *session, unsigned char connected) | @@ -226,8 +227,7 @@ static void update_connect(H3270 *session, unsigned char connected) | ||
| 226 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_DISCONNECTED], 0); | 227 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_DISCONNECTED], 0); |
| 227 | } | 228 | } |
| 228 | 229 | ||
| 229 | - if(v3270_properties.online) | ||
| 230 | - g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties.online); | 230 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.online); |
| 231 | 231 | ||
| 232 | widget->activity.timestamp = time(0); | 232 | widget->activity.timestamp = time(0); |
| 233 | 233 | ||
| @@ -236,16 +236,16 @@ static void update_connect(H3270 *session, unsigned char connected) | @@ -236,16 +236,16 @@ static void update_connect(H3270 *session, unsigned char connected) | ||
| 236 | 236 | ||
| 237 | static void update_screen_size(H3270 *session, G_GNUC_UNUSED unsigned short rows, G_GNUC_UNUSED unsigned short cols) | 237 | static void update_screen_size(H3270 *session, G_GNUC_UNUSED unsigned short rows, G_GNUC_UNUSED unsigned short cols) |
| 238 | { | 238 | { |
| 239 | - v3270_reload(GTK_WIDGET(lib3270_get_user_data(session))); | ||
| 240 | - gtk_widget_queue_draw(GTK_WIDGET(lib3270_get_user_data(session))); | 239 | + GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
| 240 | + v3270_reload(widget); | ||
| 241 | + gtk_widget_queue_draw(widget); | ||
| 241 | } | 242 | } |
| 242 | 243 | ||
| 243 | static void update_model(H3270 *session, const char *name, int model, G_GNUC_UNUSED int rows, G_GNUC_UNUSED int cols) | 244 | static void update_model(H3270 *session, const char *name, int model, G_GNUC_UNUSED int rows, G_GNUC_UNUSED int cols) |
| 244 | { | 245 | { |
| 245 | - if(v3270_properties.model) | ||
| 246 | - g_object_notify_by_pspec(G_OBJECT(lib3270_get_user_data(session)), v3270_properties.model); | ||
| 247 | - | ||
| 248 | - g_signal_emit(GTK_WIDGET(lib3270_get_user_data(session)),v3270_widget_signal[V3270_SIGNAL_MODEL_CHANGED], 0, (guint) model, name); | 246 | + GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
| 247 | + g_object_notify_by_pspec(G_OBJECT(lib3270_get_user_data(session)), GTK_V3270_GET_CLASS(widget)->properties.model); | ||
| 248 | + g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_MODEL_CHANGED], 0, (guint) model, name); | ||
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | static void changed(H3270 *session, int offset, int len) | 251 | static void changed(H3270 *session, int offset, int len) |
| @@ -299,9 +299,7 @@ static void set_selection(H3270 *session, unsigned char status) | @@ -299,9 +299,7 @@ static void set_selection(H3270 *session, unsigned char status) | ||
| 299 | { | 299 | { |
| 300 | GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); | 300 | GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
| 301 | 301 | ||
| 302 | - if(v3270_properties.selection) | ||
| 303 | - g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties.selection); | ||
| 304 | - | 302 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.selection); |
| 305 | g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_SELECTING], 0, status ? TRUE : FALSE); | 303 | g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_SELECTING], 0, status ? TRUE : FALSE); |
| 306 | 304 | ||
| 307 | } | 305 | } |
src/terminal/mouse.c
| @@ -222,7 +222,7 @@ static void update_mouse_pointer(GtkWidget *widget, int baddr) | @@ -222,7 +222,7 @@ static void update_mouse_pointer(GtkWidget *widget, int baddr) | ||
| 222 | 222 | ||
| 223 | if(baddr >= 0 && terminal->pointer_id == LIB3270_POINTER_UNLOCKED) | 223 | if(baddr >= 0 && terminal->pointer_id == LIB3270_POINTER_UNLOCKED) |
| 224 | { | 224 | { |
| 225 | - gdk_window_set_cursor(gtk_widget_get_window(widget),v3270_cursor[lib3270_get_pointer(terminal->host,baddr)]); | 225 | + v3270_set_cursor(widget,lib3270_get_pointer(terminal->host,baddr)); |
| 226 | } | 226 | } |
| 227 | } | 227 | } |
| 228 | 228 | ||
| @@ -240,7 +240,7 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) | @@ -240,7 +240,7 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) | ||
| 240 | 240 | ||
| 241 | if(!lib3270_connected(terminal->host)) | 241 | if(!lib3270_connected(terminal->host)) |
| 242 | { | 242 | { |
| 243 | - gdk_window_set_cursor(gtk_widget_get_window(widget),v3270_cursor[LIB3270_POINTER_LOCKED]); | 243 | + v3270_set_cursor(widget,LIB3270_POINTER_LOCKED); |
| 244 | return FALSE; | 244 | return FALSE; |
| 245 | } | 245 | } |
| 246 | 246 | ||
| @@ -292,7 +292,7 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) | @@ -292,7 +292,7 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) | ||
| 292 | } | 292 | } |
| 293 | } | 293 | } |
| 294 | 294 | ||
| 295 | - gdk_window_set_cursor(gtk_widget_get_window(widget),v3270_cursor[id]); | 295 | + v3270_set_cursor(widget,id); |
| 296 | } | 296 | } |
| 297 | 297 | ||
| 298 | return FALSE; | 298 | return FALSE; |
src/terminal/oia.c
| @@ -721,7 +721,7 @@ void v3270_update_luname(GtkWidget *widget,const gchar *name) | @@ -721,7 +721,7 @@ void v3270_update_luname(GtkWidget *widget,const gchar *name) | ||
| 721 | v3270_queue_draw_area(GTK_WIDGET(terminal),rect->x,rect->y,rect->width,rect->height); | 721 | v3270_queue_draw_area(GTK_WIDGET(terminal),rect->x,rect->y,rect->width,rect->height); |
| 722 | } | 722 | } |
| 723 | 723 | ||
| 724 | - g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties.luname); | 724 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.luname); |
| 725 | 725 | ||
| 726 | } | 726 | } |
| 727 | 727 |
src/terminal/private.h
| @@ -28,15 +28,8 @@ | @@ -28,15 +28,8 @@ | ||
| 28 | */ | 28 | */ |
| 29 | 29 | ||
| 30 | #include <config.h> | 30 | #include <config.h> |
| 31 | - | ||
| 32 | #include <internals.h> | 31 | #include <internals.h> |
| 33 | 32 | ||
| 34 | -#include <libintl.h> | ||
| 35 | -#include <glib/gi18n.h> | ||
| 36 | - | ||
| 37 | -#include <gtk/gtk.h> | ||
| 38 | -#include <v3270.h> | ||
| 39 | - | ||
| 40 | G_BEGIN_DECLS | 33 | G_BEGIN_DECLS |
| 41 | 34 | ||
| 42 | struct _v3270Class | 35 | struct _v3270Class |
| @@ -45,12 +38,31 @@ G_BEGIN_DECLS | @@ -45,12 +38,31 @@ G_BEGIN_DECLS | ||
| 45 | 38 | ||
| 46 | // Internal properties. | 39 | // Internal properties. |
| 47 | struct { | 40 | struct { |
| 41 | + | ||
| 48 | size_t count; // Number of properties. | 42 | size_t count; // Number of properties. |
| 49 | 43 | ||
| 50 | GParamSpec * font_family; | 44 | GParamSpec * font_family; |
| 45 | + GParamSpec * toggle[LIB3270_TOGGLE_COUNT]; // Toggle properties. | ||
| 46 | + | ||
| 47 | + // Signal related properties | ||
| 48 | + GParamSpec * online; | ||
| 49 | + GParamSpec * luname; | ||
| 50 | + GParamSpec * model; | ||
| 51 | + GParamSpec * selection; | ||
| 52 | + | ||
| 53 | + struct | ||
| 54 | + { | ||
| 55 | + guint toggle; | ||
| 56 | + guint boolean; | ||
| 57 | + guint integer; | ||
| 58 | + guint str; | ||
| 59 | + } type; | ||
| 51 | 60 | ||
| 52 | } properties; | 61 | } properties; |
| 53 | 62 | ||
| 63 | + // Cursors | ||
| 64 | + GdkCursor * cursors[LIB3270_POINTER_COUNT]; | ||
| 65 | + | ||
| 54 | // Signals | 66 | // Signals |
| 55 | void (*activate)(GtkWidget *widget); | 67 | void (*activate)(GtkWidget *widget); |
| 56 | void (*toggle_changed)(v3270 *widget,LIB3270_TOGGLE toggle_id,gboolean toggle_state,const gchar *toggle_name); | 68 | void (*toggle_changed)(v3270 *widget,LIB3270_TOGGLE toggle_id,gboolean toggle_state,const gchar *toggle_name); |
| @@ -168,31 +180,4 @@ G_BEGIN_DECLS | @@ -168,31 +180,4 @@ G_BEGIN_DECLS | ||
| 168 | 180 | ||
| 169 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 181 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
| 170 | 182 | ||
| 171 | - G_GNUC_INTERNAL GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT]; | ||
| 172 | - | ||
| 173 | - G_GNUC_INTERNAL struct _v3270_properties | ||
| 174 | - { | ||
| 175 | - GParamSpec * toggle[LIB3270_TOGGLE_COUNT]; // Toggle properties. | ||
| 176 | - | ||
| 177 | - struct | ||
| 178 | - { | ||
| 179 | - guint toggle; | ||
| 180 | - guint boolean; | ||
| 181 | - guint integer; | ||
| 182 | - guint str; | ||
| 183 | - } type; | ||
| 184 | - | ||
| 185 | - /* | ||
| 186 | - // V3270 Internal properties. | ||
| 187 | - GParamSpec * font_family; | ||
| 188 | - */ | ||
| 189 | - | ||
| 190 | - // Properties who launch signals. | ||
| 191 | - GParamSpec * online; | ||
| 192 | - GParamSpec * luname; | ||
| 193 | - GParamSpec * model; | ||
| 194 | - GParamSpec * selection; | ||
| 195 | - | ||
| 196 | - } v3270_properties; | ||
| 197 | - | ||
| 198 | G_END_DECLS | 183 | G_END_DECLS |
src/terminal/properties.c
| @@ -51,41 +51,42 @@ | @@ -51,41 +51,42 @@ | ||
| 51 | 51 | ||
| 52 | static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) | 52 | static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) |
| 53 | { | 53 | { |
| 54 | - v3270 *window = GTK_V3270(object); | 54 | + v3270 * window = GTK_V3270(object); |
| 55 | + v3270Class * klass = GTK_V3270_GET_CLASS(object); | ||
| 55 | 56 | ||
| 56 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); | 57 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); |
| 57 | 58 | ||
| 58 | - if(prop_id >= v3270_properties.type.str) | 59 | + if(prop_id >= klass->properties.type.str) |
| 59 | { | 60 | { |
| 60 | - const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str)); | 61 | + const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - klass->properties.type.str)); |
| 61 | debug("%s.%s.%s=%s",__FUNCTION__,"string",prop->name,g_value_get_string(value)); | 62 | debug("%s.%s.%s=%s",__FUNCTION__,"string",prop->name,g_value_get_string(value)); |
| 62 | 63 | ||
| 63 | if(prop->set) | 64 | if(prop->set) |
| 64 | prop->set(window->host,g_value_get_string(value)); | 65 | prop->set(window->host,g_value_get_string(value)); |
| 65 | 66 | ||
| 66 | } | 67 | } |
| 67 | - else if(prop_id >= v3270_properties.type.integer) | 68 | + else if(prop_id >= klass->properties.type.integer) |
| 68 | { | 69 | { |
| 69 | - const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - v3270_properties.type.integer)); | 70 | + const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - klass->properties.type.integer)); |
| 70 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); | 71 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); |
| 71 | 72 | ||
| 72 | if(prop->set) | 73 | if(prop->set) |
| 73 | prop->set(window->host,g_value_get_int(value)); | 74 | prop->set(window->host,g_value_get_int(value)); |
| 74 | 75 | ||
| 75 | } | 76 | } |
| 76 | - else if(prop_id >= v3270_properties.type.boolean) | 77 | + else if(prop_id >= klass->properties.type.boolean) |
| 77 | { | 78 | { |
| 78 | - const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - v3270_properties.type.boolean)); | 79 | + const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - klass->properties.type.boolean)); |
| 79 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); | 80 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); |
| 80 | 81 | ||
| 81 | if(prop->set) | 82 | if(prop->set) |
| 82 | prop->set(window->host,g_value_get_boolean(value) ? 1 : 0); | 83 | prop->set(window->host,g_value_get_boolean(value) ? 1 : 0); |
| 83 | 84 | ||
| 84 | } | 85 | } |
| 85 | - else if(prop_id >= v3270_properties.type.toggle) | 86 | + else if(prop_id >= klass->properties.type.toggle) |
| 86 | { | 87 | { |
| 87 | debug("%s.%s",__FUNCTION__,"toggle"); | 88 | debug("%s.%s",__FUNCTION__,"toggle"); |
| 88 | - lib3270_set_toggle(window->host,prop_id - v3270_properties.type.toggle, (int) g_value_get_boolean (value)); | 89 | + lib3270_set_toggle(window->host,prop_id - klass->properties.type.toggle, (int) g_value_get_boolean (value)); |
| 89 | 90 | ||
| 90 | } | 91 | } |
| 91 | 92 | ||
| @@ -104,41 +105,42 @@ | @@ -104,41 +105,42 @@ | ||
| 104 | 105 | ||
| 105 | static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec) | 106 | static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec) |
| 106 | { | 107 | { |
| 107 | - v3270 *window = GTK_V3270(object); | 108 | + v3270 * window = GTK_V3270(object); |
| 109 | + v3270Class * klass = GTK_V3270_GET_CLASS(object); | ||
| 108 | 110 | ||
| 109 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); | 111 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); |
| 110 | 112 | ||
| 111 | - if(prop_id >= v3270_properties.type.str) | 113 | + if(prop_id >= klass->properties.type.str) |
| 112 | { | 114 | { |
| 113 | - const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str)); | 115 | + const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - klass->properties.type.str)); |
| 114 | debug("%s.%s.%s",__FUNCTION__,"string",prop->name); | 116 | debug("%s.%s.%s",__FUNCTION__,"string",prop->name); |
| 115 | 117 | ||
| 116 | if(prop->get) | 118 | if(prop->get) |
| 117 | g_value_set_string(value,prop->get(window->host)); | 119 | g_value_set_string(value,prop->get(window->host)); |
| 118 | 120 | ||
| 119 | } | 121 | } |
| 120 | - else if(prop_id >= v3270_properties.type.integer) | 122 | + else if(prop_id >= klass->properties.type.integer) |
| 121 | { | 123 | { |
| 122 | - const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - v3270_properties.type.integer)); | 124 | + const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - klass->properties.type.integer)); |
| 123 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); | 125 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); |
| 124 | 126 | ||
| 125 | if(prop->get) | 127 | if(prop->get) |
| 126 | g_value_set_int(value,prop->get(window->host)); | 128 | g_value_set_int(value,prop->get(window->host)); |
| 127 | 129 | ||
| 128 | } | 130 | } |
| 129 | - else if(prop_id >= v3270_properties.type.boolean) | 131 | + else if(prop_id >= klass->properties.type.boolean) |
| 130 | { | 132 | { |
| 131 | - const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - v3270_properties.type.boolean)); | 133 | + const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - klass->properties.type.boolean)); |
| 132 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); | 134 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); |
| 133 | 135 | ||
| 134 | if(prop->get) | 136 | if(prop->get) |
| 135 | g_value_set_boolean(value,prop->get(window->host) != 0 ? TRUE : FALSE); | 137 | g_value_set_boolean(value,prop->get(window->host) != 0 ? TRUE : FALSE); |
| 136 | 138 | ||
| 137 | } | 139 | } |
| 138 | - else if(prop_id >= v3270_properties.type.toggle) | 140 | + else if(prop_id >= klass->properties.type.toggle) |
| 139 | { | 141 | { |
| 140 | - debug("%s.%s.%s",__FUNCTION__,"toggle",lib3270_get_toggle_name(prop_id - v3270_properties.type.toggle)); | ||
| 141 | - g_value_set_boolean(value,lib3270_get_toggle(window->host,prop_id - v3270_properties.type.toggle) ? TRUE : FALSE ); | 142 | + debug("%s.%s.%s",__FUNCTION__,"toggle",lib3270_get_toggle_name(prop_id - klass->properties.type.toggle)); |
| 143 | + g_value_set_boolean(value,lib3270_get_toggle(window->host,prop_id - klass->properties.type.toggle) ? TRUE : FALSE ); | ||
| 142 | 144 | ||
| 143 | } | 145 | } |
| 144 | 146 | ||
| @@ -159,15 +161,17 @@ | @@ -159,15 +161,17 @@ | ||
| 159 | 161 | ||
| 160 | void v3270_install_property(GObjectClass *oclass, guint property_id, GParamSpec *pspec) | 162 | void v3270_install_property(GObjectClass *oclass, guint property_id, GParamSpec *pspec) |
| 161 | { | 163 | { |
| 162 | - static const struct | 164 | + v3270Class * klass = GTK_V3270_CLASS(oclass); |
| 165 | + | ||
| 166 | + const struct | ||
| 163 | { | 167 | { |
| 164 | const char *name; | 168 | const char *name; |
| 165 | GParamSpec **prop; | 169 | GParamSpec **prop; |
| 166 | } properties[] = { | 170 | } properties[] = { |
| 167 | - { "connected", &v3270_properties.online }, | ||
| 168 | - { "luname", &v3270_properties.luname }, | ||
| 169 | - { "model", &v3270_properties.model }, | ||
| 170 | - { "has-selection", &v3270_properties.selection }, | 171 | + { "connected", &klass->properties.online }, |
| 172 | + { "luname", &klass->properties.luname }, | ||
| 173 | + { "model", &klass->properties.model }, | ||
| 174 | + { "has-selection", &klass->properties.selection }, | ||
| 171 | }; | 175 | }; |
| 172 | 176 | ||
| 173 | size_t ix; | 177 | size_t ix; |
| @@ -195,7 +199,6 @@ | @@ -195,7 +199,6 @@ | ||
| 195 | 199 | ||
| 196 | debug("%s",__FUNCTION__); | 200 | debug("%s",__FUNCTION__); |
| 197 | 201 | ||
| 198 | - memset(&v3270_properties,0,sizeof(v3270_properties)); | ||
| 199 | gobject_class->set_property = v3270_set_property; | 202 | gobject_class->set_property = v3270_set_property; |
| 200 | gobject_class->get_property = v3270_get_property; | 203 | gobject_class->get_property = v3270_get_property; |
| 201 | 204 | ||
| @@ -221,12 +224,12 @@ | @@ -221,12 +224,12 @@ | ||
| 221 | // | 224 | // |
| 222 | 225 | ||
| 223 | // Extract toggle class. | 226 | // Extract toggle class. |
| 224 | - v3270_properties.type.toggle = klass->properties.count; | 227 | + klass->properties.type.toggle = klass->properties.count; |
| 225 | for(ix = 0; ix < LIB3270_TOGGLE_COUNT; ix++) | 228 | for(ix = 0; ix < LIB3270_TOGGLE_COUNT; ix++) |
| 226 | { | 229 | { |
| 227 | - debug("Property %u=%s (Toggle)",(unsigned int) v3270_properties.type.toggle + ix, lib3270_get_toggle_name(ix)); | 230 | + debug("Property %u=%s (Toggle)",(unsigned int) klass->properties.type.toggle + ix, lib3270_get_toggle_name(ix)); |
| 228 | 231 | ||
| 229 | - v3270_properties.toggle[ix] = | 232 | + klass->properties.toggle[ix] = |
| 230 | g_param_spec_boolean( | 233 | g_param_spec_boolean( |
| 231 | lib3270_get_toggle_name(ix), | 234 | lib3270_get_toggle_name(ix), |
| 232 | lib3270_get_toggle_name(ix), | 235 | lib3270_get_toggle_name(ix), |
| @@ -235,17 +238,17 @@ | @@ -235,17 +238,17 @@ | ||
| 235 | G_PARAM_WRITABLE|G_PARAM_READABLE | 238 | G_PARAM_WRITABLE|G_PARAM_READABLE |
| 236 | ); | 239 | ); |
| 237 | 240 | ||
| 238 | - v3270_install_property(gobject_class, klass->properties.count++, v3270_properties.toggle[ix]); | 241 | + v3270_install_property(gobject_class, klass->properties.count++, klass->properties.toggle[ix]); |
| 239 | 242 | ||
| 240 | } | 243 | } |
| 241 | 244 | ||
| 242 | // Creating boolean properties. | 245 | // Creating boolean properties. |
| 243 | - v3270_properties.type.boolean = klass->properties.count; | 246 | + klass->properties.type.boolean = klass->properties.count; |
| 244 | const LIB3270_INT_PROPERTY * bool_props = lib3270_get_boolean_properties_list(); | 247 | const LIB3270_INT_PROPERTY * bool_props = lib3270_get_boolean_properties_list(); |
| 245 | 248 | ||
| 246 | for(ix = 0; bool_props[ix].name; ix++) | 249 | for(ix = 0; bool_props[ix].name; ix++) |
| 247 | { | 250 | { |
| 248 | - debug("Property %u=%s (Boolean)",(unsigned int) v3270_properties.type.boolean + ix, bool_props[ix].name); | 251 | + debug("Property %u=%s (Boolean)",(unsigned int) klass->properties.type.boolean + ix, bool_props[ix].name); |
| 249 | spec = g_param_spec_boolean( | 252 | spec = g_param_spec_boolean( |
| 250 | bool_props[ix].name, | 253 | bool_props[ix].name, |
| 251 | bool_props[ix].name, | 254 | bool_props[ix].name, |
| @@ -260,11 +263,11 @@ | @@ -260,11 +263,11 @@ | ||
| 260 | 263 | ||
| 261 | // Creating integer properties. | 264 | // Creating integer properties. |
| 262 | const LIB3270_INT_PROPERTY * int_props = lib3270_get_int_properties_list(); | 265 | const LIB3270_INT_PROPERTY * int_props = lib3270_get_int_properties_list(); |
| 263 | - v3270_properties.type.integer = klass->properties.count; | 266 | + klass->properties.type.integer = klass->properties.count; |
| 264 | 267 | ||
| 265 | for(ix = 0; int_props[ix].name; ix++) | 268 | for(ix = 0; int_props[ix].name; ix++) |
| 266 | { | 269 | { |
| 267 | - debug("Property %u=%s (Integer)",(unsigned int) v3270_properties.type.integer + ix, int_props[ix].name); | 270 | + debug("Property %u=%s (Integer)",(unsigned int) klass->properties.type.integer + ix, int_props[ix].name); |
| 268 | 271 | ||
| 269 | spec = g_param_spec_int( | 272 | spec = g_param_spec_int( |
| 270 | int_props[ix].name, | 273 | int_props[ix].name, |
| @@ -287,12 +290,12 @@ | @@ -287,12 +290,12 @@ | ||
| 287 | 290 | ||
| 288 | // Creating string properties. | 291 | // Creating string properties. |
| 289 | const LIB3270_STRING_PROPERTY * str_props = lib3270_get_string_properties_list(); | 292 | const LIB3270_STRING_PROPERTY * str_props = lib3270_get_string_properties_list(); |
| 290 | - v3270_properties.type.str = klass->properties.count; | 293 | + klass->properties.type.str = klass->properties.count; |
| 291 | 294 | ||
| 292 | for(ix = 0; str_props[ix].name; ix++) | 295 | for(ix = 0; str_props[ix].name; ix++) |
| 293 | { | 296 | { |
| 294 | 297 | ||
| 295 | - debug("Property %u=%s (String)",(unsigned int) v3270_properties.type.str + ix, str_props[ix].name); | 298 | + debug("Property %u=%s (String)",(unsigned int) klass->properties.type.str + ix, str_props[ix].name); |
| 296 | 299 | ||
| 297 | spec = g_param_spec_string( | 300 | spec = g_param_spec_string( |
| 298 | str_props[ix].name, | 301 | str_props[ix].name, |
src/terminal/widget.c
| @@ -64,7 +64,6 @@ | @@ -64,7 +64,6 @@ | ||
| 64 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 64 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
| 65 | 65 | ||
| 66 | guint v3270_widget_signal[V3270_SIGNAL_LAST] = { 0 }; | 66 | guint v3270_widget_signal[V3270_SIGNAL_LAST] = { 0 }; |
| 67 | - GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT] = { 0 }; | ||
| 68 | 67 | ||
| 69 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ | 68 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ |
| 70 | 69 | ||
| @@ -337,9 +336,9 @@ static void v3270_class_init(v3270Class *klass) | @@ -337,9 +336,9 @@ static void v3270_class_init(v3270Class *klass) | ||
| 337 | for(f=0;f<LIB3270_POINTER_COUNT;f++) | 336 | for(f=0;f<LIB3270_POINTER_COUNT;f++) |
| 338 | { | 337 | { |
| 339 | #ifdef WIN32 | 338 | #ifdef WIN32 |
| 340 | - v3270_cursor[f] = gdk_cursor_new_from_name(gdk_display_get_default(),cr[f]); | 339 | + klass->cursors[f] = gdk_cursor_new_from_name(gdk_display_get_default(),cr[f]); |
| 341 | #else | 340 | #else |
| 342 | - v3270_cursor[f] = gdk_cursor_new_for_display(gdk_display_get_default(),cr[f]); | 341 | + klass->cursors[f] = gdk_cursor_new_for_display(gdk_display_get_default(),cr[f]); |
| 343 | #endif | 342 | #endif |
| 344 | } | 343 | } |
| 345 | } | 344 | } |
| @@ -1041,3 +1040,11 @@ LIB3270_EXPORT GtkWidget * v3270_get_default_widget(void) | @@ -1041,3 +1040,11 @@ LIB3270_EXPORT GtkWidget * v3270_get_default_widget(void) | ||
| 1041 | return GTK_WIDGET(widget); | 1040 | return GTK_WIDGET(widget); |
| 1042 | } | 1041 | } |
| 1043 | 1042 | ||
| 1043 | +void v3270_set_cursor(GtkWidget *widget, LIB3270_POINTER id) | ||
| 1044 | +{ | ||
| 1045 | + gdk_window_set_cursor( | ||
| 1046 | + gtk_widget_get_window(widget), | ||
| 1047 | + GTK_V3270_GET_CLASS(widget)->cursors[id % LIB3270_POINTER_COUNT] | ||
| 1048 | + ); | ||
| 1049 | +} | ||
| 1050 | + |
v3270.cbp
| @@ -172,6 +172,9 @@ | @@ -172,6 +172,9 @@ | ||
| 172 | <Option compilerVar="CC" /> | 172 | <Option compilerVar="CC" /> |
| 173 | </Unit> | 173 | </Unit> |
| 174 | <Unit filename="src/terminal/marshal.h" /> | 174 | <Unit filename="src/terminal/marshal.h" /> |
| 175 | + <Unit filename="src/terminal/mouse.c"> | ||
| 176 | + <Option compilerVar="CC" /> | ||
| 177 | + </Unit> | ||
| 175 | <Unit filename="src/terminal/oia.c"> | 178 | <Unit filename="src/terminal/oia.c"> |
| 176 | <Option compilerVar="CC" /> | 179 | <Option compilerVar="CC" /> |
| 177 | </Unit> | 180 | </Unit> |