#include <string.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
+#include <gdk/gdkkeysyms.h>
#include <lttv/lttv.h>
#include <lttv/module.h>
* Callback functions
*/
void callback_process_button(GtkWidget *widget, gpointer data);
+gboolean callback_enter_check(GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer user_data);
void callback_add_button(GtkWidget *widget, gpointer data);
void callback_logical_op_box(GtkWidget *widget, gpointer data);
void callback_expression_field(GtkWidget *widget, gpointer data);
GtkWidget *f_add_button; /**< add expression to current expression (GtkButton) */
- gchar *name; /**< Name of the window in the main window */
};
/**
g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("tracefile.name"));
g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("trace.name"));
g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.process_name"));
+ g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.thread_brand"));
g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.pid"));
g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.ppid"));
g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.creation_time"));
fvd->f_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(fvd->f_window), "LTTV Filter");
+ gtk_window_set_transient_for(GTK_WINDOW(fvd->f_window),
+ GTK_WINDOW(main_window_get_widget(tab)));
+ gtk_window_set_destroy_with_parent(GTK_WINDOW(fvd->f_window), TRUE);
/*
* Initiating GtkTable layout
* - processing button
*/
fvd->f_expression_field = gtk_entry_new(); //gtk_scrolled_window_new (NULL, NULL);
+ g_signal_connect (G_OBJECT(fvd->f_expression_field),
+ "key-press-event", G_CALLBACK (callback_enter_check), (gpointer)fvd);
// gtk_entry_set_text(GTK_ENTRY(fvd->f_expression_field),"state.cpu>0");
gtk_widget_show (fvd->f_expression_field);
g_filter_list = g_slist_remove(g_filter_list, fvd);
- main_window_remove_child_window(tab, fvd->name);
-
- g_free(fvd->name);
-
g_free(fvd);
}
h_guifilter(Tab *tab)
{
FilterViewerData* f = gui_filter(tab) ;
- f->name = g_new(gchar, 256);
- snprintf(f->name, 256, "guifilter %p", f);
-
- if(f)
- main_window_add_child_window(tab, f,
- f->name, (GDestroyNotify)gui_filter_destructor);
return NULL;
-
}
/**
g_debug("callback_process_button(): Processing expression");
FilterViewerData *fvd = (FilterViewerData*)data;
+ LttvFilter* filter;
if(strlen(gtk_entry_get_text(GTK_ENTRY(fvd->f_expression_field))) !=0) {
- LttvFilter* filter = lttv_filter_new();
+ filter = lttv_filter_new();
GString* s = g_string_new(gtk_entry_get_text(GTK_ENTRY(fvd->f_expression_field)));
lttv_filter_append_expression(filter,s->str);
g_string_free(s,TRUE);
//SetFilter(fvd->tab,filter);
- lttvwindow_report_filter(fvd->tab, filter);
+ } else {
+ filter = NULL;
}
+ lttvwindow_report_filter(fvd->tab, filter);
+}
+
+gboolean callback_enter_check(GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer user_data)
+{
+ g_debug("typed : %x", event->keyval);
+ switch(event->keyval) {
+ case GDK_Return:
+ case GDK_KP_Enter:
+ case GDK_ISO_Enter:
+ case GDK_3270_Enter:
+ callback_process_button(widget, user_data);
+ break;
+ default:
+ break;
+ }
+ return FALSE;
}
/**