diff options
author | Anders Broman <anders.broman@ericsson.com> | 2011-08-23 13:49:37 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2011-08-23 13:49:37 +0000 |
commit | 637490272dec3446d5ea2a2c67e14732edef02ab (patch) | |
tree | cd33c20df2c7515dd7ceb78767dd752d57fffddb /gtk/rtp_analysis.c | |
parent | 8f2076f5efecf02cc74df118c6c85cde41c3e32b (diff) |
Make colors work on GTK3
svn path=/trunk/; revision=38687
Diffstat (limited to 'gtk/rtp_analysis.c')
-rw-r--r-- | gtk/rtp_analysis.c | 68 |
1 files changed, 53 insertions, 15 deletions
diff --git a/gtk/rtp_analysis.c b/gtk/rtp_analysis.c index 8541e3a35b..4f1da96b39 100644 --- a/gtk/rtp_analysis.c +++ b/gtk/rtp_analysis.c @@ -145,6 +145,9 @@ typedef struct _dialog_graph_graph_t { gboolean display; GtkWidget *display_button; int hf_index; +#if GTK_CHECK_VERSION(3,0,0) + GdkRGBA rgba_color; +#endif GdkColor color; gchar title[100]; } dialog_graph_graph_t; @@ -1421,15 +1424,26 @@ static void quit(GtkWidget *widget _U_, user_data_t *user_data) } /****************************************************************************/ +#if GTK_CHECK_VERSION(3,0,0) +static gboolean draw_area_draw(GtkWidget *widget, cairo_t *cr, gpointer data) +{ + user_data_t *user_data = data; + GtkAllocation allocation; + + gtk_widget_get_allocation (widget, &allocation); + + cairo_set_source_surface (cr, user_data->dlg.dialog_graph.surface, 0, 0); + cairo_rectangle (cr, 0, 0, allocation.width, allocation.height); + cairo_fill (cr); + + return FALSE; +} +#else static gint expose_event(GtkWidget *widget, GdkEventExpose *event) { - user_data_t *user_data; + user_data_t *user_data = data; cairo_t *cr = gdk_cairo_create (gtk_widget_get_window(widget)); - user_data=(user_data_t *)g_object_get_data(G_OBJECT(widget), "user_data_t"); - if(!user_data){ - exit(10); - } #if GTK_CHECK_VERSION(2,22,0) cairo_set_source_surface (cr, user_data->dlg.dialog_graph.surface, 0, 0); @@ -1443,7 +1457,7 @@ static gint expose_event(GtkWidget *widget, GdkEventExpose *event) return FALSE; } - +#endif /****************************************************************************/ static gint configure_event(GtkWidget *widget, GdkEventConfigure *event _U_) { @@ -1536,12 +1550,15 @@ static void create_draw_area(user_data_t* user_data, GtkWidget *box) { user_data->dlg.dialog_graph.draw_area=gtk_drawing_area_new(); g_signal_connect(user_data->dlg.dialog_graph.draw_area, "destroy", G_CALLBACK(quit), user_data); - g_object_set_data(G_OBJECT(user_data->dlg.dialog_graph.draw_area), "user_data_t", user_data); gtk_widget_set_size_request(user_data->dlg.dialog_graph.draw_area, user_data->dlg.dialog_graph.surface_width, user_data->dlg.dialog_graph.surface_height); /* signals needed to handle backing pixmap */ - g_signal_connect(user_data->dlg.dialog_graph.draw_area, "expose_event", G_CALLBACK(expose_event), NULL); +#if GTK_CHECK_VERSION(3,0,0) + g_signal_connect(user_data->dlg.dialog_graph.draw_area, "draw", G_CALLBACK(draw_area_draw), user_data); +#else + g_signal_connect(user_data->dlg.dialog_graph.draw_area, "expose_event", G_CALLBACK(expose_event), user_data); +#endif g_signal_connect(user_data->dlg.dialog_graph.draw_area, "configure_event", G_CALLBACK(configure_event), user_data); gtk_widget_show(user_data->dlg.dialog_graph.draw_area); @@ -1606,7 +1623,11 @@ static void create_filter_box(dialog_graph_graph_t *dgg, GtkWidget *box, int num gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); #if GTK_CHECK_VERSION(3,0,0) - /* Fix me: Add the GTK 3.0 equivalents */ + gtk_widget_override_color(label, GTK_STATE_NORMAL, &dgg->rgba_color); + gtk_widget_override_color(label, GTK_STATE_ACTIVE, &dgg->rgba_color); + gtk_widget_override_color(label, GTK_STATE_PRELIGHT, &dgg->rgba_color); + gtk_widget_override_color(label, GTK_STATE_SELECTED, &dgg->rgba_color); + gtk_widget_override_color(label, GTK_STATE_INSENSITIVE, &dgg->rgba_color); #else gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &dgg->color); gtk_widget_modify_fg(label, GTK_STATE_ACTIVE, &dgg->color); @@ -3645,13 +3666,24 @@ void rtp_analysis( int fd; int i; static GdkColor col[MAX_GRAPHS] = { - {0, 0x0000, 0x0000, 0x0000}, - {0, 0xffff, 0x0000, 0x0000}, - {0, 0x0000, 0xffff, 0x0000}, - {0, 0xdddd, 0xcccc, 0x6666}, - {0, 0x6666, 0xcccc, 0xdddd}, - {0, 0x0000, 0x0000, 0xffff} + {0, 0x0000, 0x0000, 0x0000}, /* Black */ + {0, 0xffff, 0x0000, 0x0000}, /* Red */ + {0, 0x0000, 0xffff, 0x0000}, /* Green */ + {0, 0xdddd, 0xcccc, 0x6666}, /* Light amber yellow */ + {0, 0x6666, 0xcccc, 0xdddd}, /* Light bluish cyan */ + {0, 0x0000, 0x0000, 0xffff} /* Blue */ + }; +#if GTK_CHECK_VERSION(3,0,0) + static GdkRGBA rgba_col[MAX_GRAPHS] = { + {0.0, 0.0, 0.0, 1.0}, /* Black */ + {1.0, 0.0, 0.1, 1.0}, /* Red */ + {0.0, 1.0, 0.0, 1.0}, /* Green */ + {0.867, 0.800, 0.400, 1.0}, /* Light amber yellow */ + {0.400, 0.800, 0.867, 1.0}, /* Light bluish cyan */ + {0.0, 0.0, 1.0, 1.0}, /* Blue */ }; +#endif + char *tempname; /* init */ @@ -3711,6 +3743,12 @@ void rtp_analysis( user_data->dlg.dialog_graph.graph[i].color.red=col[i].red; user_data->dlg.dialog_graph.graph[i].color.green=col[i].green; user_data->dlg.dialog_graph.graph[i].color.blue=col[i].blue; +#if GTK_CHECK_VERSION(3,0,0) + user_data->dlg.dialog_graph.graph[i].rgba_color.red=rgba_col[i].red; + user_data->dlg.dialog_graph.graph[i].rgba_color.green=rgba_col[i].green; + user_data->dlg.dialog_graph.graph[i].rgba_color.blue=rgba_col[i].blue; + user_data->dlg.dialog_graph.graph[i].rgba_color.alpha=rgba_col[i].alpha; +#endif user_data->dlg.dialog_graph.graph[i].display=TRUE; user_data->dlg.dialog_graph.graph[i].display_button=NULL; user_data->dlg.dialog_graph.graph[i].ud=user_data; |