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; GtkSizeGroup *sizegroup; LoadGraph *cpu_graph, *mem_graph, *net_graph; gint i; vbox = gtk_vbox_new (FALSE, 18); gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); /* The CPU BOX */ cpu_box = gtk_vbox_new (FALSE, 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_vbox_new (FALSE, 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); sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); hbox = gtk_hbox_new(FALSE, 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); /*cpu_legend_box = gtk_hbox_new(TRUE, 10); gtk_box_pack_start (GTK_BOX (hbox), cpu_legend_box, TRUE, TRUE, 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; gchar *text; temp_hbox = gtk_hbox_new (FALSE, 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); //gtk_size_group_add_widget (sizegroup, temp_hbox); /*g_signal_connect (G_OBJECT (temp_hbox), "size_request", G_CALLBACK(size_request), &cpu_size); */ 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) { text = g_strdup (_("CPU")); } else { text = g_strdup_printf (_("CPU%d"), i+1); } label = gtk_label_new (text); gtk_box_pack_start (GTK_BOX (temp_hbox), label, FALSE, FALSE, 6); g_free (text); cpu_label = gtk_label_new (NULL); gtk_misc_set_alignment (GTK_MISC (cpu_label), 0.0, 0.5); 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_vbox_new (FALSE, 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_vbox_new (FALSE, 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_hbox_new(FALSE, 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_hbox_new(TRUE, 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); 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); gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (_("Memory")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); 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); 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); gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (_("Swap")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); 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_vbox_new (FALSE, 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_vbox_new (FALSE, 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_hbox_new(FALSE, 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_hbox_new(TRUE, 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); 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); gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (_("Receiving")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_in), 1.0, 0.5); /* hbox = gtk_hbox_new (FALSE, 0); g_signal_connect (G_OBJECT (hbox), "size_request", G_CALLBACK(size_request), &net_size); gtk_box_pack_start (GTK_BOX (hbox), load_graph_get_labels(net_graph)->net_in, TRUE, TRUE, 0); */ gtk_widget_set_size_request(GTK_WIDGET(load_graph_get_labels(net_graph)->net_in), 65, -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")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_in_total), 1.0, 0.5); 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); 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); gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 2, GTK_SHRINK, GTK_SHRINK, 0, 0); label = gtk_label_new (_("Sending")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_out), 1.0, 0.5); /* hbox = gtk_hbox_new (FALSE, 0); g_signal_connect (G_OBJECT (load_graph_get_labels(net_graph)->net_out), "size_request", G_CALLBACK(size_request), &net_size); gtk_box_pack_start (GTK_BOX (hbox), load_graph_get_labels(net_graph)->net_out, TRUE, TRUE, 0); */ gtk_widget_set_size_request(GTK_WIDGET(load_graph_get_labels(net_graph)->net_out), 65, -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")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0); gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_out_total), 1.0, 0.5); 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; 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); }