[Xfce4-commits] <xfce4-cpufreq-plugin:master> Improve overview window size and layout a bit.

Harald Judt noreply at xfce.org
Sun Aug 18 11:32:17 CEST 2013


Updating branch refs/heads/master
         to 5327de3b636b306439c5ab9943a94f718dba108f (commit)
       from f3bfa666503563ea9d0e2fb6ce2e8f1d558d738e (commit)

commit 5327de3b636b306439c5ab9943a94f718dba108f
Author: Harald Judt <h.judt at gmx.at>
Date:   Sun Aug 11 14:59:40 2013 +0200

    Improve overview window size and layout a bit.
    
    With many CPUs, the window will not even fit on a HD screen. Try to handle this
    a bit better; this solution is not optimal and will only be good enough for
    nowaday's multi-core machines.

 panel-plugin/xfce4-cpufreq-overview.c |   66 ++++++++++++++++++++++-----------
 1 file changed, 44 insertions(+), 22 deletions(-)

diff --git a/panel-plugin/xfce4-cpufreq-overview.c b/panel-plugin/xfce4-cpufreq-overview.c
index c9d5a74..9127fd6 100644
--- a/panel-plugin/xfce4-cpufreq-overview.c
+++ b/panel-plugin/xfce4-cpufreq-overview.c
@@ -47,17 +47,20 @@ cpufreq_overview_add (CpuInfo *cpu, guint cpu_number, GtkWidget *dialog_hbox)
 	dialog_vbox = gtk_vbox_new (FALSE, BORDER);
 	gtk_box_pack_start (GTK_BOX (dialog_hbox), dialog_vbox, TRUE, TRUE, 0);
 
+	hbox = gtk_hbox_new (FALSE, BORDER);
+	gtk_box_pack_start (GTK_BOX (dialog_vbox), hbox, TRUE, TRUE, 0);
+
+	icon = gtk_image_new_from_icon_name ("xfce4-cpufreq-plugin", GTK_ICON_SIZE_BUTTON);
+	gtk_misc_set_alignment (GTK_MISC (icon), 1, 0.5);
+	gtk_misc_set_padding (GTK_MISC (icon), 5, 10);
+	gtk_box_pack_start (GTK_BOX (hbox), icon, TRUE, TRUE, 0);
 	text = g_strdup_printf ("<b>CPU %d</b>", cpu_number);
 	label = gtk_label_new (text);
-	gtk_box_pack_start (GTK_BOX (dialog_vbox), label, FALSE, FALSE, 0);
+	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+	gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
 	gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
 	g_free (text);
 
-	icon = gtk_image_new_from_icon_name ("xfce4-cpufreq-plugin", GTK_ICON_SIZE_BUTTON);
-	gtk_box_pack_start (GTK_BOX (dialog_vbox), icon, FALSE, FALSE, 0);
-	gtk_misc_set_alignment (GTK_MISC (icon), 0.5, 0);
-	gtk_misc_set_padding (GTK_MISC (icon), 10, 10);
-
 	/* display driver */
 	hbox = gtk_hbox_new (FALSE, BORDER);
 	gtk_box_pack_start (GTK_BOX (dialog_vbox), hbox, FALSE, FALSE, 0);
@@ -181,7 +184,7 @@ cpufreq_overview_response (GtkWidget *dialog, gint response, gpointer data)
 gboolean
 cpufreq_overview (GtkWidget *widget, GdkEventButton *ev, CpuFreqPlugin *cpuFreq)
 {
-	gint 	  i;
+	gint 	  i, j, step;
 	GtkWidget *dialog, *dialog_vbox, *window;
 	GtkWidget *dialog_hbox, *separator;
 
@@ -217,23 +220,42 @@ cpufreq_overview (GtkWidget *widget, GdkEventButton *ev, CpuFreqPlugin *cpuFreq)
 
 	dialog_vbox = GTK_DIALOG (dialog)->vbox;
 
-	dialog_hbox = gtk_hbox_new (FALSE, BORDER);
-	gtk_box_pack_start (GTK_BOX (dialog_vbox), dialog_hbox, FALSE, FALSE, 0);
-	gtk_container_set_border_width (GTK_CONTAINER (dialog_hbox), BORDER);
-
-	for (i = 0; i < cpuFreq->cpus->len;)
-	{
-		CpuInfo *cpu = g_ptr_array_index (cpuFreq->cpus, i);
-		cpufreq_overview_add (cpu, i, dialog_hbox);
-
-		if (++i != cpuFreq->cpus->len)
-		{
-			separator = gtk_vseparator_new ();
-			gtk_box_pack_start (GTK_BOX (dialog_hbox), separator, FALSE, FALSE, 0);
+	/* choose how many columns and rows depending on cpu count */
+	if (cpuFreq->cpus->len < 4)
+		step = 1;
+	else if (cpuFreq->cpus->len < 9)
+		step = 2;
+	else if (cpuFreq->cpus->len % 3)
+		step = 4;
+	else
+		step = 3;
+
+	for (i = 0; i < cpuFreq->cpus->len; i += step) {
+		dialog_hbox = gtk_hbox_new (FALSE, BORDER * 2);
+		gtk_box_pack_start (GTK_BOX (dialog_vbox), dialog_hbox,
+							FALSE, FALSE, BORDER * 2);
+		gtk_container_set_border_width (GTK_CONTAINER (dialog_hbox),
+										BORDER * 2);
+
+		for (j = i; j < cpuFreq->cpus->len && j < i + step; j++) {
+			CpuInfo *cpu = g_ptr_array_index (cpuFreq->cpus, j);
+			cpufreq_overview_add (cpu, j, dialog_hbox);
+
+			if (j + 1 < cpuFreq->cpus->len && j + 1 == i + step) {
+				separator = gtk_hseparator_new ();
+				gtk_box_pack_start (GTK_BOX (dialog_vbox), separator,
+									FALSE, FALSE, 0);
+			}
+
+			if (j + 1 < cpuFreq->cpus->len && j + 1 < i + step) {
+				separator = gtk_vseparator_new ();
+				gtk_box_pack_start (GTK_BOX (dialog_hbox), separator,
+									FALSE, FALSE, 0);
+			}
 		}
 	}
-
-	g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (cpufreq_overview_response), NULL);
+	g_signal_connect (G_OBJECT (dialog), "response",
+					  G_CALLBACK (cpufreq_overview_response), NULL);
 
 	gtk_widget_show_all (dialog);
 


More information about the Xfce4-commits mailing list