Commit c853e9b43c642b0cba5abb5635ba15181925046d

Authored by Perry Werneck
1 parent 6282c734

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 153  
154 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 158 if(!strcasecmp(host_type[f].name,name))
159 159 return host_type[f].option;
... ...
src/pw3270/window.c
... ... @@ -294,8 +294,47 @@
294 294  
295 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 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 340 LIB3270_EXPORT int pw3270_set_session_color_type(GtkWidget *widget, unsigned short colortype)
... ...