diff options
| author | Steven Rostedt <srostedt@redhat.com> | 2010-06-09 16:53:40 -0400 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2010-06-09 16:53:40 -0400 |
| commit | bfcfe4834608b06ffecab2dc185e44669e48f50d (patch) | |
| tree | 885cefffe6bd7d907146c44973336aa094365e34 | |
| parent | 0418165357886dfa71a273b47ba1ae44323a0f9c (diff) | |
kernelshark: Clean up event dialog code
Use gtk_dialog_run() and examine the results instead of having
to create a helper structure that is allocated and passed back to
signals.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
| -rw-r--r-- | trace-filter.c | 66 |
1 files changed, 18 insertions, 48 deletions
diff --git a/trace-filter.c b/trace-filter.c index 009d92d..b7ca5c3 100644 --- a/trace-filter.c +++ b/trace-filter.c | |||
| @@ -1530,9 +1530,9 @@ static gint update_system_events(GtkTreeModel *model, | |||
| 1530 | return size; | 1530 | return size; |
| 1531 | } | 1531 | } |
| 1532 | 1532 | ||
| 1533 | static void accept_events(struct event_filter_helper *event_helper) | 1533 | static void accept_events(GtkTreeView *view, |
| 1534 | trace_filter_event_cb_func func, gpointer data) | ||
| 1534 | { | 1535 | { |
| 1535 | GtkTreeView *view = event_helper->view; | ||
| 1536 | GtkTreeModel *model; | 1536 | GtkTreeModel *model; |
| 1537 | GtkTreeIter iter; | 1537 | GtkTreeIter iter; |
| 1538 | gboolean active; | 1538 | gboolean active; |
| @@ -1558,8 +1558,7 @@ static void accept_events(struct event_filter_helper *event_helper) | |||
| 1558 | &systems, systems_size, | 1558 | &systems, systems_size, |
| 1559 | &events, &events_size); | 1559 | &events, &events_size); |
| 1560 | 1560 | ||
| 1561 | event_helper->func(TRUE, active, systems, events, | 1561 | func(TRUE, active, systems, events, data); |
| 1562 | event_helper->data); | ||
| 1563 | 1562 | ||
| 1564 | if (systems) { | 1563 | if (systems) { |
| 1565 | for (i = 0; systems[i]; i++) | 1564 | for (i = 0; systems[i]; i++) |
| @@ -1570,31 +1569,6 @@ static void accept_events(struct event_filter_helper *event_helper) | |||
| 1570 | g_free(events); | 1569 | g_free(events); |
| 1571 | } | 1570 | } |
| 1572 | 1571 | ||
| 1573 | /* Callback for the clicked signal of the Events filter button */ | ||
| 1574 | static void | ||
| 1575 | event_dialog_response (gpointer data, gint response_id) | ||
| 1576 | { | ||
| 1577 | struct dialog_helper *helper = data; | ||
| 1578 | struct event_filter_helper *event_helper = helper->data; | ||
| 1579 | |||
| 1580 | switch (response_id) { | ||
| 1581 | case GTK_RESPONSE_ACCEPT: | ||
| 1582 | accept_events(event_helper); | ||
| 1583 | break; | ||
| 1584 | case GTK_RESPONSE_REJECT: | ||
| 1585 | event_helper->func(FALSE, FALSE, NULL, NULL, | ||
| 1586 | event_helper->data); | ||
| 1587 | break; | ||
| 1588 | default: | ||
| 1589 | break; | ||
| 1590 | }; | ||
| 1591 | |||
| 1592 | gtk_widget_destroy(GTK_WIDGET(helper->dialog)); | ||
| 1593 | |||
| 1594 | g_free(event_helper); | ||
| 1595 | g_free(helper); | ||
| 1596 | } | ||
| 1597 | |||
| 1598 | static void filter_event_dialog(struct tracecmd_input *handle, | 1572 | static void filter_event_dialog(struct tracecmd_input *handle, |
| 1599 | struct event_filter *filter, | 1573 | struct event_filter *filter, |
| 1600 | gboolean all_events, | 1574 | gboolean all_events, |
| @@ -1602,13 +1576,10 @@ static void filter_event_dialog(struct tracecmd_input *handle, | |||
| 1602 | trace_filter_event_cb_func func, | 1576 | trace_filter_event_cb_func func, |
| 1603 | gpointer data) | 1577 | gpointer data) |
| 1604 | { | 1578 | { |
| 1605 | struct dialog_helper *helper; | ||
| 1606 | struct event_filter_helper *event_helper; | ||
| 1607 | GtkWidget *dialog; | 1579 | GtkWidget *dialog; |
| 1608 | GtkWidget *scrollwin; | 1580 | GtkWidget *scrollwin; |
| 1609 | GtkWidget *view; | 1581 | GtkWidget *view; |
| 1610 | 1582 | int result; | |
| 1611 | helper = g_malloc(sizeof(*helper)); | ||
| 1612 | 1583 | ||
| 1613 | /* --- Make dialog window --- */ | 1584 | /* --- Make dialog window --- */ |
| 1614 | 1585 | ||
| @@ -1621,26 +1592,11 @@ static void filter_event_dialog(struct tracecmd_input *handle, | |||
| 1621 | GTK_RESPONSE_REJECT, | 1592 | GTK_RESPONSE_REJECT, |
| 1622 | NULL); | 1593 | NULL); |
| 1623 | 1594 | ||
| 1624 | event_helper = g_new0(typeof(*event_helper), 1); | ||
| 1625 | g_assert(event_helper); | ||
| 1626 | |||
| 1627 | helper->dialog = dialog; | ||
| 1628 | helper->data = event_helper; | ||
| 1629 | |||
| 1630 | event_helper->func = func; | ||
| 1631 | event_helper->data = data; | ||
| 1632 | |||
| 1633 | /* We can attach the Quit menu item to our exit function */ | ||
| 1634 | g_signal_connect_swapped (dialog, "response", | ||
| 1635 | G_CALLBACK (event_dialog_response), | ||
| 1636 | (gpointer) helper); | ||
| 1637 | |||
| 1638 | scrollwin = gtk_scrolled_window_new(NULL, NULL); | 1595 | scrollwin = gtk_scrolled_window_new(NULL, NULL); |
| 1639 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), | 1596 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), |
| 1640 | GTK_POLICY_AUTOMATIC, | 1597 | GTK_POLICY_AUTOMATIC, |
| 1641 | GTK_POLICY_AUTOMATIC); | 1598 | GTK_POLICY_AUTOMATIC); |
| 1642 | view = create_event_list_view(handle, filter, all_events, systems, events); | 1599 | view = create_event_list_view(handle, filter, all_events, systems, events); |
| 1643 | event_helper->view = GTK_TREE_VIEW(view); | ||
| 1644 | 1600 | ||
| 1645 | gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0); | 1601 | gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0); |
| 1646 | gtk_container_add(GTK_CONTAINER(scrollwin), view); | 1602 | gtk_container_add(GTK_CONTAINER(scrollwin), view); |
| @@ -1649,6 +1605,20 @@ static void filter_event_dialog(struct tracecmd_input *handle, | |||
| 1649 | DIALOG_WIDTH, DIALOG_HEIGHT); | 1605 | DIALOG_WIDTH, DIALOG_HEIGHT); |
| 1650 | 1606 | ||
| 1651 | gtk_widget_show_all(dialog); | 1607 | gtk_widget_show_all(dialog); |
| 1608 | |||
| 1609 | result = gtk_dialog_run(GTK_DIALOG(dialog)); | ||
| 1610 | switch (result) { | ||
| 1611 | case GTK_RESPONSE_ACCEPT: | ||
| 1612 | accept_events(GTK_TREE_VIEW(view), func, data); | ||
| 1613 | break; | ||
| 1614 | case GTK_RESPONSE_REJECT: | ||
| 1615 | func(FALSE, FALSE, NULL, NULL, data); | ||
| 1616 | break; | ||
| 1617 | default: | ||
| 1618 | break; | ||
| 1619 | }; | ||
| 1620 | |||
| 1621 | gtk_widget_destroy(dialog); | ||
| 1652 | } | 1622 | } |
| 1653 | 1623 | ||
| 1654 | /** | 1624 | /** |
