aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-04-05 21:43:43 -0400
committerSteven Rostedt <rostedt@goodmis.org>2010-04-09 11:56:18 -0400
commit338a694c0002d70349de3f0e7e47322467f72765 (patch)
tree3899dfc9d361cf98b23fe01025983f1e80a1f3bd
parent38b92d6b993327de864ef7182cebe530abc5f5c7 (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.c89
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 */
162static void
163load_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 */
195static void
196save_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 */
162static void 222static void
163exit_clicked (gpointer data) 223exit_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");