Commit c853e9b43c642b0cba5abb5635ba15181925046d
1 parent
6282c734
Exists in
master
and in
5 other branches
Melhorando alerta no caso de systype errado.
Showing
2 changed files
with
41 additions
and
2 deletions
Show diff stats
src/lib3270/options.c
@@ -153,7 +153,7 @@ LIB3270_EXPORT LIB3270_OPTION lib3270_parse_host_type(const char *name) | @@ -153,7 +153,7 @@ LIB3270_EXPORT LIB3270_OPTION lib3270_parse_host_type(const char *name) | ||
153 | 153 | ||
154 | int f; | 154 | int f; |
155 | 155 | ||
156 | - for(f=0;f<(sizeof(host_type)/sizeof(host_type[0]));f++) | 156 | + for(f=0;host_type[f].name;f++) |
157 | { | 157 | { |
158 | if(!strcasecmp(host_type[f].name,name)) | 158 | if(!strcasecmp(host_type[f].name,name)) |
159 | return host_type[f].option; | 159 | return host_type[f].option; |
src/pw3270/window.c
@@ -294,8 +294,47 @@ | @@ -294,8 +294,47 @@ | ||
294 | 294 | ||
295 | LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name) | 295 | LIB3270_EXPORT void pw3270_set_host_type(GtkWidget *widget, const gchar *name) |
296 | { | 296 | { |
297 | + size_t f; | ||
298 | + size_t sz; | ||
299 | + | ||
297 | g_return_if_fail(GTK_IS_PW3270(widget)); | 300 | g_return_if_fail(GTK_IS_PW3270(widget)); |
298 | - v3270_set_host_type(GTK_PW3270(widget)->terminal,name); | 301 | + |
302 | + int rc = v3270_set_host_type(GTK_PW3270(widget)->terminal,name); | ||
303 | + | ||
304 | + if(!rc) { | ||
305 | + return; | ||
306 | + } | ||
307 | + | ||
308 | + GtkWidget *popup = gtk_message_dialog_new_with_markup( | ||
309 | + GTK_WINDOW(widget), | ||
310 | + GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, | ||
311 | + GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE, | ||
312 | + _( "Can't recognize \"%s\" as a valid host type" ), name); | ||
313 | + | ||
314 | + gtk_window_set_title(GTK_WINDOW(popup),strerror(rc)); | ||
315 | + | ||
316 | + // Obtenho as opções válidas. | ||
317 | + char text[4096]; | ||
318 | + const LIB3270_OPTION_ENTRY *host_type = lib3270_get_option_list(); | ||
319 | + | ||
320 | + *text = 0; | ||
321 | + for(f=1;host_type[f].name;f++) | ||
322 | + { | ||
323 | + sz = strlen(text); | ||
324 | + snprintf(text+sz,4095-sz,_( "%s<b>%s</b> for %s"), *text ? ", " : "",host_type[f].name,gettext(host_type[f].description)); | ||
325 | + | ||
326 | + } | ||
327 | + | ||
328 | + sz = strlen(text); | ||
329 | + snprintf(text+sz,4095-sz,_( " and <b>%s</b> for %s."),host_type[0].name,gettext(host_type[0].description)); | ||
330 | + | ||
331 | + gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(popup),_( "The known types are %s" ),text); | ||
332 | + | ||
333 | + gtk_dialog_run(GTK_DIALOG(popup)); | ||
334 | + | ||
335 | + gtk_widget_destroy(popup); | ||
336 | + | ||
337 | + | ||
299 | } | 338 | } |
300 | 339 | ||
301 | LIB3270_EXPORT int pw3270_set_session_color_type(GtkWidget *widget, unsigned short colortype) | 340 | LIB3270_EXPORT int pw3270_set_session_color_type(GtkWidget *widget, unsigned short colortype) |