Commit ac6936f06fbf82d6a37a666c85d11acdab6579ae
1 parent
458f43a4
Exists in
master
and in
5 other branches
Corrigindo indicador de insert, movendo toggles para a estrutura de controle de sessao
Showing
17 changed files
with
198 additions
and
183 deletions
Show diff stats
src/gtk/v3270/oia.c
... | ... | @@ -196,6 +196,30 @@ static void setup_single_char_right(GdkRectangle *rect, struct v3270_metrics *me |
196 | 196 | |
197 | 197 | } |
198 | 198 | |
199 | +static void setup_insert_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) | |
200 | +{ | |
201 | + if(rect->width > rect->height) | |
202 | + { | |
203 | + rect->width = rect->height; | |
204 | + } | |
205 | + else if(rect->height > rect->width) | |
206 | + { | |
207 | + rect->y += (rect->height - rect->width)/2; | |
208 | + rect->height = rect->width; | |
209 | + } | |
210 | + | |
211 | + rect->x -= rect->width; | |
212 | + | |
213 | +#ifdef DEBUG | |
214 | + cairo_set_source_rgb(cr,0.1,0.1,0.1); | |
215 | + cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); | |
216 | + cairo_fill(cr); | |
217 | +#endif | |
218 | + | |
219 | +} | |
220 | + | |
221 | + | |
222 | + | |
199 | 223 | static void setup_double_char_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) |
200 | 224 | { |
201 | 225 | rect->width <<= 1; |
... | ... | @@ -429,6 +453,9 @@ static void draw_insert(cairo_t *cr, H3270 *host, GdkColor *color, GdkRectangle |
429 | 453 | { |
430 | 454 | double y = rect->y+(rect->height-2); |
431 | 455 | |
456 | + cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); | |
457 | + cairo_clip(cr); | |
458 | + | |
432 | 459 | gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); |
433 | 460 | |
434 | 461 | cairo_move_to(cr,rect->x,y); |
... | ... | @@ -453,7 +480,7 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_me |
453 | 480 | { V3270_OIA_LUNAME, setup_luname_position }, |
454 | 481 | { V3270_OIA_PRINTER, setup_single_char_right }, |
455 | 482 | { V3270_OIA_SCRIPT, setup_single_char_right }, |
456 | - { V3270_OIA_INSERT, setup_single_char_right }, | |
483 | + { V3270_OIA_INSERT, setup_insert_position }, | |
457 | 484 | { V3270_OIA_TYPEAHEAD, setup_single_char_right }, |
458 | 485 | { V3270_OIA_SHIFT, setup_double_char_position }, |
459 | 486 | { V3270_OIA_CAPS, setup_single_char_right }, | ... | ... |
src/include/lib3270/popup.h
... | ... | @@ -44,7 +44,7 @@ |
44 | 44 | } LIB3270_NOTIFY; |
45 | 45 | |
46 | 46 | LIB3270_EXPORT void lib3270_set_popup_handler(int (*popup_handler)(H3270 *, LIB3270_NOTIFY, const char *, const char *, const char *, va_list)); |
47 | - LIB3270_EXPORT lib3270_popup_dialog(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...); | |
47 | + LIB3270_EXPORT void lib3270_popup_dialog(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, ...); | |
48 | 48 | |
49 | 49 | #endif // LIB3270_POPUP_INCLUDED |
50 | 50 | ... | ... |
src/include/lib3270/selection.h
... | ... | @@ -49,7 +49,7 @@ |
49 | 49 | * @return Non 0 if there's more to paste with lib3270_pastenext |
50 | 50 | * |
51 | 51 | */ |
52 | - LIB3270_EXPORT int lib3270_paste(H3270 *h, const char *str); | |
52 | + LIB3270_EXPORT int lib3270_paste(H3270 *h, const unsigned char *str); | |
53 | 53 | |
54 | 54 | /** |
55 | 55 | * Paste remaining string. | ... | ... |
src/include/lib3270/session.h
... | ... | @@ -55,81 +55,89 @@ |
55 | 55 | unsigned short attr; /**< Converted character attribute (color & etc) */ |
56 | 56 | }; |
57 | 57 | |
58 | + struct lib3270_toggle | |
59 | + { | |
60 | + char value; /**< toggle value */ | |
61 | + void (*upcall)(H3270 *, struct lib3270_toggle *, LIB3270_TOGGLE_TYPE); /**< change value */ | |
62 | + }; | |
63 | + | |
58 | 64 | struct _h3270 |
59 | 65 | { |
60 | - unsigned short sz; /**< Struct size */ | |
66 | + unsigned short sz; /**< Struct size */ | |
61 | 67 | |
62 | 68 | // Connection info |
63 | - int secure_connection; | |
64 | - int sock; /**< Network socket */ | |
65 | - int net_sock; | |
66 | - LIB3270_CSTATE cstate; /**< Connection state */ | |
69 | + int secure_connection; | |
70 | + int sock; /**< Network socket */ | |
71 | + int net_sock; | |
72 | + LIB3270_CSTATE cstate; /**< Connection state */ | |
67 | 73 | |
68 | - #if defined(_WIN32) /*[*/ | |
69 | - HANDLE sock_handle; | |
70 | - #endif /*]*/ | |
74 | + #if defined(_WIN32) | |
75 | + HANDLE sock_handle; | |
76 | + #endif | |
71 | 77 | |
72 | 78 | // flags |
73 | - int selected : 1; | |
79 | + int selected : 1; | |
80 | + | |
81 | + struct lib3270_toggle toggle[LIB3270_TOGGLE_COUNT]; | |
74 | 82 | |
75 | 83 | // Network & Termtype |
76 | - char * hostname; | |
77 | - char * connected_type; | |
78 | - char * connected_lu; | |
79 | - char luname[LIB3270_LUNAME_LENGTH+1]; | |
84 | + char * hostname; | |
85 | + char * connected_type; | |
86 | + char * connected_lu; | |
87 | + char luname[LIB3270_LUNAME_LENGTH+1]; | |
80 | 88 | |
81 | - char full_model_name[LIB3270_FULL_MODEL_NAME_LENGTH+1]; | |
82 | - char * model_name; | |
83 | - int model_num; | |
84 | - char * termtype; | |
89 | + char full_model_name[LIB3270_FULL_MODEL_NAME_LENGTH+1]; | |
90 | + char * model_name; | |
91 | + int model_num; | |
92 | + char * termtype; | |
85 | 93 | |
86 | - char * current_host; /**< the hostname part, stripped of qualifiers, luname and port number */ | |
87 | - char * full_current_host; /**< the entire string, for use in reconnecting */ | |
88 | - char * reconnect_host; | |
89 | - char * qualified_host; | |
90 | - char auto_reconnect_inprogress; | |
94 | + char * current_host; /**< the hostname part, stripped of qualifiers, luname and port number */ | |
95 | + char * full_current_host; /**< the entire string, for use in reconnecting */ | |
96 | + char * reconnect_host; | |
97 | + char * qualified_host; | |
98 | + char auto_reconnect_inprogress; | |
91 | 99 | |
92 | - LIB3270_MESSAGE oia_status; | |
100 | + LIB3270_MESSAGE oia_status; | |
93 | 101 | |
94 | - unsigned char oia_flag[LIB3270_FLAG_COUNT]; | |
102 | + unsigned char oia_flag[LIB3270_FLAG_COUNT]; | |
95 | 103 | |
96 | - unsigned short current_port; | |
104 | + unsigned short current_port; | |
97 | 105 | |
98 | 106 | // screen info |
99 | - char * charset; | |
100 | - int ov_rows; | |
101 | - int ov_cols; | |
102 | - int maxROWS; | |
103 | - int maxCOLS; | |
104 | - unsigned short rows; | |
105 | - unsigned short cols; | |
106 | - int cursor_addr; | |
107 | - int buffer_addr; | |
108 | - char flipped; | |
109 | - int screen_alt; /**< alternate screen? */ | |
110 | - int is_altbuffer; | |
111 | - | |
112 | - int formatted; /**< set in screen_disp */ | |
107 | + char * charset; | |
108 | + int ov_rows; | |
109 | + int ov_cols; | |
110 | + int maxROWS; | |
111 | + int maxCOLS; | |
112 | + unsigned short rows; | |
113 | + unsigned short cols; | |
114 | + int cursor_addr; | |
115 | + int buffer_addr; | |
116 | + char flipped; | |
117 | + int screen_alt; /**< alternate screen? */ | |
118 | + int is_altbuffer; | |
119 | + | |
120 | + int formatted; /**< set in screen_disp */ | |
113 | 121 | |
114 | 122 | // Screen contents |
115 | - void * buffer[2]; /**< Internal buffers */ | |
116 | - struct ea * ea_buf; /**< 3270 device buffer. ea_buf[-1] is the dummy default field attribute */ | |
117 | - struct ea * aea_buf; /** alternate 3270 extended attribute buffer */ | |
118 | - struct lib3270_text * text; /**< Converted 3270 chars */ | |
123 | + void * buffer[2]; /**< Internal buffers */ | |
124 | + struct ea * ea_buf; /**< 3270 device buffer. ea_buf[-1] is the dummy default field attribute */ | |
125 | + struct ea * aea_buf; /** alternate 3270 extended attribute buffer */ | |
126 | + struct lib3270_text * text; /**< Converted 3270 chars */ | |
119 | 127 | |
120 | 128 | // host.c |
121 | - char std_ds_host; | |
122 | - char no_login_host; | |
123 | - char non_tn3270e_host; | |
124 | - char passthru_host; | |
125 | - char ssl_host; | |
126 | - char ever_3270; | |
129 | + char std_ds_host; | |
130 | + char no_login_host; | |
131 | + char non_tn3270e_host; | |
132 | + char passthru_host; | |
133 | + char ssl_host; | |
134 | + char ever_3270; | |
127 | 135 | |
128 | 136 | // Widget info |
129 | - void * widget; | |
137 | + void * widget; | |
130 | 138 | |
131 | 139 | // selection |
132 | - char * paste_buffer; | |
140 | + char * paste_buffer; | |
133 | 141 | struct |
134 | 142 | { |
135 | 143 | int begin; |
... | ... | @@ -137,10 +145,10 @@ |
137 | 145 | } select; |
138 | 146 | |
139 | 147 | // xio |
140 | - unsigned long ns_read_id; | |
141 | - unsigned long ns_exception_id; | |
142 | - char reading; | |
143 | - char excepting; | |
148 | + unsigned long ns_read_id; | |
149 | + unsigned long ns_exception_id; | |
150 | + char reading; | |
151 | + char excepting; | |
144 | 152 | |
145 | 153 | // State change callbacks. |
146 | 154 | struct lib3270_state_callback *st_callbacks[LIB3270_STATE_USER]; | ... | ... |
src/lib3270/ansi.c
... | ... | @@ -1825,7 +1825,7 @@ ansi_send_pa(int nn) |
1825 | 1825 | net_sends(fn_buf); |
1826 | 1826 | } |
1827 | 1827 | |
1828 | -void toggle_lineWrap(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE type unused) | |
1828 | +void toggle_lineWrap(H3270 *session, struct lib3270_toggle *t unused, LIB3270_TOGGLE_TYPE type unused) | |
1829 | 1829 | { |
1830 | 1830 | if (toggled(LIB3270_TOGGLE_LINE_WRAP)) |
1831 | 1831 | wraparound_mode = 1; | ... | ... |
src/lib3270/ansic.h
... | ... | @@ -29,7 +29,7 @@ LIB3270_INTERNAL void ansi_send_pa(int nn); |
29 | 29 | LIB3270_INTERNAL void ansi_send_pf(int nn); |
30 | 30 | LIB3270_INTERNAL void ansi_send_right(void); |
31 | 31 | LIB3270_INTERNAL void ansi_send_up(void); |
32 | -LIB3270_INTERNAL void toggle_lineWrap(H3270 *session, struct toggle *t, LIB3270_TOGGLE_TYPE type); | |
32 | +LIB3270_INTERNAL void toggle_lineWrap(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE type); | |
33 | 33 | |
34 | 34 | #else /*][*/ |
35 | 35 | ... | ... |
src/lib3270/appres.h
... | ... | @@ -24,18 +24,21 @@ |
24 | 24 | |
25 | 25 | /* Toggles */ |
26 | 26 | |
27 | +/* | |
27 | 28 | struct toggle { |
28 | - char value; /* toggle value */ | |
29 | -// char changed; /* has the value changed since init */ | |
30 | -// Widget w[2]; /* the menu item widgets */ | |
31 | -// const char *label[2]; /* labels */ | |
32 | - void (*upcall)(H3270 *, struct toggle *, LIB3270_TOGGLE_TYPE); /* change value */ | |
29 | + char value; // toggle value | |
30 | +// char changed; // has the value changed since init | |
31 | +// Widget w[2]; // the menu item widgets | |
32 | +// const char *label[2]; // labels | |
33 | + void (*upcall)(H3270 *, struct toggle *, LIB3270_TOGGLE_TYPE); // change value | |
33 | 34 | // void (*callback)(H3270 *, int, LIB3270_TOGGLE_TYPE); |
34 | 35 | |
35 | 36 | }; |
36 | 37 | |
37 | -#define toggled(ix) (appres.toggle[ix].value) | |
38 | 38 | // #define toggle_toggle(t) { (t)->value = !(t)->value; } |
39 | +*/ | |
40 | + | |
41 | +#define toggled(ix) lib3270_get_toggle(NULL,ix) | |
39 | 42 | |
40 | 43 | /* Application resources */ |
41 | 44 | |
... | ... | @@ -184,7 +187,7 @@ typedef struct { |
184 | 187 | char *proxy; |
185 | 188 | |
186 | 189 | /* Toggles */ |
187 | - struct toggle toggle[N_TOGGLES]; | |
190 | +// struct toggle toggle[N_TOGGLES]; | |
188 | 191 | /* |
189 | 192 | #if defined(X3270_DISPLAY) |
190 | 193 | // Simple widget resources |
... | ... | @@ -234,4 +237,4 @@ extern AppRes appres; |
234 | 237 | #define N_( x ) x |
235 | 238 | #define MSG_( c, s ) s |
236 | 239 | |
237 | -void toggle_rectselect(H3270 *session, struct toggle *t, LIB3270_TOGGLE_TYPE tt); | |
240 | +void toggle_rectselect(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt); | ... | ... |
src/lib3270/ctlr.c
... | ... | @@ -2798,30 +2798,9 @@ static void ticking_stop(H3270 *session) |
2798 | 2798 | } |
2799 | 2799 | |
2800 | 2800 | /* |
2801 | -void toggle_showTiming(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE tt unused) | |
2802 | -{ | |
2803 | - if (!toggled(SHOW_TIMING)) | |
2804 | - status_untiming(&h3270); | |
2805 | -} | |
2806 | -*/ | |
2807 | - | |
2808 | - | |
2809 | -/* | |
2810 | 2801 | * No-op toggle. |
2811 | 2802 | */ |
2812 | -void | |
2813 | -toggle_nop(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE tt unused) | |
2803 | +void toggle_nop(H3270 *session, struct lib3270_toggle *t unused, LIB3270_TOGGLE_TYPE tt unused) | |
2814 | 2804 | { |
2815 | 2805 | } |
2816 | 2806 | |
2817 | -/* | |
2818 | -int ctlr_get_rows(void) | |
2819 | -{ | |
2820 | - return h3270.rows; | |
2821 | -} | |
2822 | - | |
2823 | -int ctlr_get_cols(void) | |
2824 | -{ | |
2825 | - return h3270.cols; | |
2826 | -} | |
2827 | -*/ | ... | ... |
src/lib3270/ctlrc.h
... | ... | @@ -62,18 +62,18 @@ LIB3270_INTERNAL void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ov |
62 | 62 | LIB3270_INTERNAL void ctlr_erase(H3270 *session, int alt); |
63 | 63 | |
64 | 64 | LIB3270_INTERNAL void ticking_start(H3270 *session, Boolean anyway); |
65 | -LIB3270_INTERNAL void toggle_nop(H3270 *session, struct toggle *t, LIB3270_TOGGLE_TYPE tt); | |
66 | -LIB3270_INTERNAL void toggle_showTiming(struct toggle *t, LIB3270_TOGGLE_TYPE tt); | |
65 | +LIB3270_INTERNAL void toggle_nop(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt); | |
66 | +LIB3270_INTERNAL void toggle_showTiming(struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt); | |
67 | 67 | |
68 | 68 | enum dbcs_state { |
69 | 69 | DBCS_NONE = 0, /* position is not DBCS */ |
70 | - DBCS_LEFT, /* position is left half of DBCS character */ | |
71 | - DBCS_RIGHT, /* position is right half of DBCS character */ | |
72 | - DBCS_SI, /* position is SI terminating DBCS subfield */ | |
73 | - DBCS_SB, /* position is SBCS character after the SI */ | |
70 | + DBCS_LEFT, /* position is left half of DBCS character */ | |
71 | + DBCS_RIGHT, /* position is right half of DBCS character */ | |
72 | + DBCS_SI, /* position is SI terminating DBCS subfield */ | |
73 | + DBCS_SB, /* position is SBCS character after the SI */ | |
74 | 74 | DBCS_LEFT_WRAP, /* position is left half of split DBCS */ |
75 | 75 | DBCS_RIGHT_WRAP, /* position is right half of split DBCS */ |
76 | - DBCS_DEAD /* position is dead left-half DBCS */ | |
76 | + DBCS_DEAD /* position is dead left-half DBCS */ | |
77 | 77 | }; |
78 | 78 | #define IS_LEFT(d) ((d) == DBCS_LEFT || (d) == DBCS_LEFT_WRAP) |
79 | 79 | #define IS_RIGHT(d) ((d) == DBCS_RIGHT || (d) == DBCS_RIGHT_WRAP) | ... | ... |
src/lib3270/glue.c
... | ... | @@ -127,7 +127,7 @@ static void initialize(void) |
127 | 127 | |
128 | 128 | h3270.selected = 0; |
129 | 129 | h3270.select.begin = h3270.select.end = 0; |
130 | - initialize_toggles(&h3270,appres.toggle); | |
130 | +// initialize_toggles(&h3270); | |
131 | 131 | |
132 | 132 | #if defined(_WIN32) |
133 | 133 | (void) get_version_info(); |
... | ... | @@ -148,11 +148,13 @@ static void initialize(void) |
148 | 148 | appres.modified_sel = False; |
149 | 149 | appres.apl_mode = False; |
150 | 150 | |
151 | -#if defined(C3270) || defined(TCL3270) /*[*/ | |
152 | -// appres.scripted = False; | |
153 | -#else /*][*/ | |
151 | +/* | |
152 | +#if defined(C3270) || defined(TCL3270) | |
153 | + appres.scripted = False; | |
154 | +#else | |
154 | 155 | appres.scripted = True; |
155 | -#endif /*]*/ | |
156 | +#endif | |
157 | +*/ | |
156 | 158 | |
157 | 159 | appres.numeric_lock = False; |
158 | 160 | // appres.secure = False; |
... | ... | @@ -193,9 +195,11 @@ static void initialize(void) |
193 | 195 | appres.trace_dir = "/tmp"; |
194 | 196 | #endif /*]*/ |
195 | 197 | |
196 | -#if defined(X3270_DISPLAY) || defined(WC3270) /*[*/ | |
198 | +/* | |
199 | +#if defined(X3270_DISPLAY) || defined(WC3270) | |
197 | 200 | appres.trace_monitor = True; |
198 | -#endif /*]*/ | |
201 | +#endif | |
202 | +*/ | |
199 | 203 | |
200 | 204 | #endif /*]*/ |
201 | 205 | |
... | ... | @@ -227,17 +231,23 @@ static void initialize(void) |
227 | 231 | appres.dft_buffer_size = DFT_BUF; |
228 | 232 | #endif /*]*/ |
229 | 233 | |
230 | -#if defined(C3270) && !defined(LIB3270) /*[*/ | |
234 | +/* | |
235 | +#if defined(C3270) && !defined(LIB3270) | |
231 | 236 | appres.toggle[CURSOR_POS].value = True; |
232 | -#endif /*]*/ | |
237 | +#endif | |
238 | +*/ | |
233 | 239 | |
234 | -#if defined(X3270_SCRIPT) || defined(TCL3270) /*[*/ | |
240 | +/* | |
241 | +#if defined(X3270_SCRIPT) || defined(TCL3270) | |
235 | 242 | appres.toggle[AID_WAIT].value = True; |
236 | -#endif /*]*/ | |
243 | +#endif | |
244 | +*/ | |
237 | 245 | |
238 | -#if defined(C3270) && defined(X3270_SCRIPT) /*[*/ | |
246 | +/* | |
247 | +#if defined(C3270) && defined(X3270_SCRIPT) | |
239 | 248 | appres.plugin_command = "x3270hist.pl"; |
240 | -#endif /*]*/ | |
249 | +#endif | |
250 | +*/ | |
241 | 251 | |
242 | 252 | #if defined(C3270) && defined(_WIN32) /*[*/ |
243 | 253 | appres.highlight_underline = True; | ... | ... |
src/lib3270/init.c
... | ... | @@ -49,7 +49,7 @@ void lib3270_session_free(H3270 *h) |
49 | 49 | if(lib3270_connected(h)) |
50 | 50 | lib3270_disconnect(h); |
51 | 51 | |
52 | - shutdown_toggles(h,appres.toggle); | |
52 | + shutdown_toggles(h); | |
53 | 53 | |
54 | 54 | // Release state change callbacks |
55 | 55 | for(f=0;f<N_ST;f++) |
... | ... | @@ -112,6 +112,9 @@ static void lib3270_session_init(H3270 *hSession, const char *model) |
112 | 112 | memset(hSession,0,sizeof(H3270)); |
113 | 113 | hSession->sz = sizeof(H3270); |
114 | 114 | |
115 | + // Initialize toggles | |
116 | + initialize_toggles(hSession); | |
117 | + | |
115 | 118 | // Dummy calls to avoid "ifs" |
116 | 119 | hSession->update = update_char; |
117 | 120 | hSession->update_model = update_model; | ... | ... |
src/lib3270/kybd.c
... | ... | @@ -2274,11 +2274,11 @@ LIB3270_ACTION( dup ) |
2274 | 2274 | if (kybdlock) |
2275 | 2275 | { |
2276 | 2276 | ENQUEUE_ACTION(lib3270_enter); |
2277 | - return; | |
2277 | + return 0; | |
2278 | 2278 | } |
2279 | 2279 | #if defined(X3270_ANSI) |
2280 | 2280 | if (IN_ANSI) |
2281 | - return; | |
2281 | + return 0; | |
2282 | 2282 | #endif |
2283 | 2283 | if (key_Character(EBC_dup, False, False, NULL)) |
2284 | 2284 | cursor_move(next_unprotected(hSession->cursor_addr)); | ... | ... |
src/lib3270/lib3270.cbp
... | ... | @@ -7,8 +7,8 @@ |
7 | 7 | <Option compiler="gcc" /> |
8 | 8 | <Build> |
9 | 9 | <Target title="Debug"> |
10 | - <Option output=".bin\Debug\lib3270" prefix_auto="1" extension_auto="1" /> | |
11 | - <Option object_output=".obj\Debug\" /> | |
10 | + <Option output=".bin/Debug/lib3270" prefix_auto="1" extension_auto="1" /> | |
11 | + <Option object_output=".obj/Debug/" /> | |
12 | 12 | <Option type="1" /> |
13 | 13 | <Option compiler="gcc" /> |
14 | 14 | <Option use_console_runner="0" /> |
... | ... | @@ -21,8 +21,8 @@ |
21 | 21 | </Linker> |
22 | 22 | </Target> |
23 | 23 | <Target title="Release"> |
24 | - <Option output=".bin\Release\lib3270" prefix_auto="1" extension_auto="1" /> | |
25 | - <Option object_output=".obj\Release\" /> | |
24 | + <Option output=".bin/Release/lib3270" prefix_auto="1" extension_auto="1" /> | |
25 | + <Option object_output=".obj/Release/" /> | |
26 | 26 | <Option type="3" /> |
27 | 27 | <Option compiler="gcc" /> |
28 | 28 | <Option createDefFile="1" /> |
... | ... | @@ -35,8 +35,8 @@ |
35 | 35 | </Linker> |
36 | 36 | </Target> |
37 | 37 | <Target title="testprogram"> |
38 | - <Option output=".bin\Debug\lib3270" prefix_auto="1" extension_auto="1" /> | |
39 | - <Option object_output=".obj\testprogram\" /> | |
38 | + <Option output=".bin/Debug/lib3270" prefix_auto="1" extension_auto="1" /> | |
39 | + <Option object_output=".obj/testprogram/" /> | |
40 | 40 | <Option type="1" /> |
41 | 41 | <Option compiler="gcc" /> |
42 | 42 | <Option use_console_runner="0" /> |
... | ... | @@ -53,18 +53,18 @@ |
53 | 53 | <Add option="-Wmissing-declarations" /> |
54 | 54 | <Add option="-Wall" /> |
55 | 55 | <Add option="-DLIB3270=1" /> |
56 | - <Add directory="..\include" /> | |
57 | - <Add directory="..\include\lib3270" /> | |
56 | + <Add directory="../include" /> | |
57 | + <Add directory="../include/lib3270" /> | |
58 | 58 | </Compiler> |
59 | - <Unit filename="..\include\lib3270.h" /> | |
60 | - <Unit filename="..\include\lib3270\action_table.h" /> | |
61 | - <Unit filename="..\include\lib3270\actions.h" /> | |
62 | - <Unit filename="..\include\lib3270\config.h.in" /> | |
63 | - <Unit filename="..\include\lib3270\log.h" /> | |
64 | - <Unit filename="..\include\lib3270\macros.h" /> | |
65 | - <Unit filename="..\include\lib3270\popup.h" /> | |
66 | - <Unit filename="..\include\lib3270\selection.h" /> | |
67 | - <Unit filename="..\include\lib3270\session.h" /> | |
59 | + <Unit filename="../include/lib3270.h" /> | |
60 | + <Unit filename="../include/lib3270/action_table.h" /> | |
61 | + <Unit filename="../include/lib3270/actions.h" /> | |
62 | + <Unit filename="../include/lib3270/config.h.in" /> | |
63 | + <Unit filename="../include/lib3270/log.h" /> | |
64 | + <Unit filename="../include/lib3270/macros.h" /> | |
65 | + <Unit filename="../include/lib3270/popup.h" /> | |
66 | + <Unit filename="../include/lib3270/selection.h" /> | |
67 | + <Unit filename="../include/lib3270/session.h" /> | |
68 | 68 | <Unit filename="3270ds.h" /> |
69 | 69 | <Unit filename="Makefile.in" /> |
70 | 70 | <Unit filename="X11keysym.h" /> |
... | ... | @@ -125,6 +125,9 @@ |
125 | 125 | </Unit> |
126 | 126 | <Unit filename="hostc.h" /> |
127 | 127 | <Unit filename="icmdc.h" /> |
128 | + <Unit filename="init.c"> | |
129 | + <Option compilerVar="CC" /> | |
130 | + </Unit> | |
128 | 131 | <Unit filename="keypadc.h" /> |
129 | 132 | <Unit filename="kybd.c"> |
130 | 133 | <Option compilerVar="CC" /> | ... | ... |
src/lib3270/paste.c
... | ... | @@ -81,6 +81,7 @@ |
81 | 81 | #include "api.h" |
82 | 82 | |
83 | 83 | #include <lib3270/popup.h> |
84 | +#include <lib3270/selection.h> | |
84 | 85 | |
85 | 86 | /*---[ Struct ]-------------------------------------------------------------------------------------------------*/ |
86 | 87 | |
... | ... | @@ -234,7 +235,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str) |
234 | 235 | return data.qtd; |
235 | 236 | } |
236 | 237 | |
237 | -LIB3270_EXPORT int lib3270_paste(H3270 *h, const char *str) | |
238 | +LIB3270_EXPORT int lib3270_paste(H3270 *h, const unsigned char *str) | |
238 | 239 | { |
239 | 240 | int sz; |
240 | 241 | CHECK_SESSION_HANDLE(h); |
... | ... | @@ -262,9 +263,9 @@ LIB3270_EXPORT int lib3270_paste(H3270 *h, const char *str) |
262 | 263 | return 0; |
263 | 264 | } |
264 | 265 | |
265 | - if(strlen(str) > sz) | |
266 | + if(strlen((char *) str) > sz) | |
266 | 267 | { |
267 | - h->paste_buffer = strdup(str+sz); | |
268 | + h->paste_buffer = strdup((char *) (str+sz)); | |
268 | 269 | return 1; |
269 | 270 | } |
270 | 271 | |
... | ... | @@ -287,7 +288,7 @@ LIB3270_EXPORT int lib3270_pastenext(H3270 *h) |
287 | 288 | ptr = h->paste_buffer; |
288 | 289 | h->paste_buffer = NULL; |
289 | 290 | |
290 | - rc = lib3270_paste(h,ptr); | |
291 | + rc = lib3270_paste(h,(unsigned char *) ptr); | |
291 | 292 | |
292 | 293 | free(ptr); |
293 | 294 | return rc; | ... | ... |
src/lib3270/selection.c
... | ... | @@ -34,6 +34,8 @@ |
34 | 34 | #include <lib3270/session.h> |
35 | 35 | #include <lib3270/selection.h> |
36 | 36 | |
37 | + static void update_selection(H3270 *session); | |
38 | + | |
37 | 39 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
38 | 40 | |
39 | 41 | static void get_selected_addr(H3270 *session, int *begin, int *end) |
... | ... | @@ -156,7 +158,7 @@ static void set_selected(H3270 *session) |
156 | 158 | session->set_selection(session,1); |
157 | 159 | } |
158 | 160 | |
159 | -void toggle_rectselect(H3270 *session, struct toggle *t, LIB3270_TOGGLE_TYPE tt) | |
161 | +void toggle_rectselect(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt) | |
160 | 162 | { |
161 | 163 | if(!session->selected) |
162 | 164 | return; |
... | ... | @@ -303,7 +305,7 @@ LIB3270_ACTION( reselect ) |
303 | 305 | CHECK_SESSION_HANDLE(hSession); |
304 | 306 | |
305 | 307 | if(!lib3270_connected(hSession) || hSession->select.begin == hSession->select.end || hSession->selected) |
306 | - return; | |
308 | + return 0; | |
307 | 309 | |
308 | 310 | update_selection(hSession); |
309 | 311 | set_selected(hSession); | ... | ... |
src/lib3270/toggles.c
... | ... | @@ -74,8 +74,8 @@ static const char *toggle_names[LIB3270_TOGGLE_COUNT] = |
74 | 74 | "keepselected", |
75 | 75 | "underline", |
76 | 76 | "autoconnect", |
77 | - "kpalternative", /**< Keypad +/- move to next/previous field */ | |
78 | - "beep", /**< Beep on errors */ | |
77 | + "kpalternative", /**< Keypad +/- move to next/previous field */ | |
78 | + "beep", /**< Beep on errors */ | |
79 | 79 | }; |
80 | 80 | |
81 | 81 | LIB3270_EXPORT unsigned char lib3270_get_toggle(H3270 *session, LIB3270_TOGGLE ix) |
... | ... | @@ -84,14 +84,15 @@ LIB3270_EXPORT unsigned char lib3270_get_toggle(H3270 *session, LIB3270_TOGGLE i |
84 | 84 | |
85 | 85 | if(ix < 0 || ix >= N_TOGGLES) |
86 | 86 | return 0; |
87 | - return (unsigned char) appres.toggle[ix].value != 0; | |
87 | + return (unsigned char) session->toggle[ix].value != 0; | |
88 | 88 | } |
89 | 89 | |
90 | 90 | /* |
91 | 91 | * Call the internal update routine |
92 | 92 | */ |
93 | -static void toggle_notify(H3270 *session, struct toggle *t, LIB3270_TOGGLE ix) | |
93 | +static void toggle_notify(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE ix) | |
94 | 94 | { |
95 | + Trace("%s: ix=%d upcall=%p",__FUNCTION__,ix,t->upcall); | |
95 | 96 | t->upcall(session, t, TT_INTERACTIVE); |
96 | 97 | |
97 | 98 | if(session->update_toggle) |
... | ... | @@ -101,15 +102,15 @@ static void toggle_notify(H3270 *session, struct toggle *t, LIB3270_TOGGLE ix) |
101 | 102 | |
102 | 103 | LIB3270_EXPORT void lib3270_set_toggle(H3270 *session, LIB3270_TOGGLE ix, int value) |
103 | 104 | { |
104 | - char v = value ? True : False; | |
105 | - struct toggle * t; | |
105 | + char v = value ? True : False; | |
106 | + struct lib3270_toggle * t; | |
106 | 107 | |
107 | 108 | CHECK_SESSION_HANDLE(session); |
108 | 109 | |
109 | 110 | if(ix < 0 || ix >= LIB3270_TOGGLE_COUNT) |
110 | 111 | return; |
111 | 112 | |
112 | - t = &appres.toggle[ix]; | |
113 | + t = &session->toggle[ix]; | |
113 | 114 | |
114 | 115 | if(v == t->value) |
115 | 116 | return; |
... | ... | @@ -121,14 +122,14 @@ LIB3270_EXPORT void lib3270_set_toggle(H3270 *session, LIB3270_TOGGLE ix, int va |
121 | 122 | |
122 | 123 | LIB3270_EXPORT int lib3270_toggle(H3270 *session, LIB3270_TOGGLE ix) |
123 | 124 | { |
124 | - struct toggle *t; | |
125 | + struct lib3270_toggle *t; | |
125 | 126 | |
126 | 127 | CHECK_SESSION_HANDLE(session); |
127 | 128 | |
128 | 129 | if(ix < 0 || ix >= LIB3270_TOGGLE_COUNT) |
129 | 130 | return 0; |
130 | 131 | |
131 | - t = &appres.toggle[ix]; | |
132 | + t = &session->toggle[ix]; | |
132 | 133 | |
133 | 134 | t->value = t->value ? False : True; |
134 | 135 | toggle_notify(session,t,ix); |
... | ... | @@ -136,7 +137,7 @@ LIB3270_EXPORT int lib3270_toggle(H3270 *session, LIB3270_TOGGLE ix) |
136 | 137 | return (int) t->value; |
137 | 138 | } |
138 | 139 | |
139 | -static void toggle_monocase(H3270 *session, struct toggle *t, LIB3270_TOGGLE_TYPE tt) | |
140 | +static void toggle_monocase(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt) | |
140 | 141 | { |
141 | 142 | screen_disp(session); |
142 | 143 | } |
... | ... | @@ -144,24 +145,24 @@ static void toggle_monocase(H3270 *session, struct toggle *t, LIB3270_TOGGLE_TYP |
144 | 145 | /* |
145 | 146 | * Called from system initialization code to handle initial toggle settings. |
146 | 147 | */ |
147 | -void initialize_toggles(H3270 *session, struct toggle *toggle) | |
148 | +void initialize_toggles(H3270 *session) | |
148 | 149 | { |
149 | 150 | int f; |
150 | 151 | |
151 | 152 | for(f=0;f<LIB3270_TOGGLE_COUNT;f++) |
152 | - toggle[f].upcall = toggle_nop; | |
153 | + session->toggle[f].upcall = toggle_nop; | |
153 | 154 | |
154 | - toggle[LIB3270_TOGGLE_RECTANGLE_SELECT].upcall = toggle_rectselect; | |
155 | - toggle[LIB3270_TOGGLE_MONOCASE].upcall = toggle_monocase; | |
155 | + session->toggle[LIB3270_TOGGLE_RECTANGLE_SELECT].upcall = toggle_rectselect; | |
156 | + session->toggle[LIB3270_TOGGLE_MONOCASE].upcall = toggle_monocase; | |
156 | 157 | |
157 | 158 | #if defined(X3270_TRACE) |
158 | - toggle[LIB3270_TOGGLE_DS_TRACE].upcall = toggle_dsTrace; | |
159 | - toggle[LIB3270_TOGGLE_SCREEN_TRACE].upcall = toggle_screenTrace; | |
160 | - toggle[LIB3270_TOGGLE_EVENT_TRACE].upcall = toggle_eventTrace; | |
159 | + session->toggle[LIB3270_TOGGLE_DS_TRACE].upcall = toggle_dsTrace; | |
160 | + session->toggle[LIB3270_TOGGLE_SCREEN_TRACE].upcall = toggle_screenTrace; | |
161 | + session->toggle[LIB3270_TOGGLE_EVENT_TRACE].upcall = toggle_eventTrace; | |
161 | 162 | #endif |
162 | 163 | |
163 | 164 | #if defined(X3270_ANSI) |
164 | - toggle[LIB3270_TOGGLE_LINE_WRAP].upcall = toggle_lineWrap; | |
165 | + session->toggle[LIB3270_TOGGLE_LINE_WRAP].upcall = toggle_lineWrap; | |
165 | 166 | #endif |
166 | 167 | |
167 | 168 | static const LIB3270_TOGGLE active_by_default[] = |
... | ... | @@ -173,14 +174,14 @@ void initialize_toggles(H3270 *session, struct toggle *toggle) |
173 | 174 | |
174 | 175 | for(f=0;f< (sizeof(active_by_default)/sizeof(active_by_default[0])); f++) |
175 | 176 | { |
176 | - toggle[active_by_default[f]].value = True; | |
177 | + session->toggle[active_by_default[f]].value = True; | |
177 | 178 | } |
178 | 179 | |
179 | 180 | |
180 | 181 | for(f=0;f<LIB3270_TOGGLE_COUNT;f++) |
181 | 182 | { |
182 | - if(toggle[f].value) | |
183 | - toggle[f].upcall(session,&toggle[f],TT_INITIAL); | |
183 | + if(session->toggle[f].value) | |
184 | + session->toggle[f].upcall(session,&session->toggle[f],TT_INITIAL); | |
184 | 185 | } |
185 | 186 | |
186 | 187 | } |
... | ... | @@ -188,7 +189,7 @@ void initialize_toggles(H3270 *session, struct toggle *toggle) |
188 | 189 | /* |
189 | 190 | * Called from system exit code to handle toggles. |
190 | 191 | */ |
191 | -void shutdown_toggles(H3270 *session, struct toggle *toggle) | |
192 | +void shutdown_toggles(H3270 *session) | |
192 | 193 | { |
193 | 194 | #if defined(X3270_TRACE) |
194 | 195 | static const LIB3270_TOGGLE disable_on_shutdown[] = {DS_TRACE, EVENT_TRACE, SCREEN_TRACE}; |
... | ... | @@ -198,7 +199,7 @@ void shutdown_toggles(H3270 *session, struct toggle *toggle) |
198 | 199 | for(f=0;f< (sizeof(disable_on_shutdown)/sizeof(disable_on_shutdown[0])); f++) |
199 | 200 | { |
200 | 201 | LIB3270_TOGGLE ix = disable_on_shutdown[f]; |
201 | - struct toggle * t = &toggle[ix]; | |
202 | + struct toggle * t = &session->toggle[ix]; | |
202 | 203 | |
203 | 204 | if(t->value) |
204 | 205 | { |
... | ... | @@ -209,28 +210,6 @@ void shutdown_toggles(H3270 *session, struct toggle *toggle) |
209 | 210 | session->update_toggle(session,ix,t->value,TT_FINAL,toggle_names[ix]); |
210 | 211 | } |
211 | 212 | } |
212 | - | |
213 | -/* | |
214 | - // Clean up the data stream trace monitor window. | |
215 | - if(toggle[DS_TRACE].value) | |
216 | - { | |
217 | - toggle[DS_TRACE].value = False; | |
218 | - toggle_dsTrace(session, &toggle[DS_TRACE], TT_FINAL); | |
219 | - } | |
220 | - | |
221 | - if(toggle[EVENT_TRACE].value) | |
222 | - { | |
223 | - toggle[EVENT_TRACE].value = False; | |
224 | - toggle_dsTrace(session, &toggle[EVENT_TRACE], TT_FINAL); | |
225 | - } | |
226 | - | |
227 | - // Clean up the screen trace file. | |
228 | - if (toggle[SCREEN_TRACE].value) | |
229 | - { | |
230 | - toggle[SCREEN_TRACE].value = False; | |
231 | - toggle_screenTrace(session, &toggle[SCREEN_TRACE], TT_FINAL); | |
232 | - } | |
233 | -*/ | |
234 | 213 | #endif |
235 | 214 | } |
236 | 215 | ... | ... |
src/lib3270/togglesc.h
... | ... | @@ -25,5 +25,5 @@ |
25 | 25 | |
26 | 26 | // extern const char *toggle_names[N_TOGGLES]; |
27 | 27 | |
28 | - LIB3270_INTERNAL void initialize_toggles(H3270 *session, struct toggle *toggle); | |
29 | - LIB3270_INTERNAL void shutdown_toggles(H3270 *session, struct toggle *toggle); | |
28 | + LIB3270_INTERNAL void initialize_toggles(H3270 *session); | |
29 | + LIB3270_INTERNAL void shutdown_toggles(H3270 *session); | ... | ... |