diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-04-05 21:43:43 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-04-09 11:56:18 -0400 |
commit | 338a694c0002d70349de3f0e7e47322467f72765 (patch) | |
tree | 3899dfc9d361cf98b23fe01025983f1e80a1f3bd | |
parent | 38b92d6b993327de864ef7182cebe530abc5f5c7 (diff) |
kernelshark: Add loading and saving of filters
Hooked to the trace-view and trace-graph code to load and save
event and task filters.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | kernel-shark.c | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/kernel-shark.c b/kernel-shark.c index d913ae0..7bc80fe 100644 --- a/kernel-shark.c +++ b/kernel-shark.c | |||
@@ -158,6 +158,66 @@ load_clicked (gpointer data) | |||
158 | g_free(filename); | 158 | g_free(filename); |
159 | } | 159 | } |
160 | 160 | ||
161 | /* Callback for the clicked signal of the Load Filters button */ | ||
162 | static void | ||
163 | load_filters_clicked (gpointer data) | ||
164 | { | ||
165 | struct shark_info *info = data; | ||
166 | struct graph_info *ginfo = info->ginfo; | ||
167 | GtkTreeView *trace_tree = GTK_TREE_VIEW(info->treeview); | ||
168 | struct tracecmd_xml_handle *handle; | ||
169 | gchar *filename; | ||
170 | |||
171 | filename = trace_get_file_dialog("Load Filters"); | ||
172 | if (!filename) | ||
173 | return; | ||
174 | |||
175 | handle = tracecmd_xml_open(filename); | ||
176 | if (!handle) | ||
177 | warning("Could not open %s", filename); | ||
178 | g_free(filename); | ||
179 | |||
180 | /* | ||
181 | * Just in case we are loading only a tree view filter, | ||
182 | * we will load the task filters for the tree view first. | ||
183 | * Then we load the graph next, and if the graph has | ||
184 | * trace filters, than those will override them. | ||
185 | */ | ||
186 | trace_view_load_filters(handle, trace_tree, | ||
187 | ginfo->task_filter, | ||
188 | ginfo->hide_tasks); | ||
189 | trace_graph_load_filters(ginfo, handle); | ||
190 | |||
191 | tracecmd_xml_close(handle); | ||
192 | } | ||
193 | |||
194 | /* Callback for the clicked signal of the Save Filters button */ | ||
195 | static void | ||
196 | save_filters_clicked (gpointer data) | ||
197 | { | ||
198 | struct shark_info *info = data; | ||
199 | struct graph_info *ginfo = info->ginfo; | ||
200 | struct tracecmd_xml_handle *handle; | ||
201 | GtkTreeView *trace_tree = GTK_TREE_VIEW(info->treeview); | ||
202 | gchar *filename; | ||
203 | |||
204 | filename = trace_get_file_dialog("Save Filters"); | ||
205 | if (!filename) | ||
206 | return; | ||
207 | |||
208 | handle = tracecmd_xml_create(filename); | ||
209 | if (!handle) | ||
210 | warning("Could not create %s", filename); | ||
211 | g_free(filename); | ||
212 | |||
213 | trace_view_save_filters(handle, trace_tree, | ||
214 | ginfo->task_filter, ginfo->hide_tasks); | ||
215 | |||
216 | trace_graph_save_filters(ginfo, handle); | ||
217 | |||
218 | tracecmd_xml_close(handle); | ||
219 | } | ||
220 | |||
161 | /* Callback for the clicked signal of the Exit button */ | 221 | /* Callback for the clicked signal of the Exit button */ |
162 | static void | 222 | static void |
163 | exit_clicked (gpointer data) | 223 | exit_clicked (gpointer data) |
@@ -769,6 +829,35 @@ void kernel_shark(int argc, char **argv) | |||
769 | gtk_widget_show(sub_item); | 829 | gtk_widget_show(sub_item); |
770 | 830 | ||
771 | 831 | ||
832 | /* --- File - Load Filter Option --- */ | ||
833 | |||
834 | sub_item = gtk_menu_item_new_with_label("Load filters"); | ||
835 | |||
836 | /* Add them to the menu */ | ||
837 | gtk_menu_shell_append(GTK_MENU_SHELL (menu), sub_item); | ||
838 | |||
839 | g_signal_connect_swapped (G_OBJECT (sub_item), "activate", | ||
840 | G_CALLBACK (load_filters_clicked), | ||
841 | (gpointer) info); | ||
842 | |||
843 | /* We do need to show menu items */ | ||
844 | gtk_widget_show(sub_item); | ||
845 | |||
846 | |||
847 | /* --- File - Save Filter Option --- */ | ||
848 | |||
849 | sub_item = gtk_menu_item_new_with_label("Save filters"); | ||
850 | |||
851 | /* Add them to the menu */ | ||
852 | gtk_menu_shell_append(GTK_MENU_SHELL (menu), sub_item); | ||
853 | |||
854 | g_signal_connect_swapped (G_OBJECT (sub_item), "activate", | ||
855 | G_CALLBACK (save_filters_clicked), | ||
856 | (gpointer) info); | ||
857 | |||
858 | /* We do need to show menu items */ | ||
859 | gtk_widget_show(sub_item); | ||
860 | |||
772 | /* --- File - Quit Option --- */ | 861 | /* --- File - Quit Option --- */ |
773 | 862 | ||
774 | sub_item = gtk_menu_item_new_with_label("Quit"); | 863 | sub_item = gtk_menu_item_new_with_label("Quit"); |