static gboolean gsm_color_button_enter_notify (GtkWidget * widget, GdkEventCrossing * event) { GSMColorButton *color_button = GSM_COLOR_BUTTON (widget); color_button->priv->highlight = 1.0; gtk_widget_queue_draw(widget); return FALSE; }
static gboolean dialog_destroy (GtkWidget * widget, gpointer data) { GSMColorButton *color_button = GSM_COLOR_BUTTON (data); color_button->priv->cs_dialog = NULL; return FALSE; }
static gint gsm_color_button_released (GtkWidget * widget, GdkEventButton * event) { GSMColorButton *color_button = GSM_COLOR_BUTTON (widget); if (color_button->priv->button_down && color_button->priv->in_button) gsm_color_button_clicked (widget, event); color_button->priv->button_down = FALSE; return 0; }
static gint gsm_color_button_pressed (GtkWidget * widget, GdkEventButton * event) { if ( (event->type == GDK_BUTTON_PRESS) && (event->button == 1) ) { GSMColorButton *color_button = GSM_COLOR_BUTTON (widget); color_button->priv->button_down = TRUE; } return 0; }
static gint gsm_color_button_clicked (GtkWidget * widget, GdkEventButton * event) { GSMColorButton *color_button = GSM_COLOR_BUTTON (widget); GtkColorSelectionDialog *color_dialog; /* if dialog already exists, make sure it's shown and raised */ if (!color_button->priv->cs_dialog) { /* Create the dialog and connects its buttons */ GtkWidget *parent; parent = gtk_widget_get_toplevel (GTK_WIDGET (color_button)); color_button->priv->cs_dialog = gtk_color_selection_dialog_new (color_button->priv->title); color_dialog = GTK_COLOR_SELECTION_DIALOG (color_button->priv->cs_dialog); if (gtk_widget_is_toplevel (parent) && GTK_IS_WINDOW (parent)) { if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (color_dialog))) gtk_window_set_transient_for (GTK_WINDOW (color_dialog), GTK_WINDOW (parent)); gtk_window_set_modal (GTK_WINDOW (color_dialog), gtk_window_get_modal (GTK_WINDOW (parent))); } g_signal_connect (color_dialog, "response", G_CALLBACK (dialog_response), color_button); g_signal_connect (color_dialog, "destroy", G_CALLBACK (dialog_destroy), color_button); } color_dialog = GTK_COLOR_SELECTION_DIALOG (color_button->priv->cs_dialog); gtk_color_selection_set_previous_color (GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (color_dialog)), &color_button->priv->color); gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (color_dialog)), &color_button->priv->color); gtk_window_present (GTK_WINDOW (color_button->priv->cs_dialog)); return 0; }
static void gsm_color_button_finalize (GObject * object) { GSMColorButton *color_button = GSM_COLOR_BUTTON (object); if (color_button->priv->cs_dialog != NULL) gtk_widget_destroy (color_button->priv->cs_dialog); color_button->priv->cs_dialog = NULL; g_free (color_button->priv->title); color_button->priv->title = NULL; cairo_surface_destroy (color_button->priv->image_buffer); color_button->priv->image_buffer = NULL; G_OBJECT_CLASS (gsm_color_button_parent_class)->finalize (object); }
static void gsm_color_button_size_allocate (GtkWidget * widget, GtkAllocation * allocation) { GSMColorButton *color_button; g_return_if_fail (widget != NULL || allocation != NULL); g_return_if_fail (GSM_IS_COLOR_BUTTON (widget)); gtk_widget_set_allocation (widget, allocation); color_button = GSM_COLOR_BUTTON (widget); if (gtk_widget_get_realized (widget)) { gdk_window_move_resize (gtk_widget_get_window (widget), allocation->x, allocation->y, allocation->width, allocation->height); } }
static void render (GtkWidget * widget) { GSMColorButton *color_button = GSM_COLOR_BUTTON (widget); GdkColor *color, tmp_color = color_button->priv->color; color = &tmp_color; cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (widget)); cairo_path_t *path = NULL; gint width, height; gdouble radius, arc_start, arc_end; gint highlight_factor; if (color_button->priv->highlight > 0) { highlight_factor = 8192 * color_button->priv->highlight; if (color->red + highlight_factor > 65535) color->red = 65535; else color->red = color->red + highlight_factor; if (color->blue + highlight_factor > 65535) color->blue = 65535; else color->blue = color->blue + highlight_factor; if (color->green + highlight_factor > 65535) color->green = 65535; else color->green = color->green + highlight_factor; } gdk_cairo_set_source_color (cr, color); gdk_drawable_get_size (gtk_widget_get_window (widget), &width, &height); switch (color_button->priv->type) { case GSMCP_TYPE_CPU: //gtk_widget_set_size_request (widget, GSMCP_MIN_WIDTH, GSMCP_MIN_HEIGHT); cairo_paint (cr); cairo_set_line_width (cr, 1); cairo_set_source_rgba (cr, 0, 0, 0, 0.5); cairo_rectangle (cr, 0.5, 0.5, width - 1, height - 1); cairo_stroke (cr); cairo_set_line_width (cr, 1); cairo_set_source_rgba (cr, 1, 1, 1, 0.4); cairo_rectangle (cr, 1.5, 1.5, width - 3, height - 3); cairo_stroke (cr); break; case GSMCP_TYPE_PIE: if (width < 32) // 32px minimum size gtk_widget_set_size_request (widget, 32, 32); if (width < height) radius = width / 2; else radius = height / 2; arc_start = -G_PI_2 + 2 * G_PI * color_button->priv->fraction; arc_end = -G_PI_2; cairo_set_line_width (cr, 1); // Draw external stroke and fill if (color_button->priv->fraction < 0.01) { cairo_arc (cr, (width / 2) + .5, (height / 2) + .5, 4.5, 0, 2 * G_PI); } else if (color_button->priv->fraction > 0.99) { cairo_arc (cr, (width / 2) + .5, (height / 2) + .5, radius - 2.25, 0, 2 * G_PI); } else { cairo_arc_negative (cr, (width / 2) + .5, (height / 2) + .5, radius - 2.25, arc_start, arc_end); cairo_arc_negative (cr, (width / 2) + .5, (height / 2) + .5, 4.5, arc_end, arc_start); cairo_arc_negative (cr, (width / 2) + .5, (height / 2) + .5, radius - 2.25, arc_start, arc_start); } cairo_fill_preserve (cr); cairo_set_source_rgba (cr, 0, 0, 0, 0.7); cairo_stroke (cr); // Draw internal highlight cairo_set_source_rgba (cr, 1, 1, 1, 0.45); cairo_set_line_width (cr, 1); if (color_button->priv->fraction < 0.03) { cairo_arc (cr, (width / 2) + .5, (height / 2) + .5, 3.25, 0, 2 * G_PI); } else if (color_button->priv->fraction > 0.99) { cairo_arc (cr, (width / 2) + .5, (height / 2) + .5, radius - 3.5, 0, 2 * G_PI); } else { cairo_arc_negative (cr, (width / 2) + .5, (height / 2) + .5, radius - 3.5, arc_start + (1 / (radius - 3.75)), arc_end - (1 / (radius - 3.75))); cairo_arc_negative (cr, (width / 2) + .5, (height / 2) + .5, 3.25, arc_end - (1 / (radius - 3.75)), arc_start + (1 / (radius - 3.75))); cairo_arc_negative (cr, (width / 2) + .5, (height / 2) + .5, radius - 3.5, arc_start + (1 / (radius - 3.75)), arc_start + (1 / (radius - 3.75))); } cairo_stroke (cr); // Draw external shape cairo_set_line_width (cr, 1); cairo_set_source_rgba (cr, 0, 0, 0, 0.2); cairo_arc (cr, (width / 2) + .5, (height / 2) + .5, radius - 1.25, 0, G_PI * 2); cairo_stroke (cr); break; case GSMCP_TYPE_NETWORK_IN: if (color_button->priv->image_buffer == NULL) color_button->priv->image_buffer = fill_image_buffer_from_file (cr, DATADIR "/pixmaps/gnome-system-monitor/download.svg"); gtk_widget_set_size_request (widget, 32, 32); cairo_move_to (cr, 8.5, 1.5); cairo_line_to (cr, 23.5, 1.5); cairo_line_to (cr, 23.5, 11.5); cairo_line_to (cr, 29.5, 11.5); cairo_line_to (cr, 16.5, 27.5); cairo_line_to (cr, 15.5, 27.5); cairo_line_to (cr, 2.5, 11.5); cairo_line_to (cr, 8.5, 11.5); cairo_line_to (cr, 8.5, 1.5); cairo_close_path (cr); path = cairo_copy_path (cr); cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); cairo_set_line_width (cr, 1); cairo_fill_preserve (cr); cairo_set_miter_limit (cr, 5.0); cairo_stroke (cr); cairo_set_source_rgba (cr, 0, 0, 0, 0.5); cairo_append_path (cr, path); cairo_path_destroy(path); cairo_stroke (cr); cairo_set_source_surface (cr, color_button->priv->image_buffer, 0.0, 0.0); cairo_paint (cr); break; case GSMCP_TYPE_NETWORK_OUT: if (color_button->priv->image_buffer == NULL) color_button->priv->image_buffer = fill_image_buffer_from_file (cr, DATADIR "/pixmaps/gnome-system-monitor/upload.svg"); gtk_widget_set_size_request (widget, 32, 32); cairo_move_to (cr, 16.5, 1.5); cairo_line_to (cr, 29.5, 17.5); cairo_line_to (cr, 23.5, 17.5); cairo_line_to (cr, 23.5, 27.5); cairo_line_to (cr, 8.5, 27.5); cairo_line_to (cr, 8.5, 17.5); cairo_line_to (cr, 2.5, 17.5); cairo_line_to (cr, 15.5, 1.5); cairo_line_to (cr, 16.5, 1.5); cairo_close_path (cr); path = cairo_copy_path (cr); cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER); cairo_set_line_width (cr, 1); cairo_fill_preserve (cr); cairo_set_miter_limit (cr, 5.0); cairo_stroke (cr); cairo_set_source_rgba (cr, 0, 0, 0, 0.5); cairo_append_path (cr, path); cairo_path_destroy(path); cairo_stroke (cr); cairo_set_source_surface (cr, color_button->priv->image_buffer, 0.0, 0.0); cairo_paint (cr); break; } cairo_destroy (cr); }
static GtkWidget * create_sys_view (ProcData *procdata) { GtkWidget *vbox, *hbox; GtkWidget *cpu_box, *mem_box, *net_box; GtkWidget *cpu_graph_box, *mem_graph_box, *net_graph_box; GtkWidget *label,*cpu_label, *spacer; GtkWidget *table; GtkWidget *color_picker; GtkWidget *mem_legend_box, *net_legend_box; LoadGraph *cpu_graph, *mem_graph, *net_graph; gint i; gchar *title_text; gchar *label_text; gchar *title_template; // Translators: color picker title, %s is CPU, Memory, Swap, Receiving, Sending title_template = g_strdup(_("Pick a Color for '%s'")); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 18); gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); /* The CPU BOX */ cpu_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (vbox), cpu_box, TRUE, TRUE, 0); label = make_title_label (_("CPU History")); gtk_box_pack_start (GTK_BOX (cpu_box), label, FALSE, FALSE, 0); cpu_graph_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (cpu_box), cpu_graph_box, TRUE, TRUE, 0); cpu_graph = new LoadGraph(LOAD_GRAPH_CPU); gtk_box_pack_start (GTK_BOX (cpu_graph_box), load_graph_get_widget(cpu_graph), TRUE, TRUE, 0); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); spacer = gtk_label_new (""); gtk_widget_set_size_request(GTK_WIDGET(spacer), 57, -1); gtk_box_pack_start (GTK_BOX (hbox), spacer, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (cpu_graph_box), hbox, FALSE, FALSE, 0); GtkWidget* cpu_table = gtk_table_new(std::min(procdata->config.num_cpus / 4, 1), std::min(procdata->config.num_cpus, 4), TRUE); gtk_table_set_row_spacings(GTK_TABLE(cpu_table), 6); gtk_table_set_col_spacings(GTK_TABLE(cpu_table), 6); gtk_box_pack_start(GTK_BOX(hbox), cpu_table, TRUE, TRUE, 0); for (i=0;i<procdata->config.num_cpus; i++) { GtkWidget *temp_hbox; temp_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_table_attach(GTK_TABLE(cpu_table), temp_hbox, i % 4, i % 4 + 1, i / 4, i / 4 + 1, static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 0, 0); color_picker = gsm_color_button_new (&cpu_graph->colors.at(i), GSMCP_TYPE_CPU); g_signal_connect (G_OBJECT (color_picker), "color_set", G_CALLBACK (cb_cpu_color_changed), GINT_TO_POINTER (i)); gtk_box_pack_start (GTK_BOX (temp_hbox), color_picker, FALSE, TRUE, 0); gtk_widget_set_size_request(GTK_WIDGET(color_picker), 32, -1); if(procdata->config.num_cpus == 1) { label_text = g_strdup (_("CPU")); } else { label_text = g_strdup_printf (_("CPU%d"), i+1); } title_text = g_strdup_printf(title_template, label_text); label = gtk_label_new (label_text); gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text); g_free(title_text); gtk_box_pack_start (GTK_BOX (temp_hbox), label, FALSE, FALSE, 6); g_free (label_text); cpu_label = gtk_label_new (NULL); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (cpu_label), 0.0); #else gtk_misc_set_alignment (GTK_MISC (cpu_label), 0.0, 0.5); #endif gtk_box_pack_start (GTK_BOX (temp_hbox), cpu_label, TRUE, TRUE, 0); load_graph_get_labels(cpu_graph)->cpu[i] = cpu_label; } procdata->cpu_graph = cpu_graph; mem_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (vbox), mem_box, TRUE, TRUE, 0); label = make_title_label (_("Memory and Swap History")); gtk_box_pack_start (GTK_BOX (mem_box), label, FALSE, FALSE, 0); mem_graph_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (mem_box), mem_graph_box, TRUE, TRUE, 0); mem_graph = new LoadGraph(LOAD_GRAPH_MEM); gtk_box_pack_start (GTK_BOX (mem_graph_box), load_graph_get_widget(mem_graph), TRUE, TRUE, 0); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); spacer = gtk_label_new (""); gtk_widget_set_size_request(GTK_WIDGET(spacer), 54, -1); gtk_box_pack_start (GTK_BOX (hbox), spacer, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (mem_graph_box), hbox, FALSE, FALSE, 0); mem_legend_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_pack_start (GTK_BOX (hbox), mem_legend_box, TRUE, TRUE, 0); table = gtk_table_new (2, 7, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_box_pack_start (GTK_BOX (mem_legend_box), table, TRUE, TRUE, 0); label_text = g_strdup(_("Memory")); color_picker = load_graph_get_mem_color_picker(mem_graph); g_signal_connect (G_OBJECT (color_picker), "color_set", G_CALLBACK (cb_mem_color_changed), procdata); title_text = g_strdup_printf(title_template, label_text); gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text); g_free(title_text); gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (label_text); g_free(label_text); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (label), 0.0); #else gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); #endif gtk_table_attach (GTK_TABLE (table), label, 1, 7, 0, 1, GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach (GTK_TABLE (table), load_graph_get_labels(mem_graph)->memory, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); table = gtk_table_new (2, 7, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_box_pack_start (GTK_BOX (mem_legend_box), table, TRUE, TRUE, 0); label_text = g_strdup(_("Swap")); color_picker = load_graph_get_swap_color_picker(mem_graph); g_signal_connect (G_OBJECT (color_picker), "color_set", G_CALLBACK (cb_swap_color_changed), procdata); title_text = g_strdup_printf(title_template, label_text); gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text); g_free(title_text); gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (label_text); g_free(label_text); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (label), 0.0); #else gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); #endif gtk_table_attach (GTK_TABLE (table), label, 1, 7, 0, 1, GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach (GTK_TABLE (table), load_graph_get_labels(mem_graph)->swap, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); procdata->mem_graph = mem_graph; /* The net box */ net_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (vbox), net_box, TRUE, TRUE, 0); label = make_title_label (_("Network History")); gtk_box_pack_start (GTK_BOX (net_box), label, FALSE, FALSE, 0); net_graph_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_box_pack_start (GTK_BOX (net_box), net_graph_box, TRUE, TRUE, 0); net_graph = new LoadGraph(LOAD_GRAPH_NET); gtk_box_pack_start (GTK_BOX (net_graph_box), load_graph_get_widget(net_graph), TRUE, TRUE, 0); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); spacer = gtk_label_new (""); gtk_widget_set_size_request(GTK_WIDGET(spacer), 54, -1); gtk_box_pack_start (GTK_BOX (hbox), spacer, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (net_graph_box), hbox, FALSE, FALSE, 0); net_legend_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10); gtk_box_pack_start (GTK_BOX (hbox), net_legend_box, TRUE, TRUE, 0); table = gtk_table_new (2, 4, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_box_pack_start (GTK_BOX (net_legend_box), table, TRUE, TRUE, 0); label_text = g_strdup(_("Receiving")); color_picker = gsm_color_button_new ( &net_graph->colors.at(0), GSMCP_TYPE_NETWORK_IN); g_signal_connect (G_OBJECT (color_picker), "color_set", G_CALLBACK (cb_net_in_color_changed), procdata); title_text = g_strdup_printf(title_template, label_text); gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text); g_free(title_text); gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (label_text); g_free(label_text); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (label), 0.0); #else gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); #endif gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (load_graph_get_labels(net_graph)->net_in), 1.0); #else gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_in), 1.0, 0.5); #endif gtk_widget_set_size_request(GTK_WIDGET(load_graph_get_labels(net_graph)->net_in), 100, -1); gtk_table_attach (GTK_TABLE (table), load_graph_get_labels(net_graph)->net_in, 2, 3, 0, 1, static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), GTK_FILL, 0, 0); label = gtk_label_new (_("Total Received")); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (label), 0.0); #else gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); #endif gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (load_graph_get_labels(net_graph)->net_in_total), 1.0); #else gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_in_total), 1.0, 0.5); #endif gtk_table_attach (GTK_TABLE (table), load_graph_get_labels(net_graph)->net_in_total, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, 0); spacer = gtk_label_new (""); gtk_widget_set_size_request(GTK_WIDGET(spacer), 38, -1); gtk_table_attach (GTK_TABLE (table), spacer, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0); table = gtk_table_new (2, 3, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_box_pack_start (GTK_BOX (net_legend_box), table, TRUE, TRUE, 0); label_text = g_strdup(_("Sending")); color_picker = gsm_color_button_new ( &net_graph->colors.at(1), GSMCP_TYPE_NETWORK_OUT); g_signal_connect (G_OBJECT (color_picker), "color_set", G_CALLBACK (cb_net_out_color_changed), procdata); title_text = g_strdup_printf(title_template, label_text); gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text); g_free(title_text); gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (label_text); g_free(label_text); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (label), 0.0); #else gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); #endif gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (load_graph_get_labels(net_graph)->net_out), 1.0); #else gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_out), 1.0, 0.5); #endif gtk_widget_set_size_request(GTK_WIDGET(load_graph_get_labels(net_graph)->net_out), 100, -1); gtk_table_attach (GTK_TABLE (table), load_graph_get_labels(net_graph)->net_out, 2, 3, 0, 1, static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), GTK_FILL, 0, 0); label = gtk_label_new (_("Total Sent")); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (label), 0.0); #else gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); #endif gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); #if GTK_CHECK_VERSION (3, 16, 0) gtk_label_set_xalign (GTK_LABEL (load_graph_get_labels(net_graph)->net_out_total), 1.0); #else gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_out_total), 1.0, 0.5); #endif gtk_table_attach (GTK_TABLE (table), load_graph_get_labels(net_graph)->net_out_total, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, 0); spacer = gtk_label_new (""); gtk_widget_set_size_request(GTK_WIDGET(spacer), 38, -1); gtk_table_attach (GTK_TABLE (table), spacer, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0); procdata->net_graph = net_graph; g_free(title_template); return vbox; }
static void create_sys_view (GsmApplication *app, GtkBuilder * builder) { GtkBox *cpu_graph_box, *mem_graph_box, *net_graph_box; GtkLabel *label,*cpu_label; GtkGrid *table; GsmColorButton *color_picker; LoadGraph *cpu_graph, *mem_graph, *net_graph; gint i; gchar *title_text; gchar *label_text; gchar *title_template; // Translators: color picker title, %s is CPU, Memory, Swap, Receiving, Sending title_template = g_strdup(_("Pick a Color for “%s”")); /* The CPU BOX */ cpu_graph_box = GTK_BOX (gtk_builder_get_object (builder, "cpu_graph_box")); cpu_graph = new LoadGraph(LOAD_GRAPH_CPU); gtk_box_pack_start (cpu_graph_box, GTK_WIDGET (load_graph_get_widget(cpu_graph)), TRUE, TRUE, 0); GtkGrid* cpu_table = GTK_GRID (gtk_builder_get_object (builder, "cpu_table")); gint cols = 4; for (i=0;i<app->config.num_cpus; i++) { GtkBox *temp_hbox; temp_hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)); gtk_widget_show (GTK_WIDGET (temp_hbox)); if (i < cols) { gtk_grid_insert_column(cpu_table, i%cols); } if ((i+1)%cols ==cols) { gtk_grid_insert_row(cpu_table, (i+1)/cols); } gtk_grid_attach(cpu_table, GTK_WIDGET (temp_hbox), i%cols, i/cols, 1, 1); color_picker = gsm_color_button_new (&cpu_graph->colors.at(i), GSMCP_TYPE_CPU); g_signal_connect (G_OBJECT (color_picker), "color-set", G_CALLBACK (cb_cpu_color_changed), GINT_TO_POINTER (i)); gtk_box_pack_start (temp_hbox, GTK_WIDGET (color_picker), FALSE, TRUE, 0); gtk_widget_set_size_request(GTK_WIDGET(color_picker), 32, -1); if(app->config.num_cpus == 1) { label_text = g_strdup (_("CPU")); } else { label_text = g_strdup_printf (_("CPU%d"), i+1); } title_text = g_strdup_printf(title_template, label_text); label = GTK_LABEL (gtk_label_new (label_text)); gsm_color_button_set_title(color_picker, title_text); g_free(title_text); gtk_box_pack_start (temp_hbox, GTK_WIDGET (label), FALSE, FALSE, 6); gtk_widget_show (GTK_WIDGET (label)); g_free (label_text); cpu_label = GTK_LABEL (gtk_label_new (NULL)); gtk_widget_set_valign (GTK_WIDGET (cpu_label), GTK_ALIGN_CENTER); gtk_widget_set_halign (GTK_WIDGET (cpu_label), GTK_ALIGN_START); gtk_box_pack_start (temp_hbox, GTK_WIDGET (cpu_label), FALSE, FALSE, 0); gtk_widget_show (GTK_WIDGET (cpu_label)); load_graph_get_labels(cpu_graph)->cpu[i] = cpu_label; } app->cpu_graph = cpu_graph; /** The memory box */ mem_graph_box = GTK_BOX (gtk_builder_get_object (builder, "mem_graph_box")); mem_graph = new LoadGraph(LOAD_GRAPH_MEM); gtk_box_pack_start (mem_graph_box, GTK_WIDGET (load_graph_get_widget(mem_graph)), TRUE, TRUE, 0); table = GTK_GRID (gtk_builder_get_object (builder, "mem_table")); color_picker = load_graph_get_mem_color_picker(mem_graph); g_signal_connect (G_OBJECT (color_picker), "color-set", G_CALLBACK (cb_mem_color_changed), app); title_text = g_strdup_printf(title_template, _("Memory")); gsm_color_button_set_title(color_picker, title_text); g_free(title_text); label = GTK_LABEL (gtk_builder_get_object(builder, "memory_label")); gtk_grid_attach_next_to (table, GTK_WIDGET (color_picker), GTK_WIDGET (label), GTK_POS_LEFT, 1, 2); gtk_grid_attach_next_to (table, GTK_WIDGET (load_graph_get_labels(mem_graph)->memory), GTK_WIDGET (label), GTK_POS_BOTTOM, 1, 1); color_picker = load_graph_get_swap_color_picker(mem_graph); g_signal_connect (G_OBJECT (color_picker), "color-set", G_CALLBACK (cb_swap_color_changed), app); title_text = g_strdup_printf(title_template, _("Swap")); gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text); g_free(title_text); label = GTK_LABEL (gtk_builder_get_object(builder, "swap_label")); gtk_grid_attach_next_to (table, GTK_WIDGET (color_picker), GTK_WIDGET (label), GTK_POS_LEFT, 1, 2); gtk_grid_attach_next_to (table, GTK_WIDGET (load_graph_get_labels(mem_graph)->swap), GTK_WIDGET (label), GTK_POS_BOTTOM, 1, 1); app->mem_graph = mem_graph; /* The net box */ net_graph_box = GTK_BOX (gtk_builder_get_object (builder, "net_graph_box")); net_graph = new LoadGraph(LOAD_GRAPH_NET); gtk_box_pack_start (net_graph_box, GTK_WIDGET (load_graph_get_widget(net_graph)), TRUE, TRUE, 0); table = GTK_GRID (gtk_builder_get_object (builder, "net_table")); color_picker = gsm_color_button_new ( &net_graph->colors.at(0), GSMCP_TYPE_NETWORK_IN); g_signal_connect (G_OBJECT (color_picker), "color-set", G_CALLBACK (cb_net_in_color_changed), app); title_text = g_strdup_printf(title_template, _("Receiving")); gsm_color_button_set_title(color_picker, title_text); g_free(title_text); label = GTK_LABEL (gtk_builder_get_object(builder, "receiving_label")); gtk_grid_attach_next_to (table, GTK_WIDGET (color_picker), GTK_WIDGET (label), GTK_POS_LEFT, 1, 2); gtk_grid_attach_next_to (table, GTK_WIDGET (load_graph_get_labels(net_graph)->net_in), GTK_WIDGET (label), GTK_POS_RIGHT, 1, 1); label = GTK_LABEL (gtk_builder_get_object(builder, "total_received_label")); gtk_grid_attach_next_to (table, GTK_WIDGET (load_graph_get_labels(net_graph)->net_in_total), GTK_WIDGET (label), GTK_POS_RIGHT, 1, 1); color_picker = gsm_color_button_new ( &net_graph->colors.at(1), GSMCP_TYPE_NETWORK_OUT); g_signal_connect (G_OBJECT (color_picker), "color-set", G_CALLBACK (cb_net_out_color_changed), app); title_text = g_strdup_printf(title_template, _("Sending")); gsm_color_button_set_title(color_picker, title_text); g_free(title_text); label = GTK_LABEL (gtk_builder_get_object(builder, "sending_label")); gtk_grid_attach_next_to (table, GTK_WIDGET (color_picker), GTK_WIDGET (label), GTK_POS_LEFT, 1, 2); gtk_grid_attach_next_to (table, GTK_WIDGET (load_graph_get_labels(net_graph)->net_out), GTK_WIDGET (label), GTK_POS_RIGHT, 1, 1); label = GTK_LABEL (gtk_builder_get_object(builder, "total_sent_label")); gtk_grid_attach_next_to (table, GTK_WIDGET (load_graph_get_labels(net_graph)->net_out_total), GTK_WIDGET (label), GTK_POS_RIGHT, 1, 1); app->net_graph = net_graph; g_free (title_template); }