1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../evlist.h" 2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../cache.h" 3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../evsel.h" 4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../sort.h" 5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../hist.h" 6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../helpline.h" 7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "gtk.h" 8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <signal.h> 10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengvoid perf_gtk__signal(int sig) 12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{ 13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng perf_gtk__exit(false); 14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng psignal(sig, "perf"); 15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng} 16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengvoid perf_gtk__resize_window(GtkWidget *window) 18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{ 19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng GdkRectangle rect; 20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng GdkScreen *screen; 21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng int monitor; 22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng int height; 23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng int width; 24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng screen = gtk_widget_get_screen(window); 26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng monitor = gdk_screen_get_monitor_at_window(screen, window->window); 28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng gdk_screen_get_monitor_geometry(screen, monitor, &rect); 30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng width = rect.width * 3 / 4; 32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng height = rect.height * 3 / 4; 33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng gtk_window_resize(GTK_WINDOW(window), width, height); 35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng} 36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengconst char *perf_gtk__get_percent_color(double percent) 38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{ 39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng if (percent >= MIN_RED) 40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng return "<span fgcolor='red'>"; 41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng if (percent >= MIN_GREEN) 42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng return "<span fgcolor='dark green'>"; 43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng return NULL; 44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng} 45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#ifdef HAVE_GTK_INFO_BAR 47e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengGtkWidget *perf_gtk__setup_info_bar(void) 48e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{ 49e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng GtkWidget *info_bar; 50e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng GtkWidget *label; 51e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng GtkWidget *content_area; 52e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 53e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng info_bar = gtk_info_bar_new(); 54e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng gtk_widget_set_no_show_all(info_bar, TRUE); 55e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 56e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng label = gtk_label_new(""); 57e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng gtk_widget_show(label); 58e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 59e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng content_area = gtk_info_bar_get_content_area(GTK_INFO_BAR(info_bar)); 60e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng gtk_container_add(GTK_CONTAINER(content_area), label); 61e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 62e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng gtk_info_bar_add_button(GTK_INFO_BAR(info_bar), GTK_STOCK_OK, 63e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng GTK_RESPONSE_OK); 64e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng g_signal_connect(info_bar, "response", 65e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng G_CALLBACK(gtk_widget_hide), NULL); 66e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 67e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng pgctx->info_bar = info_bar; 68e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng pgctx->message_label = label; 69e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 70e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng return info_bar; 71e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng} 72e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#endif 73e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 74e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengGtkWidget *perf_gtk__setup_statusbar(void) 75e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{ 76e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng GtkWidget *stbar; 77e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng unsigned ctxid; 78e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 79e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng stbar = gtk_statusbar_new(); 80e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 81e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ctxid = gtk_statusbar_get_context_id(GTK_STATUSBAR(stbar), 82e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng "perf report"); 83e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng pgctx->statbar = stbar; 84e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng pgctx->statbar_ctx_id = ctxid; 85e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 86e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng return stbar; 87e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng} 88