aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/rtp_analysis.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2011-08-23 13:49:37 +0000
committerAnders Broman <anders.broman@ericsson.com>2011-08-23 13:49:37 +0000
commit637490272dec3446d5ea2a2c67e14732edef02ab (patch)
treecd33c20df2c7515dd7ceb78767dd752d57fffddb /gtk/rtp_analysis.c
parent8f2076f5efecf02cc74df118c6c85cde41c3e32b (diff)
Make colors work on GTK3
svn path=/trunk/; revision=38687
Diffstat (limited to 'gtk/rtp_analysis.c')
-rw-r--r--gtk/rtp_analysis.c68
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;