Text   |  XML   |  ReML   |   Visible Warnings:

Unreachable Computation  at filter_dlg.c:408

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

filter_dialog_new

(/home/sate/Testcases/c/cve/wireshark-1.2.0/gtk/filter_dlg.c)expand/collapse
Show more  
 343  static GtkWidget *
 344  filter_dialog_new(GtkWidget *button, GtkWidget *parent_filter_te,
 345                    filter_list_type_t list_type, construct_args_t *construct_args)
 346  {
 347      GtkWidget  *main_w,           /* main window */
 348                 *main_vb,          /* main container */
 349                 *bbox,             /* button container */
 350                 *ok_bt,            /* "OK" button */
 351                 *apply_bt,         /* "Apply" button */
 352                 *save_bt,          /* "Save" button */
 353                 *cancel_bt,        /* "Cancel" button */
 354                 *help_bt;          /* "Help" button */
 355      GtkWidget  *filter_vb,        /* filter settings box */
 356
368
Show [ Lines 356 to 368 omitted. ]
 369                 *add_expression_bt,
 370                 *filter_fr,
 371                 *edit_fr,
 372                 *props_fr;
 373      GdkWindow  *parent;
 374      GtkTooltips *tooltips;
 375      static filter_list_type_t cfilter_list_type = CFILTER_EDITED_LIST;
 376      static filter_list_type_t dfilter_list_type = DFILTER_EDITED_LIST;
 377      filter_list_type_t *filter_list_type_p;
 378      GList       **filter_dialogs;
 379      const gchar *filter_te_str = NULL;
 380      GtkListStore      *store;
 381      GtkCellRenderer   *renderer;
 382      GtkTreeViewColumn *column;
 383      GtkTreeSelection  *sel;
 384      GtkTreeIter       *l_select;
 385      gchar *list_name = NULL;
 386   
 387      /* Get a pointer to a static variable holding the type of filter on 
 388         which we're working, so we can pass that pointer to callback
 389         routines. */
 390      switch (list_type) {
 391   
 392      case CFILTER_LIST:
 393          filter_dialogs = &cfilter_dialogs;
 394          filter_list_type_p = &cfilter_list_type;
 395          list_type = CFILTER_EDITED_LIST;
 396          list_name = "Capture Filter";
 397          break;
 398   
 399      case DFILTER_LIST:
 400          filter_dialogs = &dfilter_dialogs;
 401          filter_list_type_p = &dfilter_list_type;
 402          list_type = DFILTER_EDITED_LIST;
 403          list_name = "Display Filter";
 404          break;
 405   
 406      default:
 407          g_assert_not_reached();
 408          filter_dialogs = NULL;
 409          filter_list_type_p = NULL;
 410          break;
 411      }
 412   
 413      tooltips = gtk_tooltips_new ();
 414   
 415      main_w = dlg_conf_window_new(construct_args->title);
 416      gtk_window_set_default_size(GTK_WINDOW(main_w), 400, 400);
 417      g_object_set_data(G_OBJECT(main_w), E_FILT_CONSTRUCT_ARGS_KEY, construct_args);
 418   
 419      main_vb = gtk_vbox_new(FALSE, 0);
 420      gtk_container_set_border_width(GTK_CONTAINER(main_vb), 5);
 421      gtk_container_add(GTK_CONTAINER(main_w), main_vb);
 422      gtk_widget_show(main_vb);
 423   
 424      /* Make sure everything is set up */
 425      if (parent_filter_te)
 426          filter_te_str = gtk_entry_get_text(GTK_ENTRY(parent_filter_te));
 427   
 428      /* Container for each row of widgets */
 429      filter_vb = gtk_vbox_new(FALSE, 0);
 430      gtk_container_set_border_width(GTK_CONTAINER(filter_vb), 0);
 431      gtk_container_add(GTK_CONTAINER(main_vb), filter_vb);
 432      gtk_widget_show(filter_vb);
 433   
 434      /* Top row: Buttons and filter list */
 435      top_hb = gtk_hbox_new(FALSE, 0);
 436      gtk_container_add(GTK_CONTAINER(filter_vb), top_hb);
 437      gtk_widget_show(top_hb);
 438   
 439      edit_fr = gtk_frame_new("Edit");
 440      gtk_box_pack_start(GTK_BOX(top_hb), edit_fr, FALSE, FALSE, 0);
 441      gtk_widget_show(edit_fr);
 442   
 443      list_bb = gtk_vbox_new(TRUE, 0);
 444      gtk_container_set_border_width(GTK_CONTAINER(list_bb), 5);
 445      gtk_container_add(GTK_CONTAINER(edit_fr), list_bb);
 446      gtk_widget_show(list_bb);
 447   
 448      new_bt = gtk_button_new_from_stock(GTK_STOCK_NEW);
 449      g_signal_connect(new_bt, "clicked", G_CALLBACK(filter_new_bt_clicked_cb), filter_list_type_p);
 450      gtk_widget_show(new_bt);
 451      gtk_box_pack_start (GTK_BOX (list_bb), new_bt, FALSE, FALSE, 0);
 452      gtk_tooltips_set_tip (tooltips, new_bt,
 453          "Create a new filter at the end of the list (with the current properties)", NULL);
 454   
 455      del_bt = gtk_button_new_from_stock(GTK_STOCK_DELETE);
 456      gtk_widget_set_sensitive(del_bt, FALSE);
 457      g_signal_connect(del_bt, "clicked", G_CALLBACK(filter_del_bt_clicked_cb), filter_list_type_p);
 458      g_object_set_data(G_OBJECT(main_w), E_FILT_DEL_BT_KEY, del_bt);
 459      gtk_widget_show(del_bt);
 460      gtk_box_pack_start (GTK_BOX (list_bb), del_bt, FALSE, FALSE, 0);
 461      gtk_tooltips_set_tip (tooltips, del_bt, ("Delete the selected filter"), NULL);
 462   
 463      filter_fr = gtk_frame_new(list_name);
 464      gtk_box_pack_start(GTK_BOX(top_hb), filter_fr, TRUE, TRUE, 0);
 465      gtk_widget_show(filter_fr);
 466   
 467      filter_sc = scrolled_window_new(NULL, NULL);
 468      gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(filter_sc),
 469                                     GTK_SHADOW_IN);
 470   
 471      gtk_container_set_border_width  (GTK_CONTAINER (filter_sc), 5);
 472      gtk_container_add(GTK_CONTAINER(filter_fr), filter_sc);
 473      gtk_widget_show(filter_sc);
 474   
 475      store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER);
 476      filter_l = tree_view_new(GTK_TREE_MODEL(store));
 477      gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(filter_l), FALSE);
 478      renderer = gtk_cell_renderer_text_new();
 479      column = gtk_tree_view_column_new_with_attributes("", renderer, "text",
 480                                                        0, NULL);
 481      gtk_tree_view_column_set_sort_column_id(column, 0);
 482      gtk_tree_view_append_column(GTK_TREE_VIEW(filter_l), column);
 483      sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(filter_l));
 484      gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
 485      g_signal_connect(sel, "changed", G_CALLBACK(filter_sel_list_cb), filter_vb);
 486      g_signal_connect(filter_l, "button_press_event", G_CALLBACK(filter_sel_list_button_cb),
 487                     NULL);
 488      g_object_set_data(G_OBJECT(main_w), E_FILT_FILTER_L_KEY, filter_l);
 489      gtk_container_add(GTK_CONTAINER(filter_sc), filter_l);
 490      gtk_widget_show(filter_l);
 491   
 492      g_object_set_data(G_OBJECT(filter_l), E_FILT_DBLFUNC_KEY, filter_dlg_dclick);
 493      g_object_set_data(G_OBJECT(filter_l), E_FILT_DBLARG_KEY, main_w);
 494      /* This is a Boolean, but we make it a non-null pointer for TRUE 
 495         and a null pointer for FALSE, as object data is a pointer. */
 496      g_object_set_data(G_OBJECT(filter_l), E_FILT_DBLACTIVATE_KEY,
 497                      construct_args->activate_on_ok ? "" : NULL);
 498   
 499      /* fill in data */
 500      l_select = fill_list(main_w, list_type, filter_te_str);
 501   
 502      g_object_unref(G_OBJECT(store));
 503   
 504   
 505      props_fr = gtk_frame_new("Properties");
 506      gtk_box_pack_start(GTK_BOX(filter_vb), props_fr, FALSE, FALSE, 0);
 507      gtk_widget_show(props_fr);
 508   
 509      props_vb = gtk_vbox_new(FALSE, 3);
 510      gtk_container_set_border_width(GTK_CONTAINER(props_vb), 5);
 511      gtk_container_add(GTK_CONTAINER(props_fr), props_vb);
 512      gtk_widget_show(props_vb);
 513   
 514      /* row: Filter name entry */
 515      middle_hb = gtk_hbox_new(FALSE, 3);
 516      gtk_container_add(GTK_CONTAINER(props_vb), middle_hb);
 517      gtk_widget_show(middle_hb);
 518   
 519      name_lb = gtk_label_new("Filter name:");
 520      gtk_box_pack_start(GTK_BOX(middle_hb), name_lb, FALSE, FALSE, 0);
 521      gtk_widget_show(name_lb);
 522   
 523      name_te = gtk_entry_new();
 524      gtk_box_pack_start(GTK_BOX(middle_hb), name_te, TRUE, TRUE, 0);
 525      g_object_set_data(G_OBJECT(main_w), E_FILT_NAME_TE_KEY, name_te);
 526      g_signal_connect(name_te, "changed", G_CALLBACK(filter_name_te_changed_cb), filter_list_type_p);
 527      gtk_widget_show(name_te);
 528   
 529      /* row: Filter text entry */
 530      bottom_hb = gtk_hbox_new(FALSE, 3);
 531      gtk_container_add(GTK_CONTAINER(props_vb), bottom_hb);
 532      gtk_widget_show(bottom_hb);
 533   
 534      filter_lb = gtk_label_new("Filter string:");
 535      gtk_box_pack_start(GTK_BOX(bottom_hb), filter_lb, FALSE, FALSE, 0);
 536      gtk_widget_show(filter_lb);
 537   
 538      filter_te = gtk_entry_new();
 539      gtk_box_pack_start(GTK_BOX(bottom_hb), filter_te, TRUE, TRUE, 0);
 540      g_object_set_data(G_OBJECT(main_w), E_FILT_FILTER_TE_KEY, filter_te);
 541      g_signal_connect(filter_te, "changed", G_CALLBACK(filter_name_te_changed_cb), filter_list_type_p);
 542      if (list_type == DFILTER_EDITED_LIST) {
 543          colorize_filter_te_as_empty(filter_te);
 544   
 545      g_object_set_data(G_OBJECT(main_w), E_FILT_AUTOCOMP_PTR_KEY, NULL);
 546      g_signal_connect(filter_te, "key-press-event", G_CALLBACK (filter_string_te_key_pressed_cb), NULL);
 547      g_signal_connect(main_w, "key-press-event", G_CALLBACK (filter_parent_dlg_key_pressed_cb), NULL);
 548      }
 549      gtk_widget_show(filter_te);
 550   
 551      g_object_set_data(G_OBJECT(main_w), E_FILT_PARENT_FILTER_TE_KEY, parent_filter_te);
 552   
 553      if (list_type == DFILTER_EDITED_LIST) {
 554          gtk_tooltips_set_tip(tooltips, filter_te,
 555              "Enter a display filter. "
 556              "The background color of this field is changed by a continuous syntax check"
 557                " (green is valid, red is invalid, yellow may have unexpected results).",
 558              NULL);
 559   
 560          /* Create the "Add Expression..." button, to pop up a dialog 
 561             for constructing filter comparison expressions. */
 562          add_expression_bt = gtk_button_new_from_stock(WIRESHARK_STOCK_ADD_EXPRESSION);
 563          g_signal_connect(add_expression_bt, "clicked", G_CALLBACK(filter_add_expr_bt_cb), main_w);
 564          gtk_box_pack_start(GTK_BOX(bottom_hb), add_expression_bt, FALSE, FALSE, 0);
 565          gtk_widget_show(add_expression_bt);
 566          gtk_tooltips_set_tip (tooltips, add_expression_bt, ("Add an expression to the filter string"), NULL);
 567      }
 568   
 569   
 570      /* button row (create all possible buttons and hide the unrequired later - it's a lot easier) */
 571      bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_SAVE, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
 572      gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 5);
 573      gtk_widget_show(bbox);
 574   
 575      ok_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_OK);
 576      g_signal_connect(ok_bt, "clicked", G_CALLBACK(filter_dlg_ok_cb), filter_list_type_p);
 577      gtk_tooltips_set_tip (tooltips, ok_bt, ("Apply the filters and close this dialog"), NULL);
 578   
 579      /* Catch the "activate" signal on the filter name and filter 
 580         expression text entries, so that if the user types Return 
 581         there, we act as if the "OK" button had been selected, as 
 582         happens if Return is typed if some widget that *doesn't*
 583         handle the Return key has the input focus. */
 584      if (parent_filter_te != NULL) {
 585          dlg_set_activate(name_te, ok_bt);
 586          dlg_set_activate(filter_te, ok_bt);
 587      }
 588   
 589      apply_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_APPLY);
 590      g_signal_connect(apply_bt, "clicked", G_CALLBACK(filter_dlg_apply_cb), filter_list_type_p);
 591      gtk_tooltips_set_tip (tooltips, apply_bt, ("Apply the filters and keep this dialog open"), NULL);
 592   
 593      save_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_SAVE);
 594      g_signal_connect(save_bt, "clicked", G_CALLBACK(filter_dlg_save_cb), filter_list_type_p);
 595      gtk_tooltips_set_tip (tooltips, save_bt, ("Save the filters permanently and keep this dialog open"), NULL);
 596   
 597      cancel_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_CANCEL);
 598      gtk_tooltips_set_tip (tooltips, cancel_bt, ("Cancel the changes"), NULL);
 599      g_signal_connect(cancel_bt, "clicked", G_CALLBACK(filter_dlg_cancel_cb), filter_list_type_p);
 600      window_set_cancel_button(main_w, cancel_bt, NULL);
 601   
 602      help_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_HELP);
 603      if (list_type == CFILTER_EDITED_LIST) {
 604          g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)HELP_CAPTURE_FILTERS_DIALOG);
 605      } else {
 606          g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)HELP_DISPLAY_FILTERS_DIALOG);
 607      }
 608      gtk_tooltips_set_tip (tooltips, help_bt, ("Show topic specific help"), NULL);
 609   
 610      if(ok_bt) {
 611          gtk_widget_grab_default(ok_bt);
 612      }
 613   
 614      remember_filter_dialog(main_w, filter_dialogs);
 615   
 616      if (button != NULL) {
 617      /* This dialog box was created by a "Filter" button.
 618         Set the E_FILT_BUTTON_PTR_KEY for the new dialog to point to 
 619         the button. */
 620      g_object_set_data(G_OBJECT(main_w), E_FILT_BUTTON_PTR_KEY, button);
 621   
 622      /* Set the E_FILT_DIALOG_PTR_KEY for the button to point to us */
 623      g_object_set_data(G_OBJECT(button), E_FILT_DIALOG_PTR_KEY, main_w);
 624      }
 625   
 626      /* DO SELECTION THINGS *AFTER* SHOWING THE DIALOG! */
 627      /* otherwise the updatings can get confused */
 628      if (l_select) {
 629          gtk_tree_selection_select_iter(sel, l_select);
 630          g_free(l_select);
 631      } else if (filter_te_str && filter_te_str[0]) {
 632          gtk_entry_set_text(GTK_ENTRY(name_te), "New filter");
 633          gtk_entry_set_text(GTK_ENTRY(filter_te), filter_te_str);
 634      }
 635   
 636      g_signal_connect(main_w, "delete_event", G_CALLBACK(filter_dlg_delete_event_cb), filter_list_type_p);
 637      g_signal_connect(main_w, "destroy", G_CALLBACK(filter_dlg_destroy_cb), filter_list_type_p);
 638   
 639      gtk_widget_show(main_w);
 640   
 641      if(construct_args->modal_and_transient) {
 642          parent = gtk_widget_get_parent_window(parent_filter_te);
 643          gdk_window_set_transient_for(main_w->window, parent);
 644          gtk_window_set_modal(GTK_WINDOW(main_w), TRUE);
 645      }
 646   
 647      /* hide the Ok button, if we don't have to apply it and our caller wants a Save button */
 648      if (parent_filter_te == NULL && prefs.gui_use_pref_save) {
 649          gtk_widget_hide(ok_bt);
 650      }
 651   
 652      /* hide the Apply button, if our caller don't wants one */
 653      if (!construct_args->wants_apply_button) {
 654          gtk_widget_hide(apply_bt);
 655      }
 656   
 657      /* hide the Save button if the user uses implicit save */
 658      if (!prefs.gui_use_pref_save) {
 659          gtk_widget_hide(save_bt);
 660      }
 661   
 662      window_present(main_w);
 663   
 664      return main_w;
 665  }
Show more  




Change Warning 4060.29973 : Unreachable Computation

Priority:
State:
Finding:
Owner:
Note: