[Goodies-commits] r3613 - in xfce4-cpugraph-plugin/trunk: . panel-plugin po
ludovic mercier
lidiriel at xfce.org
Thu Nov 22 08:17:51 CET 2007
Author: lidiriel
Date: 2007-11-22 07:17:50 +0000 (Thu, 22 Nov 2007)
New Revision: 3613
Added:
xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.c
xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.h
xfce4-cpugraph-plugin/trunk/panel-plugin/option.c
xfce4-cpugraph-plugin/trunk/panel-plugin/option.h
xfce4-cpugraph-plugin/trunk/panel-plugin/settings.c
xfce4-cpugraph-plugin/trunk/panel-plugin/settings.h
Removed:
xfce4-cpugraph-plugin/trunk/panel-plugin/os.c
xfce4-cpugraph-plugin/trunk/panel-plugin/os.h
Modified:
xfce4-cpugraph-plugin/trunk/AUTHORS
xfce4-cpugraph-plugin/trunk/ChangeLog
xfce4-cpugraph-plugin/trunk/NEWS
xfce4-cpugraph-plugin/trunk/TODO
xfce4-cpugraph-plugin/trunk/configure.ac
xfce4-cpugraph-plugin/trunk/panel-plugin/Makefile.am
xfce4-cpugraph-plugin/trunk/panel-plugin/cpu.c
xfce4-cpugraph-plugin/trunk/panel-plugin/cpu.h
xfce4-cpugraph-plugin/trunk/panel-plugin/mode.c
xfce4-cpugraph-plugin/trunk/panel-plugin/mode.h
xfce4-cpugraph-plugin/trunk/po/POTFILES.in
Log:
Prepare new release.
cleanup and refactoring code
add and remove some functionnality see changelog and todo.
The big one is the plugin display each cpucore activity
Modified: xfce4-cpugraph-plugin/trunk/AUTHORS
===================================================================
--- xfce4-cpugraph-plugin/trunk/AUTHORS 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/AUTHORS 2007-11-22 07:17:50 UTC (rev 3613)
@@ -1,2 +1,4 @@
Alexander Nordfelth <alex.nordfelth at telia.com>
-gatopeich <gatoguan-os at yahoo.com>
\ No newline at end of file
+gatopeich <gatoguan-os at yahoo.com>
+lidiriel <lidiriel at coriolys.org>
+Angelo Miguel Arrifano <miknix at gmail.com>
Modified: xfce4-cpugraph-plugin/trunk/ChangeLog
===================================================================
--- xfce4-cpugraph-plugin/trunk/ChangeLog 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/ChangeLog 2007-11-22 07:17:50 UTC (rev 3613)
@@ -1,12 +1,20 @@
+2007-11-22 ludovic mercier <lidiriel at coriolys.org>
+
+ * panel-plugin: Split code in several files, cleanup and
+ refactoring code. Remove timescaling, remove *BSD code, remove
+ fire color and frequency modes.
+ Add bar graph for each cpu core.
+ Add grid view mode
+ Add associate command (default is xterm top)
+
2007-05-07 22:30 phase
- * panel-plugin/cpu.c, cpu.h, os.c, os.h:
- Added 'cpufreq' color mode, which ranges from color #1 to
- color #2 proportionally to CPU scaling frequency.
- Added 'Non-linear time scale." as an on/off option.
- Added scaling detection so new color mode can work, and
- tweaked Linux CPU usage code a little bit to account for new
- stats in kernel v2.6, also optimize resources.
+ * panel-plugin/cpu.c, cpu.h, os.c, os.h: Added 'cpufreq' color
+ mode, which ranges from color #1 to color #2 proportionally to CPU
+ scaling frequency. Added 'Non-linear time scale." as an on/off
+ option. Added scaling detection so new color mode can work, and
+ tweaked Linux CPU usage code a little bit to account for new stats
+ in kernel v2.6, also optimize resources.
2004-06-12 03:00 phase
Modified: xfce4-cpugraph-plugin/trunk/NEWS
===================================================================
--- xfce4-cpugraph-plugin/trunk/NEWS 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/NEWS 2007-11-22 07:17:50 UTC (rev 3613)
@@ -3,3 +3,14 @@
- Ported to Xfce 4.4 panel API
- Use xfce4-dev-tools
- Use real frame widget
+
+0.4.0
+=====
+- Cleanup/Refactoring all code
+- Split in several file
+- Add one cpu bar graph activity for each cpu core
+- Remove fire and frequency color mode (go back in futur)
+- Remove time scalling view mode (go back in futur)
+- Remove *BSD code (go back in next released)
+- Add a new view mode : the grid
+- Add an associate customizable command
Modified: xfce4-cpugraph-plugin/trunk/TODO
===================================================================
--- xfce4-cpugraph-plugin/trunk/TODO 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/TODO 2007-11-22 07:17:50 UTC (rev 3613)
@@ -1 +1,6 @@
-* Even more modes :)
+* Even more modes
+* Add *BSD code in cpu_os (see 0.3.0)
+* Add Frequency color mode ? (see 0.3.0)
+* Add Fire color mode (see 0.3.0)
+* Add Time scalling
+* Continue to cleanup/refactoring code
Modified: xfce4-cpugraph-plugin/trunk/configure.ac
===================================================================
--- xfce4-cpugraph-plugin/trunk/configure.ac 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/configure.ac 2007-11-22 07:17:50 UTC (rev 3613)
@@ -5,7 +5,7 @@
dnl 2004 Alexander Nordfelth <alex.nordfelth at telia.com>
dnl
-m4_define([cpugraph_version],[0.3.0])
+m4_define([cpugraph_version],[0.4.0])
AC_INIT([xfce4-cpugraph-plugin], [cpugraph_version],
[xfce-goodies-dev at lists.berlios.de])
Modified: xfce4-cpugraph-plugin/trunk/panel-plugin/Makefile.am
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/Makefile.am 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/Makefile.am 2007-11-22 07:17:50 UTC (rev 3613)
@@ -9,12 +9,16 @@
@LIBXFCE4PANEL_LIBS@
xfce4_cpugraph_plugin_SOURCES = \
- mode.c \
- mode.h \
- cpu.c \
- cpu.h \
- os.c \
- os.h
+ mode.c \
+ mode.h \
+ option.c \
+ option.h \
+ settings.c \
+ settings.h \
+ cpu.c \
+ cpu.h \
+ cpu_os.c \
+ cpu_os.h
# .desktop file
#
Modified: xfce4-cpugraph-plugin/trunk/panel-plugin/cpu.c
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/cpu.c 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/cpu.c 2007-11-22 07:17:50 UTC (rev 3613)
@@ -1,6 +1,35 @@
+/* cpu.c
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
#include "cpu.h"
#include "mode.h"
+#include "option.h"
+#include "settings.h"
+#include "cpu_os.h"
+
+static GtkTooltips *tooltips = NULL;
+
guint16
_lerp (double t, guint16 a, guint16 b)
{
@@ -40,183 +69,33 @@
void
Kill (XfcePanelPlugin * plugin, CPUGraph * base)
{
- if (base->m_TimeoutID)
- g_source_remove (base->m_TimeoutID);
+ gint i;
+ cpuLoadMon_free();
+ for(i=0; i<base->nrCores-1 ; i++)
+ gtk_widget_destroy(base->m_pBar[i]);
- if (base->m_History)
- g_free (base->m_History);
+ gtk_widget_destroy(base->m_Box);
+ free(base->m_pBar);
+ if (base->m_TimeoutID)
+ g_source_remove (base->m_TimeoutID);
- g_object_unref (base->m_Tooltip);
+ if (base->m_History)
+ g_free (base->m_History);
- g_free (base);
-}
+ g_object_unref (base->m_Tooltip);
-void
-ReadSettings (XfcePanelPlugin * plugin, CPUGraph * base)
-{
- const char *value;
- char *file;
- XfceRc *rc;
- int update;
-
- base->m_Width = 40;
-
- base->m_ForeGround1.red = 0;
- base->m_ForeGround1.green = 65535;
- base->m_ForeGround1.blue = 0;
-
- base->m_ForeGround2.red = 65535;
- base->m_ForeGround2.green = 0;
- base->m_ForeGround2.blue = 0;
-
- base->m_ForeGround3.red = 0;
- base->m_ForeGround3.green = 0;
- base->m_ForeGround3.blue = 65535;
-
- base->m_BackGround.red = 65535;
- base->m_BackGround.green = 65535;
- base->m_BackGround.blue = 65535;
-
- base->m_TimeScale = 0;
- base->m_Frame = 0;
- base->m_AssociateCommand = "xterm top";
- base->m_ColorMode = 0;
- base->m_Mode = 0;
-
- if ((file = xfce_panel_plugin_lookup_rc_file (plugin)) != NULL)
-
- {
- rc = xfce_rc_simple_open (file, TRUE);
- g_free (file);
-
- if (rc)
- {
- base->m_UpdateInterval =
- xfce_rc_read_int_entry (rc, "UpdateInterval",
- base->m_UpdateInterval);
-
- base->m_TimeScale =
- xfce_rc_read_int_entry (rc, "TimeScale",
- base->m_TimeScale);
-
- base->m_Width =
- xfce_rc_read_int_entry (rc, "Width", base->m_Width);
-
- base->m_Mode = xfce_rc_read_int_entry (rc, "Mode", base->m_Mode);
-
- base->m_Frame =
- xfce_rc_read_int_entry (rc, "Frame", base->m_Frame);
-
- if (value = xfce_rc_read_entry (rc, "AssociateCommand", base->m_AssociateCommand)) {
- base->m_AssociateCommand = g_strdup(value);
- }
-
- base->m_ColorMode =
- xfce_rc_read_int_entry (rc, "ColorMode", base->m_ColorMode);
-
- if ((value = xfce_rc_read_entry (rc, "Foreground1", NULL)))
- {
- gdk_color_parse (value, &base->m_ForeGround1);
- }
- if ((value = xfce_rc_read_entry (rc, "Foreground2", NULL)))
- {
- gdk_color_parse (value, &base->m_ForeGround2);
- }
- if ((value = xfce_rc_read_entry (rc, "Background", NULL)))
- {
- gdk_color_parse (value, &base->m_BackGround);
- }
- if ((value = xfce_rc_read_entry (rc, "Foreground3", NULL)))
- {
- gdk_color_parse (value, &base->m_ForeGround3);
- }
-
- xfce_rc_close (rc);
- }
- }
-
- SetHistorySize (base, base->m_Width);
-
- if (base->m_TimeoutID)
- g_source_remove (base->m_TimeoutID);
- switch (base->m_UpdateInterval)
- {
- case 0:
- update = 250;
- break;
- case 1:
- update = 500;
- break;
- case 2:
- update = 750;
- break;
- default:
- update = 1000;
- }
- base->m_TimeoutID = g_timeout_add (update, (GtkFunction) UpdateCPU, base);
-
- gtk_frame_set_shadow_type (GTK_FRAME (base->m_FrameWidget),
- base->m_Frame ? GTK_SHADOW_IN : GTK_SHADOW_NONE);
+ g_free (base);
}
-void
-WriteSettings (XfcePanelPlugin *plugin, CPUGraph *base)
-{
- char value[10];
- XfceRc *rc;
- char *file;
- if (!(file = xfce_panel_plugin_save_location (plugin, TRUE)))
- return;
-
- rc = xfce_rc_simple_open (file, FALSE);
- g_free (file);
-
- if (!rc)
- return;
-
- xfce_rc_write_int_entry (rc, "UpdateInterval", base->m_UpdateInterval);
-
- xfce_rc_write_int_entry (rc, "TimeScale", base->m_TimeScale);
-
- xfce_rc_write_int_entry (rc, "Width", base->m_Width);
-
- xfce_rc_write_int_entry (rc, "Mode", base->m_Mode);
-
- xfce_rc_write_int_entry (rc, "Frame", base->m_Frame);
-
- xfce_rc_write_entry (rc, "AssociateCommand", base->m_AssociateCommand ? base->m_AssociateCommand : "");
-
- xfce_rc_write_int_entry (rc, "ColorMode", base->m_ColorMode);
-
- g_snprintf (value, 8, "#%02X%02X%02X", base->m_ForeGround1.red >> 8,
- base->m_ForeGround1.green >> 8,
- base->m_ForeGround1.blue >> 8);
- xfce_rc_write_entry (rc, "Foreground1", value);
-
- g_snprintf (value, 8, "#%02X%02X%02X", base->m_ForeGround2.red >> 8,
- base->m_ForeGround2.green >> 8,
- base->m_ForeGround2.blue >> 8);
- xfce_rc_write_entry (rc, "Foreground2", value);
-
- g_snprintf (value, 8, "#%02X%02X%02X", base->m_BackGround.red >> 8,
- base->m_BackGround.green >> 8,
- base->m_BackGround.blue >> 8);
- xfce_rc_write_entry (rc, "Background", value);
-
- g_snprintf (value, 8, "#%02X%02X%02X", base->m_ForeGround3.red >> 8,
- base->m_ForeGround3.green >> 8,
- base->m_ForeGround3.blue >> 8);
- xfce_rc_write_entry (rc, "Foreground3", value);
-
- xfce_rc_close (rc);
-}
-
CPUGraph *
CreateControl (XfcePanelPlugin * plugin)
{
GtkWidget *frame, *ebox;
+ GtkOrientation orientation;
+ GtkProgressBarOrientation barOrientation;
CPUGraph *base = g_new0 (CPUGraph, 1);
+ gint i;
base->plugin = plugin;
@@ -224,19 +103,67 @@
gtk_widget_show (ebox);
gtk_container_add (GTK_CONTAINER (plugin), ebox);
+ xfce_panel_plugin_add_action_widget (plugin, ebox);
+
+ orientation = xfce_panel_plugin_get_orientation(plugin);
+ if(orientation == GTK_ORIENTATION_HORIZONTAL)
+ barOrientation = GTK_PROGRESS_BOTTOM_TO_TOP;
+ else
+ barOrientation = GTK_PROGRESS_LEFT_TO_RIGHT;
+
+ base->m_Box = xfce_hvbox_new(orientation, FALSE, 0);
+ gtk_widget_show(base->m_Box);
+ gtk_container_add(GTK_CONTAINER(ebox), base->m_Box);
+
+ gtk_container_set_border_width(GTK_CONTAINER(frame), BORDER / 2);
+
+ /* <-- Multicore stuff */
+ if((base->nrCores = cpuLoadMon_init() - 1) < 0)
+ DBG("Cannot init base monitor!\n");
+
+ base->m_pBar =
+ (GtkWidget **) malloc(sizeof(GtkWidget *) * base->nrCores);
+
+ for(i=0; i<base->nrCores; i++) {
+ base->m_pBar[i] = GTK_WIDGET(gtk_progress_bar_new());
+ gtk_progress_bar_set_orientation(
+ GTK_PROGRESS_BAR(base->m_pBar[i]),
+ barOrientation);
+
+ gtk_box_pack_start(
+ GTK_BOX(base->m_Box),
+ base->m_pBar[i],
+ FALSE,
+ FALSE,
+ 0);
+
+
+ gtk_widget_show(base->m_pBar[i]);
+ }
+
+ /* <-- End of multicore stuff */
+
base->m_FrameWidget = frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+
+
+ gtk_box_pack_start(
+ GTK_BOX(base->m_Box),
+ frame,
+ TRUE,
+ TRUE,
+ 2);
gtk_widget_show (frame);
- gtk_container_add (GTK_CONTAINER (ebox), frame);
- xfce_panel_plugin_add_action_widget (plugin, ebox);
- g_signal_connect (ebox, "button-press-event", G_CALLBACK (LaunchCommand), base);
-
+
+
+
+
+
base->m_DrawArea = gtk_drawing_area_new ();
gtk_widget_set_app_paintable (base->m_DrawArea, TRUE);
- gtk_widget_show (base->m_DrawArea);
-
gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (base->m_DrawArea));
+ gtk_widget_show (base->m_DrawArea);
xfce_panel_plugin_add_action_widget (plugin, base->m_DrawArea);
@@ -244,6 +171,7 @@
g_object_ref (base->m_Tooltip);
gtk_object_sink (GTK_OBJECT (base->m_Tooltip));
+ g_signal_connect (ebox, "button-press-event", G_CALLBACK (LaunchCommand), base);
g_signal_connect_after (base->m_DrawArea, "expose-event",
G_CALLBACK (DrawAreaExposeEvent), base);
@@ -253,39 +181,106 @@
void
SetOrientation (XfcePanelPlugin * plugin, GtkOrientation orientation, CPUGraph *base)
{
- UserSetSize (base);
+ GtkProgressBarOrientation barOrientation;
+ gpointer p_pBar[base->nrCores];
+ gpointer p_FrameWidget;
+ gint i;
- gtk_widget_queue_draw (base->m_DrawArea);
+ /* <-- Multicore stuff */
+
+ orientation = xfce_panel_plugin_get_orientation(plugin);
+ if(orientation == GTK_ORIENTATION_HORIZONTAL)
+ barOrientation = GTK_PROGRESS_BOTTOM_TO_TOP;
+ else
+ barOrientation = GTK_PROGRESS_LEFT_TO_RIGHT;
+
+ /* Unpack progress bars */
+ for(i=0; i<base->nrCores; i++)
+ {
+ /* reference progress bars to keep them alive */
+ p_pBar[i] = g_object_ref(base->m_pBar[i]);
+ gtk_container_remove(
+ GTK_CONTAINER(base->m_Box),
+ GTK_WIDGET(base->m_pBar[i]));
+ }
+ p_FrameWidget = g_object_ref(base->m_FrameWidget);
+ gtk_container_remove(
+ GTK_CONTAINER(base->m_Box),
+ GTK_WIDGET(base->m_FrameWidget));
+
+
+ xfce_hvbox_set_orientation(XFCE_HVBOX(base->m_Box), orientation);
+
+ /* Pack progress bars again into hvbox */
+ for(i=0; i<base->nrCores; i++)
+ {
+ gtk_progress_bar_set_orientation(
+ GTK_PROGRESS_BAR(base->m_pBar[i]),
+ barOrientation);
+ gtk_box_pack_start(
+ GTK_BOX(base->m_Box),
+ base->m_pBar[i],
+ FALSE,
+ FALSE,
+ 1);
+ /* We dont need anymore this reference */
+ g_object_unref(p_pBar[i]);
+ }
+ gtk_box_pack_start(
+ GTK_BOX(base->m_Box),
+ base->m_FrameWidget,
+ TRUE,
+ TRUE,
+ 2);
+ g_object_unref(p_FrameWidget);
+
+ UserSetSize (base);
+
+ gtk_widget_queue_draw (base->m_DrawArea);
}
void
UpdateTooltip (CPUGraph * base)
{
char tooltip[32];
-
- int pos = snprintf (tooltip, 32, "Usage: %d%%", base->m_CPUUsage*100/CPU_SCALE);
+ int pos = snprintf (tooltip, 32, "Usage: %d%%", base->m_CPUUsage);
if( scaling_cur_freq )
snprintf (tooltip+pos, 32-pos, " (%d MHz)", scaling_cur_freq/1000);
gtk_tooltips_set_tip (GTK_TOOLTIPS (base->m_Tooltip),
- base->m_FrameWidget->parent, tooltip, NULL);
+ base->m_Box->parent, tooltip, NULL);
}
+/**
+ * size : size of pannel height/width
+ * BORDER : use for size of bar
+ */
gboolean
SetSize (XfcePanelPlugin *plugin, int size, CPUGraph *base)
{
- gtk_container_set_border_width (GTK_CONTAINER (base->m_FrameWidget),
- size > 26 ? 2 : 0);
-
+ gint i, coreWidth;
+ gtk_container_set_border_width (GTK_CONTAINER (base->m_FrameWidget), 0);
if (xfce_panel_plugin_get_orientation (plugin) ==
GTK_ORIENTATION_HORIZONTAL)
{
- gtk_widget_set_size_request (GTK_WIDGET (plugin),
- base->m_Width, size);
+ for(i=0; i<base->nrCores; i++)
+ gtk_widget_set_size_request(
+ GTK_WIDGET(base->m_pBar[i]),
+ BORDER,
+ size);
+
+ coreWidth = base->nrCores*BORDER;
+ gtk_widget_set_size_request (GTK_WIDGET (plugin),
+ base->m_Width+coreWidth, size);
}
else
{
gtk_widget_set_size_request (GTK_WIDGET (plugin),
size, base->m_Width);
+ for(i=0; i<base->nrCores; i++)
+ gtk_widget_set_size_request(
+ GTK_WIDGET(base->m_pBar[i]),
+ size,
+ BORDER);
}
return TRUE;
@@ -294,427 +289,37 @@
void
UserSetSize (CPUGraph * base)
{
- SetSize (base->plugin, xfce_panel_plugin_get_size (base->plugin), base);
+ SetSize (base->plugin, xfce_panel_plugin_get_size (base->plugin), base);
}
-static void
-DialogResponse (GtkWidget *dlg, int response, CPUGraph *base)
-{
- ApplyChanges (base);
- gtk_widget_destroy (dlg);
- xfce_panel_plugin_unblock_menu (base->plugin);
- WriteSettings (base->plugin, base);
-}
-void
-CreateOptions (XfcePanelPlugin *plugin, CPUGraph *base)
-{
- GtkWidget *dlg, *header;
- GtkBox *vbox, *vbox2, *hbox;
- GtkWidget *label;
- GtkSizeGroup *sg;
- SOptions *op = &base->m_Options;
-
- xfce_panel_plugin_block_menu (plugin);
-
- dlg = gtk_dialog_new_with_buttons (_("Configure CPU Graph"),
- GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
- GTK_DIALOG_DESTROY_WITH_PARENT |
- GTK_DIALOG_NO_SEPARATOR,
- GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
- NULL);
-
- base->m_OptionsDialog = dlg;
-
- g_signal_connect (dlg, "response", G_CALLBACK (DialogResponse), base);
-
- gtk_container_set_border_width (GTK_CONTAINER (dlg), 2);
-
- header = xfce_create_header (NULL, _("CPU Graph"));
- gtk_widget_set_size_request (GTK_BIN (header)->child, -1, 32);
- gtk_container_set_border_width (GTK_CONTAINER (header), BORDER - 2);
- gtk_widget_show (header);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), header,
- FALSE, TRUE, 0);
-
- vbox = GTK_BOX (gtk_vbox_new(FALSE, BORDER));
- gtk_container_set_border_width (GTK_CONTAINER (vbox), BORDER );
- gtk_widget_show(GTK_WIDGET (vbox));
-
- sg = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
-
- /* Update Interval */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
- label = gtk_label_new (_("Update Interval: "));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
-
- op->m_UpdateOption = gtk_option_menu_new ();
- gtk_widget_show (op->m_UpdateOption);
- gtk_box_pack_start (GTK_BOX (hbox), op->m_UpdateOption, FALSE, FALSE, 0);
-
- op->m_UpdateMenu = gtk_menu_new ();
- gtk_option_menu_set_menu (GTK_OPTION_MENU (op->m_UpdateOption),
- op->m_UpdateMenu);
-
- op->m_UpdateMenuItem =
- gtk_menu_item_new_with_label (_("Fastest (~250ms)"));
- gtk_widget_show (op->m_UpdateMenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_UpdateMenu),
- op->m_UpdateMenuItem);
-
- op->m_UpdateMenuItem = gtk_menu_item_new_with_label (_("Fast (~500ms)"));
- gtk_widget_show (op->m_UpdateMenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_UpdateMenu),
- op->m_UpdateMenuItem);
-
- op->m_UpdateMenuItem =
- gtk_menu_item_new_with_label (_("Normal (~750ms)"));
- gtk_widget_show (op->m_UpdateMenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_UpdateMenu),
- op->m_UpdateMenuItem);
-
- op->m_UpdateMenuItem = gtk_menu_item_new_with_label (_("Slow (~1s)"));
- gtk_widget_show (op->m_UpdateMenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_UpdateMenu),
- op->m_UpdateMenuItem);
-
- gtk_option_menu_set_history (GTK_OPTION_MENU (op->m_UpdateOption),
- base->m_UpdateInterval);
-
- g_signal_connect (op->m_UpdateOption, "changed",
- G_CALLBACK (UpdateChange), base);
-
- /* Width */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
-
- if (xfce_panel_plugin_get_orientation (plugin) ==
- GTK_ORIENTATION_HORIZONTAL)
- label = gtk_label_new (_("Width:"));
- else
- label = gtk_label_new (_("Height:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
-
- op->m_Width =
- gtk_spin_button_new_with_range (10, 128, 1);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->m_Width), base->m_Width);
- gtk_widget_show (op->m_Width);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_Width), FALSE,
- FALSE, 0);
- g_signal_connect (op->m_Width, "value-changed", G_CALLBACK (SpinChange),
- &base->m_Width);
-
- /* TimeScale */
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
-
- op->m_TimeScale = gtk_check_button_new_with_mnemonic (_("Non-linear time-scale"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->m_TimeScale),
- base->m_TimeScale);
- gtk_widget_show (op->m_TimeScale);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_TimeScale), FALSE,
- FALSE, 0);
- g_signal_connect (op->m_TimeScale, "toggled", G_CALLBACK (TimeScaleChange),
- base);
- gtk_size_group_add_widget (sg, op->m_TimeScale);
-
- /* Frame */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
-
- op->m_GraphFrame = gtk_check_button_new_with_mnemonic (_("Show frame"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->m_GraphFrame),
- base->m_Frame);
- gtk_widget_show (op->m_GraphFrame);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_GraphFrame), FALSE,
- FALSE, 0);
- g_signal_connect (op->m_GraphFrame, "toggled", G_CALLBACK (FrameChange),
- base);
- gtk_size_group_add_widget (sg, op->m_GraphFrame);
-
- vbox2 = GTK_BOX (gtk_vbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (vbox2));
- gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
-
- /* Associate Command */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
- label = gtk_label_new (_("Associated command :"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
- op->m_AssociateCommand = gtk_entry_new ();
- gtk_entry_set_max_length (GTK_ENTRY(op->m_AssociateCommand), 32);
- gtk_entry_set_text (GTK_ENTRY(op->m_AssociateCommand), base->m_AssociateCommand);
- gtk_widget_show (op->m_AssociateCommand);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_AssociateCommand), FALSE, FALSE, 0);
- g_signal_connect (op->m_AssociateCommand, "changed", G_CALLBACK (AssociateCommandChange), base);
-
- /* Foreground 1 */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
-
- label = gtk_label_new (_("Color 1:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
-
- op->m_FG1 = gtk_button_new ();
- op->m_ColorDA = gtk_drawing_area_new ();
-
- gtk_widget_modify_bg (op->m_ColorDA, GTK_STATE_NORMAL,
- &base->m_ForeGround1);
- gtk_widget_set_size_request (op->m_ColorDA, 12, 12);
- gtk_container_add (GTK_CONTAINER (op->m_FG1), op->m_ColorDA);
- gtk_widget_show (GTK_WIDGET (op->m_FG1));
- gtk_widget_show (GTK_WIDGET (op->m_ColorDA));
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_FG1), FALSE, FALSE,
- 0);
-
- g_signal_connect (op->m_FG1, "clicked", G_CALLBACK (ChangeColor1), base);
-
- /* Foreground2 */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
-
- label = gtk_label_new (_("Color 2:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
-
- op->m_FG2 = gtk_button_new ();
- op->m_ColorDA2 = gtk_drawing_area_new ();
-
- gtk_widget_modify_bg (op->m_ColorDA2, GTK_STATE_NORMAL,
- &base->m_ForeGround2);
- gtk_widget_set_size_request (op->m_ColorDA2, 12, 12);
- gtk_container_add (GTK_CONTAINER (op->m_FG2), op->m_ColorDA2);
- gtk_widget_show (GTK_WIDGET (op->m_FG2));
- gtk_widget_show (GTK_WIDGET (op->m_ColorDA2));
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_FG2), FALSE, FALSE,
- 0);
-
- g_signal_connect (op->m_FG2, "clicked", G_CALLBACK (ChangeColor2), base);
-
- if (base->m_Mode == 1)
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG2), TRUE);
-
- /* Foreground3 */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
-
- label = gtk_label_new (_("Color 3:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
- op->m_FG3 = gtk_button_new ();
- op->m_ColorDA5 = gtk_drawing_area_new ();
- gtk_widget_modify_bg (op->m_ColorDA5, GTK_STATE_NORMAL,
- &base->m_ForeGround3);
- gtk_widget_set_size_request (op->m_ColorDA5, 12, 12);
- gtk_container_add (GTK_CONTAINER (op->m_FG3), op->m_ColorDA5);
- gtk_widget_show (GTK_WIDGET (op->m_FG3));
- gtk_widget_show (GTK_WIDGET (op->m_ColorDA5));
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_FG3), FALSE, FALSE,
- 0);
- g_signal_connect (op->m_FG3, "clicked", G_CALLBACK (ChangeColor4), base);
-
- if (base->m_Mode == 0 || base->m_Mode == 2 || base->m_ColorMode == 0)
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG3), FALSE);
- else
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG3), TRUE);
-
-
- /* Background */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
-
- label = gtk_label_new (_("Background:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
-
- op->m_BG = gtk_button_new ();
- op->m_ColorDA3 = gtk_drawing_area_new ();
-
- gtk_widget_modify_bg (op->m_ColorDA3, GTK_STATE_NORMAL,
- &base->m_BackGround);
- gtk_widget_set_size_request (op->m_ColorDA3, 12, 12);
- gtk_container_add (GTK_CONTAINER (op->m_BG), op->m_ColorDA3);
- gtk_widget_show (GTK_WIDGET (op->m_BG));
- gtk_widget_show (GTK_WIDGET (op->m_ColorDA3));
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_BG), FALSE, FALSE,
- 0);
-
- g_signal_connect (op->m_BG, "clicked", G_CALLBACK (ChangeColor3), base);
-
- /* Modes */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
-
- label = gtk_label_new (_("Mode:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
-
- op->m_OptionMenu = gtk_option_menu_new ();
- gtk_widget_show (op->m_OptionMenu);
- gtk_box_pack_start (GTK_BOX (hbox), op->m_OptionMenu, FALSE, FALSE, 0);
-
- op->m_Menu = gtk_menu_new ();
- gtk_option_menu_set_menu (GTK_OPTION_MENU (op->m_OptionMenu), op->m_Menu);
-
- op->m_MenuItem = gtk_menu_item_new_with_label (_("Normal"));
- gtk_widget_show (op->m_MenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_Menu), op->m_MenuItem);
-
- op->m_MenuItem = gtk_menu_item_new_with_label (_("LED"));
- gtk_widget_show (op->m_MenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_Menu), op->m_MenuItem);
-
- op->m_MenuItem = gtk_menu_item_new_with_label (_("No history"));
- gtk_widget_show (op->m_MenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_Menu), op->m_MenuItem);
-
- gtk_option_menu_set_history (GTK_OPTION_MENU (op->m_OptionMenu),
- base->m_Mode);
-
- g_signal_connect (op->m_OptionMenu, "changed", G_CALLBACK (ModeChange),
- base);
-
- /* Color mode */
-
- hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
- gtk_widget_show (GTK_WIDGET (hbox));
- gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
- label = gtk_label_new (_("Color mode: "));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_size_group_add_widget (sg, label);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
-
- op->m_ModeOption = gtk_option_menu_new ();
- gtk_widget_show (op->m_ModeOption);
- gtk_box_pack_start (GTK_BOX (hbox), op->m_ModeOption, FALSE, FALSE, 0);
-
- op->m_ModeMenu = gtk_menu_new ();
- gtk_option_menu_set_menu (GTK_OPTION_MENU (op->m_ModeOption),
- op->m_ModeMenu);
-
- op->m_ModeMenuItem = gtk_menu_item_new_with_label (_("None"));
- gtk_widget_show (op->m_ModeMenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_ModeMenu),
- op->m_ModeMenuItem);
-
- op->m_ModeMenuItem = gtk_menu_item_new_with_label (_("Gradient"));
- gtk_widget_show (op->m_ModeMenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_ModeMenu),
- op->m_ModeMenuItem);
-
- op->m_ModeMenuItem = gtk_menu_item_new_with_label (_("Fire"));
- gtk_widget_show (op->m_ModeMenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_ModeMenu),
- op->m_ModeMenuItem);
-
- op->m_ModeMenuItem = gtk_menu_item_new_with_label ("cpufreq");
- gtk_widget_show (op->m_ModeMenuItem);
- gtk_menu_shell_append (GTK_MENU_SHELL (op->m_ModeMenu),
- op->m_ModeMenuItem);
-
- gtk_option_menu_set_history (GTK_OPTION_MENU (op->m_ModeOption),
- base->m_ColorMode);
-
- g_signal_connect (op->m_ModeOption, "changed",
- G_CALLBACK (ColorModeChange), base);
-
- gtk_widget_show_all (GTK_WIDGET (hbox));
-
- op->m_Notebook = gtk_notebook_new ();
- gtk_container_set_border_width (GTK_CONTAINER (op->m_Notebook),
- BORDER - 2);
- label = gtk_label_new (_("Appearance"));
- gtk_notebook_append_page (GTK_NOTEBOOK (op->m_Notebook),
- GTK_WIDGET (vbox2), GTK_WIDGET (label));
- label = gtk_label_new (_("Advanced"));
- gtk_notebook_append_page (GTK_NOTEBOOK (op->m_Notebook),
- GTK_WIDGET (vbox), GTK_WIDGET (label));
- gtk_widget_show (op->m_Notebook);
-
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox),
- GTK_WIDGET (op->m_Notebook), TRUE, TRUE, 0);
-
- gtk_widget_show (dlg);
-}
-
gboolean
UpdateCPU (CPUGraph * base)
{
- base->m_CPUUsage = GetCPUUsage (&base->m_OldUsage, &base->m_OldTotal);
+ gint i;
+ cpuLoadData *data = cpuLoadMon_read();
- if(base->m_TimeScale)
- {
- int i = base->m_Values - 1;
- int j = i + base->m_Values;
- while(i > 0)
- {
- int a, b;
+ base->m_CPUUsage = data[0].value * 100.0;
- a = base->m_History[i], b = base->m_History[i-1];
- if( a < b ) a++;
- int factor = (i*2);
- base->m_History[i--] = ( a*(factor-1) + b )/factor;
+ for(i=0; i<base->nrCores; i++){
+ gtk_progress_bar_set_fraction(
+ GTK_PROGRESS_BAR(base->m_pBar[i]),
+ (gdouble)data[i+1].value);
+ }
- a = base->m_History[j], b = base->m_History[j-1];
- if( a < b ) a++;
- base->m_History[j--] = ( a*(factor-1) + b )/factor;
- }
- } else {
- memmove (base->m_History + 1
- , base->m_History
- , (base->m_Values*2-1)*sizeof(int));
- }
- base->m_History[0] = base->m_CPUUsage;
- base->m_History[base->m_Values] = scaling_cur_freq;
+ memmove (base->m_History + 1, base->m_History,
+ (base->m_Values-1)*sizeof(float));
+ base->m_History[0] = data[0].value;
- /* Tooltip */
- UpdateTooltip (base);
+ /* Tooltip */
+ UpdateTooltip (base);
- /* Draw the graph. */
- gtk_widget_queue_draw (base->m_DrawArea);
+ //fprintf(stderr, "update cpu %f\n", base->m_History[0]);
- return TRUE;
+ /* Draw the graph. */
+ gtk_widget_queue_draw (base->m_DrawArea);
+
+ return TRUE;
}
void
@@ -734,21 +339,22 @@
gdk_draw_rectangle (da->window, bg, TRUE, 0, 0, w, h);
+ /*fprintf(stderr, "mode selected %d\n", base->m_Mode);*/
+
if (base->m_Mode == 0)
{
- drawGraphMode0(base, fg1, da, w, h);
+ drawGraphNormal(base, fg1, da, w, h);
}
else if (base->m_Mode == 1)
{
- drawGraphMode1(base, fg1, fg2, da, w, h);
+ drawGraphLED(base, fg1, fg2, da, w, h);
}
else if (base->m_Mode == 2)
{
- drawGraphMode2(base, fg1, fg2, da, w, h);
+ drawGraphNoHistory(base, fg1, fg2, da, w, h);
}
- else if (base->m_Mode == 4)
- {
- drawGraphMode4(base, fg1, da, w, h);
+ else if (base->m_Mode == 3){
+ drawGraphGrid(base, fg1, fg2, da, w, h);
}
g_object_unref (fg2);
@@ -794,6 +400,8 @@
base->m_TimeoutID = g_timeout_add (update, (GtkFunction) UpdateCPU, base);
UserSetSize (base);
+
+ fprintf(stderr, "m_Width %d\n", base->m_Width);
SetHistorySize (base, base->m_Width);
}
@@ -905,56 +513,44 @@
void
SetHistorySize (CPUGraph * base, int size)
{
- int i;
+ gint i;
+ cpuLoadData *data = cpuLoadMon_read();
+ float usage = data[0].value;
+
base->m_History =
- (long *) realloc (base->m_History, 2 * size * sizeof (long));
+ (float *) realloc (base->m_History, size * sizeof (float));
- base->m_OldUsage = base->m_OldTotal = 0;
- int usage = GetCPUUsage (&base->m_OldUsage, &base->m_OldTotal);
-
- for (i = size - 1; i >= base->m_Values; i--)
+ for (i = size - 1; i >= 0; i--)
{
- base->m_History[i] = usage;
- base->m_History[i+size] = scaling_cur_freq;
+ base->m_History[i] = usage;
}
base->m_Values = size;
}
void
+SetSensitive(CPUGraph *base, GtkWidget *fgA, GtkWidget *fgB,
+ gboolean flag1, gboolean flag2){
+ if (base->m_ColorMode > 0)
+ gtk_widget_set_sensitive (GTK_WIDGET (fgA), flag1);
+ else
+ gtk_widget_set_sensitive (GTK_WIDGET (fgA), !flag1);
+ gtk_widget_set_sensitive (GTK_WIDGET (fgB), flag2);
+}
+
+void
ModeChange (GtkOptionMenu * om, CPUGraph * base)
{
- base->m_Mode = gtk_option_menu_get_history (om);
- if (base->m_Mode == 0)
- {
- if (base->m_ColorMode > 0)
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG2),
- TRUE);
- else
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG2),
- FALSE);
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG3), FALSE);
- }
- else if (base->m_Mode == 1)
- {
- if (base->m_ColorMode > 0)
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG3),
- TRUE);
- else
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG3),
- FALSE);
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG2), TRUE);
- }
- else if (base->m_Mode == 2)
- {
- if (base->m_ColorMode > 0)
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG2),
- TRUE);
- else
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG2),
- FALSE);
- gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG3), FALSE);
- }
+ base->m_Mode = gtk_option_menu_get_history (om);
+ if (base->m_Mode == 0){
+ SetSensitive(base, base->m_Options.m_FG2, base->m_Options.m_FG3, TRUE, FALSE);
+ }
+ else if (base->m_Mode == 1){
+ SetSensitive(base, base->m_Options.m_FG3, base->m_Options.m_FG2, TRUE, TRUE);
+ }
+ else if (base->m_Mode == 2){
+ SetSensitive(base, base->m_Options.m_FG2, base->m_Options.m_FG3, TRUE, FALSE);
+ }
}
void
UpdateChange (GtkOptionMenu * om, CPUGraph * base)
Modified: xfce4-cpugraph-plugin/trunk/panel-plugin/cpu.h
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/cpu.h 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/cpu.h 2007-11-22 07:17:50 UTC (rev 3613)
@@ -1,3 +1,26 @@
+/* cpu.h
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
#ifndef __XFCE_CPU_H__
#define __XFCE_CPU_H__
@@ -14,8 +37,9 @@
#include <libxfce4util/libxfce4util.h>
#include <libxfcegui4/libxfcegui4.h>
#include <libxfce4panel/xfce-panel-plugin.h>
+#include <libxfce4panel/xfce-hvbox.h>
-#include "os.h"
+#include "cpu_os.h"
#define BORDER 8
@@ -68,32 +92,34 @@
GtkWidget *m_FrameWidget;
GtkWidget *m_DrawArea;
GtkWidget *m_OptionsDialog;
+ GtkWidget *m_Box;
+ GtkWidget **m_pBar;
SOptions m_Options;
- int m_UpdateInterval; // Number of ms between updates.
+ int m_UpdateInterval; // Number of ms between updates.
int m_TimeScale; // Wether to use non-linear time scale.
- int m_Width; // The width of the plugin.
- int m_Mode; // Eventual mode of the plugin.
+ int m_Width; // The width of the plugin.
+ int m_Mode; // Eventual mode of the plugin.
int m_ColorMode;
int m_Frame;
- gchar * m_AssociateCommand;
+ gchar * m_AssociateCommand;
+ guint nrCores; // Number of cores (not including total cpu)
- GdkColor m_ForeGround1; // Inactive color.
- GdkColor m_ForeGround2; // Active color.
+ GdkColor m_ForeGround1; // Inactive color.
+ GdkColor m_ForeGround2; // Active color.
GdkColor m_ForeGround3;
- GdkColor m_BackGround; // Background color.
+ GdkColor m_BackGround; // Background color.
GtkTooltips *m_Tooltip; // Eventual tooltip.
guint m_TimeoutID; // Timeout ID for the tooltip;
long m_CPUUsage;
- long *m_History;
+ float *m_History;
int m_Values;
int m_Orientation;
- int m_OldUsage;
- int m_OldTotal;
+
}CPUGraph;
CPUGraph *CreateControl (XfcePanelPlugin *plugin);
@@ -119,6 +145,7 @@
void ChangeColor5 (GtkButton *button, CPUGraph *base);
void ChangeColor (int color, CPUGraph *base);
void SpinChange (GtkSpinButton *sb, int *value);
+void SetSensitive (CPUGraph *base, GtkWidget *fgA, GtkWidget *fgB, gboolean flag1, gboolean flag2);
void UpdateChange (GtkOptionMenu *om, CPUGraph *base);
void ModeChange (GtkOptionMenu *om, CPUGraph *base);
void ApplyChanges (CPUGraph *base);
Added: xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.c
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.c (rev 0)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.c 2007-11-22 07:17:50 UTC (rev 3613)
@@ -0,0 +1,166 @@
+/* cpu_os.c
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "cpu.h"
+
+#define PROC_STAT "/proc/stat"
+#define PROCMAXLNLEN 256 /* should make it */
+
+int scaling_cur_freq=0;
+int scaling_min_freq=-1;
+int scaling_max_freq=0;
+
+cpuLoadData *data = NULL;
+int nrCpus = 0;
+
+#if defined (__linux__)
+int cpuLoadMon_init()
+{
+ FILE *fStat = NULL;
+ char cpuStr[PROCMAXLNLEN];
+ int cpuNr = -1;
+
+ /* Check if previously initalized */
+ if(data != NULL) return(-2);
+
+ /* Open proc stat file */
+ if(!(fStat = fopen(PROC_STAT, "r"))) return(-1);
+
+ /* Read each cpu line at time */
+ do
+ {
+ if(!fgets(cpuStr, PROCMAXLNLEN, fStat)) return(cpuNr);
+ cpuNr++;
+ }
+ while(strncmp(cpuStr, "cpu", 3) == 0);
+
+ /* Alloc storage for cpu data stuff */
+ data = (cpuLoadData *) calloc(cpuNr, sizeof(cpuLoadData));
+ if(data == NULL) return(-3);
+
+ fclose(fStat);
+ return(nrCpus=cpuNr);
+}
+
+void cpuLoadMon_free()
+{
+ /* free cpu data */
+ free(data);
+ data = NULL;
+
+ /* Reset values */
+ nrCpus = 0;
+}
+
+
+cpuLoadData *cpuLoadMon_read(){
+ FILE *fStat = NULL;
+ char cpuStr[PROCMAXLNLEN];
+ unsigned long user, nice, system, idle;
+ unsigned long used, total;
+ int cpuNr = 0;
+
+
+ /* Check if callable */
+ if((data == NULL) || (nrCpus == 0)) return(NULL);
+
+ /* Open proc stat file */
+ if(!(fStat = fopen(PROC_STAT, "r"))) return(NULL);
+
+ /* Read each cpu line at time */
+ do
+ {
+ if(!fgets(cpuStr, PROCMAXLNLEN, fStat)) return(data);
+ sscanf(cpuStr, "%*s %ld %ld %ld %ld", &user, &nice, &system, &idle);
+
+ used = user + nice + system;
+ total = used + idle;
+ if((total - data[cpuNr].pTotal) != 0)
+ {
+ data[cpuNr].value = (float)(used - data[cpuNr].pUsed)
+ / (float)(total - data[cpuNr].pTotal);
+ }
+ else
+ {
+ data[cpuNr].value = 0;
+ }
+ data[cpuNr].pUsed = used;
+ data[cpuNr].pTotal = total;
+ cpuNr++;
+ }
+ while((cpuNr < nrCpus) && (strncmp(cpuStr, "cpu", 3) == 0));
+
+ fclose(fStat);
+
+ /* init current, min and max frequency */
+ /* TODO integrate with usage data */
+ if( -1 != scaling_max_freq)
+ {
+ FILE *fp;
+ if( scaling_max_freq )
+ {
+ fp = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq", "r");
+ if( NULL != fp )
+ {
+ fscanf(fp, "%d", &scaling_cur_freq);
+ fclose(fp);
+ }
+ } else {
+ scaling_max_freq = -1;
+ fp = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", "r");
+ if( NULL != fp )
+ {
+ if (1 == fscanf(fp, "%d", &scaling_min_freq) )
+ {
+ fclose(fp);
+ fp = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq", "r");
+ if( NULL != fp)
+ {
+ fscanf(fp, "%d", &scaling_max_freq);
+ if( scaling_max_freq < 1 ) scaling_max_freq = -1;
+ fclose(fp);
+ }
+ } else {
+ fclose(fp);
+ }
+ }
+ }
+ }
+
+
+ return(data);
+}
+/* TODO FreeBSD */
+/* TODO NetBSD */
+/* TODO OpenBSD */
+#else
+#error "Your're OS is not supported"
+#endif
Property changes on: xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.c
___________________________________________________________________
Name: svn:eol-style
+ native
Added: xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.h
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.h (rev 0)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.h 2007-11-22 07:17:50 UTC (rev 3613)
@@ -0,0 +1,46 @@
+/* cpu_os.h
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _CPU_OS_H
+#define _CPU_OS_H
+
+#define CPU_SCALE 1;/*00000*/
+
+extern int scaling_cur_freq;
+extern int scaling_max_freq;
+extern int scaling_min_freq;
+
+typedef struct s_cpuLoadData
+{
+ float value; /* cpu utilization % */
+ unsigned long pUsed; /* Previous value of used cpu time */
+ unsigned long pTotal; /* Previous value of total cpu time */
+} cpuLoadData;
+
+int cpuLoadMon_init();
+
+void cpuLoadMon_free();
+
+cpuLoadData *cpuLoadMon_read();
+
+#endif /* _CPU_OS_H */
Property changes on: xfce4-cpugraph-plugin/trunk/panel-plugin/cpu_os.h
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: xfce4-cpugraph-plugin/trunk/panel-plugin/mode.c
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/mode.c 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/mode.c 2007-11-22 07:17:50 UTC (rev 3613)
@@ -1,67 +1,60 @@
+/* mode.c
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
#include "mode.h"
-/*** MODE 0 ***/
-void drawGraphMode0 (CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int h){
+/*** MODE 0 : Normal ***/
+void drawGraphNormal (CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int h){
int x, y;
+ //fprintf(stderr, "usage %f\n", base->m_History[0]);
for (x = w; x >= 0; x--)
{
- long usage = h * base->m_History[w - x] / CPU_SCALE;
+ long usage = h * base->m_History[w - x];
if(usage == 0) continue;
- if (base->m_ColorMode == 0) {
+ if (base->m_ColorMode == 0) { /* none color mode */
gdk_gc_set_rgb_fg_color (fg1, &base->m_ForeGround1);
-
- if(base->m_Frame)
- gdk_draw_line (da->window, fg1, x+1, h+1-usage, x+1, h);
- else
- gdk_draw_line (da->window, fg1, x, h-usage, x, h-1);
+ gdk_draw_line (da->window, fg1, x, h-usage, x, h-1);
}
- else if (base->m_ColorMode == 3) /* cpu freq. based */
- {
- GdkColor color;
- double t = (double) (base->m_History[base->m_Values+ w - x] - scaling_min_freq)
- / (scaling_max_freq - scaling_min_freq);
-
- color.red = _lerp (t, base->m_ForeGround1.red,
- base->m_ForeGround2.red);
- color.green = _lerp (t, base->m_ForeGround1.green,
- base->m_ForeGround2.green);
- color.blue = _lerp (t, base->m_ForeGround1.blue,
- base->m_ForeGround2.blue);
- gdk_gc_set_rgb_fg_color (fg1, &color);
-
- if(base->m_Frame)
- gdk_draw_line (da->window, fg1
- , x+1, h+1-usage, x+1, h);
- else
- gdk_draw_line (da->window, fg1
- , x, h-usage, x, h-1);
- }
- else /* 1 or 2 */
- {
+ if(base->m_ColorMode == 1){ /* color mode == 1 : gradient */
int tmp = 0;
- int length = h - (h - usage);
- for (y = h; y >= h - usage; y--, tmp++)
+ for (y = h; y >= h - usage; y--)
{
- if (base->m_ColorMode > 0)
- {
- GdkColor color;
- double t =
- (base->m_ColorMode == 1) ? (tmp / (double) (h)) :
- (tmp / (double) (length));
- color.red =
- _lerp (t, base->m_ForeGround1.red,
- base->m_ForeGround2.red);
- color.green =
- _lerp (t, base->m_ForeGround1.green,
- base->m_ForeGround2.green);
- color.blue =
- _lerp (t, base->m_ForeGround1.blue,
- base->m_ForeGround2.blue);
- gdk_gc_set_rgb_fg_color (fg1, &color);
- }
+ GdkColor color;
+ double t = tmp / (double) (h);
+ color.red =
+ _lerp (t, base->m_ForeGround1.red,
+ base->m_ForeGround2.red);
+ color.green =
+ _lerp (t, base->m_ForeGround1.green,
+ base->m_ForeGround2.green);
+ color.blue =
+ _lerp (t, base->m_ForeGround1.blue,
+ base->m_ForeGround2.blue);
+ gdk_gc_set_rgb_fg_color (fg1, &color);
+ tmp++;
gdk_draw_point (da->window, fg1, x, y);
}
}
@@ -69,31 +62,25 @@
}
-/*** MODE 1 ***/
-void drawGraphMode1 (CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h){
+/*** MODE 1 : LED ***/
+void drawGraphLED (CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h){
int nrx = (w + 1) / 3.0;
int nry = (h + 1) / 2.0;
- float tstep = nry / CPU_SCALE;
int x, y;
+ gdk_gc_set_rgb_fg_color (fg1, &base->m_ForeGround1);
+ gdk_gc_set_rgb_fg_color (fg2, &base->m_ForeGround2);
+
for (x = nrx ; x >= 0; x--)
{
- float usage = base->m_History[nrx - x] * tstep;
int tmp = 0;
- int length = usage;
+ int limit = nry * (1 - base->m_History[nrx - x]);
- gdk_gc_set_rgb_fg_color (fg2, &base->m_ForeGround2);
for (y = nry; y >= 0; y--)
{
- GdkGC *draw = fg2;
-
- if (base->m_ColorMode > 0)
- {
+ if (base->m_ColorMode == 1){// color mode == 1 gradient
GdkColor color;
- double t =
- (base->m_ColorMode == 1) ?
- (tmp / (double) (nry)) :
- (tmp / (double) (length));
+ double t = tmp / (double) (nry);
color.red =
_lerp (t, base->m_ForeGround2.red,
base->m_ForeGround3.red);
@@ -103,33 +90,31 @@
color.blue =
_lerp (t, base->m_ForeGround2.blue,
base->m_ForeGround3.blue);
- gdk_gc_set_rgb_fg_color (fg1, &color);
+ gdk_gc_set_rgb_fg_color (fg2, &color);
tmp++;
- draw = fg1;
}
-
gdk_draw_rectangle (da->window,
- draw,
+ (y > limit) ? fg1 : fg2,
TRUE, x * 3, y * 2, 2, 1);
}
}
}
-/*** MODE 2 ***/
-void drawGraphMode2(CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h){
- int y;
- long usage = h * base->m_History[0] / CPU_SCALE;
- int tmp = 0;
- int length = usage;
+/*** MODE 2 : No History ***/
+void drawGraphNoHistory(CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h){
+ int y, tmp, limit;
+ long usage = h * base->m_History[0];
- for (y = h; y >= h - usage; y--)
- {
- if (base->m_ColorMode > 0)
- {
+ if (base->m_ColorMode == 0) { /* none color mode */
+ gdk_gc_set_rgb_fg_color (fg1, &base->m_ForeGround1);
+ /* gdk_draw_rectangle(xMin, yMin, xLength, yLength) origin=top-left */
+ gdk_draw_rectangle (da->window, fg1, TRUE, 0, h-usage, w, usage);
+ }else if(base->m_ColorMode == 1){ /* color mode == 1 : gradient */
+ tmp = 0;
+ limit = h-1-usage;
+ for (y = h-1; y >= limit; y--){
GdkColor color;
- double t =
- (base->m_ColorMode == 1) ? (tmp / (double) (h)) :
- (tmp / (double) (length));
+ double t = tmp / (double) (h);
color.red =
_lerp (t, base->m_ForeGround1.red,
base->m_ForeGround2.red);
@@ -139,20 +124,39 @@
color.blue =
_lerp (t, base->m_ForeGround1.blue,
base->m_ForeGround2.blue);
- gdk_gc_set_rgb_fg_color (fg2, &color);
+ gdk_gc_set_rgb_fg_color (fg1, &color);
tmp++;
+ gdk_draw_line (da->window, fg1, 0, y, w-1, y);
}
- gdk_draw_line (da->window,
- (base->m_ColorMode > 0) ? fg2 : fg1,
- 0, y, w, y);
}
}
-/*** MODE 4 ***/
-void drawGraphMode4(CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int h){
- gdk_draw_rectangle (da->window,
- fg1,
- TRUE,
- 0, (h - (base->m_History[0]*h/CPU_SCALE)),
- w, (base->m_History[0]*h/CPU_SCALE));
+/*** MODE 3 : Grid ***/
+void drawGraphGrid (CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h){
+ int nrx = w / 6.0;
+ int nry = h / 4.0;
+ int x, y;
+
+ point last, current;
+ last.x = -1;
+
+ /* draw grid */
+ gdk_gc_set_rgb_fg_color (fg1, &base->m_ForeGround1);
+ for(x = nrx; x >= 0; x--){
+ gdk_draw_line (da->window, fg1, x*6, 0, x*6, h);
+ }
+ for(y = nry; y>=0; y--){
+ gdk_draw_line (da->window, fg1, 0, y*4, w, y*4);
+ }
+
+ /* draw data */
+ gdk_gc_set_rgb_fg_color (fg2, &base->m_ForeGround2);
+ for (x = w; x >= 0; x--)
+ {
+ current.x = x;
+ current.y = (h-1) * (1-base->m_History[w - x]);
+ if(last.x == -1) last = current;
+ gdk_draw_line (da->window, fg2, current.x, current.y, last.x, last.y);
+ last = current;
+ }
}
Modified: xfce4-cpugraph-plugin/trunk/panel-plugin/mode.h
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/mode.h 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/mode.h 2007-11-22 07:17:50 UTC (rev 3613)
@@ -1,3 +1,26 @@
+/* mode.h
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
#ifndef __XFCE_MODE_H__
#define __XFCE_MODE_H__
@@ -3,8 +26,14 @@
#include "cpu.h"
-void drawGraphMode0(CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int h);
-void drawGraphMode1(CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h);
-void drawGraphMode2(CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h);
-void drawGraphMode4(CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int h);
+typedef struct {
+ long x;
+ long y;
+} point;
+
+void drawGraphNormal(CPUGraph *base, GdkGC *fg1, GtkWidget *da, int w, int h);
+void drawGraphLED(CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h);
+void drawGraphNoHistory(CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h);
+void drawGraphGrid(CPUGraph *base, GdkGC *fg1, GdkGC *fg2, GtkWidget *da, int w, int h);
+
#endif
Added: xfce4-cpugraph-plugin/trunk/panel-plugin/option.c
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/option.c (rev 0)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/option.c 2007-11-22 07:17:50 UTC (rev 3613)
@@ -0,0 +1,386 @@
+/* option.c
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "option.h"
+
+static void
+DialogResponse (GtkWidget *dlg, int response, CPUGraph *base)
+{
+ ApplyChanges (base);
+ gtk_widget_destroy (dlg);
+ xfce_panel_plugin_unblock_menu (base->plugin);
+ WriteSettings (base->plugin, base);
+}
+
+
+void
+CreateOptions (XfcePanelPlugin *plugin, CPUGraph *base)
+{
+ GtkWidget *dlg, *header;
+ GtkBox *vbox, *vbox2, *hbox;
+ GtkWidget *label;
+ GtkSizeGroup *sg;
+ SOptions *op = &base->m_Options;
+
+ xfce_panel_plugin_block_menu (plugin);
+
+ dlg = gtk_dialog_new_with_buttons (_("Configure CPU Graph"),
+ GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
+ GTK_DIALOG_DESTROY_WITH_PARENT |
+ GTK_DIALOG_NO_SEPARATOR,
+ GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
+ NULL);
+
+ base->m_OptionsDialog = dlg;
+
+ g_signal_connect (dlg, "response", G_CALLBACK (DialogResponse), base);
+
+ gtk_container_set_border_width (GTK_CONTAINER (dlg), 2);
+
+ header = xfce_create_header (NULL, _("CPU Graph"));
+ gtk_widget_set_size_request (GTK_BIN (header)->child, -1, 32);
+ gtk_container_set_border_width (GTK_CONTAINER (header), BORDER - 2);
+ gtk_widget_show (header);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), header,
+ FALSE, TRUE, 0);
+
+ vbox = GTK_BOX (gtk_vbox_new(FALSE, BORDER));
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), BORDER );
+ gtk_widget_show(GTK_WIDGET (vbox));
+
+ sg = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+ /* Update Interval */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+ label = gtk_label_new (_("Update Interval: "));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+
+ op->m_UpdateOption = gtk_option_menu_new ();
+ gtk_widget_show (op->m_UpdateOption);
+ gtk_box_pack_start (GTK_BOX (hbox), op->m_UpdateOption, FALSE, FALSE, 0);
+
+ op->m_UpdateMenu = gtk_menu_new ();
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (op->m_UpdateOption),
+ op->m_UpdateMenu);
+
+ op->m_UpdateMenuItem =
+ gtk_menu_item_new_with_label (_("Fastest (~250ms)"));
+ gtk_widget_show (op->m_UpdateMenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_UpdateMenu),
+ op->m_UpdateMenuItem);
+
+ op->m_UpdateMenuItem = gtk_menu_item_new_with_label (_("Fast (~500ms)"));
+ gtk_widget_show (op->m_UpdateMenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_UpdateMenu),
+ op->m_UpdateMenuItem);
+
+ op->m_UpdateMenuItem =
+ gtk_menu_item_new_with_label (_("Normal (~750ms)"));
+ gtk_widget_show (op->m_UpdateMenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_UpdateMenu),
+ op->m_UpdateMenuItem);
+
+ op->m_UpdateMenuItem = gtk_menu_item_new_with_label (_("Slow (~1s)"));
+ gtk_widget_show (op->m_UpdateMenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_UpdateMenu),
+ op->m_UpdateMenuItem);
+
+ gtk_option_menu_set_history (GTK_OPTION_MENU (op->m_UpdateOption),
+ base->m_UpdateInterval);
+
+ g_signal_connect (op->m_UpdateOption, "changed",
+ G_CALLBACK (UpdateChange), base);
+
+ /* Width */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+
+ if (xfce_panel_plugin_get_orientation (plugin) ==
+ GTK_ORIENTATION_HORIZONTAL)
+ label = gtk_label_new (_("Width:"));
+ else
+ label = gtk_label_new (_("Height:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+
+ op->m_Width =
+ gtk_spin_button_new_with_range (10, 128, 1);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (op->m_Width), base->m_Width);
+ gtk_widget_show (op->m_Width);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_Width), FALSE,
+ FALSE, 0);
+ g_signal_connect (op->m_Width, "value-changed", G_CALLBACK (SpinChange),
+ &base->m_Width);
+
+ /* Frame */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+
+ op->m_GraphFrame = gtk_check_button_new_with_mnemonic (_("Show frame"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (op->m_GraphFrame),
+ base->m_Frame);
+ gtk_widget_show (op->m_GraphFrame);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_GraphFrame), FALSE,
+ FALSE, 0);
+ g_signal_connect (op->m_GraphFrame, "toggled", G_CALLBACK (FrameChange),
+ base);
+ gtk_size_group_add_widget (sg, op->m_GraphFrame);
+
+ vbox2 = GTK_BOX (gtk_vbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (vbox2));
+ gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
+
+ /* Associate Command */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+ label = gtk_label_new (_("Associated command :"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+ op->m_AssociateCommand = gtk_entry_new ();
+ gtk_entry_set_max_length (GTK_ENTRY(op->m_AssociateCommand), 32);
+ gtk_entry_set_text (GTK_ENTRY(op->m_AssociateCommand), base->m_AssociateCommand);
+ gtk_widget_show (op->m_AssociateCommand);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_AssociateCommand), FALSE, FALSE, 0);
+ g_signal_connect (op->m_AssociateCommand, "changed", G_CALLBACK (AssociateCommandChange), base);
+
+ /* Foreground 1 */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+
+ label = gtk_label_new (_("Color 1:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+
+ op->m_FG1 = gtk_button_new ();
+ op->m_ColorDA = gtk_drawing_area_new ();
+
+ gtk_widget_modify_bg (op->m_ColorDA, GTK_STATE_NORMAL,
+ &base->m_ForeGround1);
+ gtk_widget_set_size_request (op->m_ColorDA, 12, 12);
+ gtk_container_add (GTK_CONTAINER (op->m_FG1), op->m_ColorDA);
+ gtk_widget_show (GTK_WIDGET (op->m_FG1));
+ gtk_widget_show (GTK_WIDGET (op->m_ColorDA));
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_FG1), FALSE, FALSE,
+ 0);
+
+ g_signal_connect (op->m_FG1, "clicked", G_CALLBACK (ChangeColor1), base);
+
+ /* Foreground2 */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+
+ label = gtk_label_new (_("Color 2:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+
+ op->m_FG2 = gtk_button_new ();
+ op->m_ColorDA2 = gtk_drawing_area_new ();
+
+ gtk_widget_modify_bg (op->m_ColorDA2, GTK_STATE_NORMAL,
+ &base->m_ForeGround2);
+ gtk_widget_set_size_request (op->m_ColorDA2, 12, 12);
+ gtk_container_add (GTK_CONTAINER (op->m_FG2), op->m_ColorDA2);
+ gtk_widget_show (GTK_WIDGET (op->m_FG2));
+ gtk_widget_show (GTK_WIDGET (op->m_ColorDA2));
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_FG2), FALSE, FALSE,
+ 0);
+
+ g_signal_connect (op->m_FG2, "clicked", G_CALLBACK (ChangeColor2), base);
+
+ if (base->m_Mode == 1)
+ gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG2), TRUE);
+
+ /* Foreground3 */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+
+ label = gtk_label_new (_("Color 3:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+ op->m_FG3 = gtk_button_new ();
+ op->m_ColorDA5 = gtk_drawing_area_new ();
+ gtk_widget_modify_bg (op->m_ColorDA5, GTK_STATE_NORMAL,
+ &base->m_ForeGround3);
+ gtk_widget_set_size_request (op->m_ColorDA5, 12, 12);
+ gtk_container_add (GTK_CONTAINER (op->m_FG3), op->m_ColorDA5);
+ gtk_widget_show (GTK_WIDGET (op->m_FG3));
+ gtk_widget_show (GTK_WIDGET (op->m_ColorDA5));
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_FG3), FALSE, FALSE,
+ 0);
+ g_signal_connect (op->m_FG3, "clicked", G_CALLBACK (ChangeColor4), base);
+
+ if (base->m_Mode == 0 || base->m_Mode == 2 || base->m_ColorMode == 0)
+ gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG3), FALSE);
+ else
+ gtk_widget_set_sensitive (GTK_WIDGET (base->m_Options.m_FG3), TRUE);
+
+
+ /* Background */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+
+ label = gtk_label_new (_("Background:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+
+ op->m_BG = gtk_button_new ();
+ op->m_ColorDA3 = gtk_drawing_area_new ();
+
+ gtk_widget_modify_bg (op->m_ColorDA3, GTK_STATE_NORMAL,
+ &base->m_BackGround);
+ gtk_widget_set_size_request (op->m_ColorDA3, 12, 12);
+ gtk_container_add (GTK_CONTAINER (op->m_BG), op->m_ColorDA3);
+ gtk_widget_show (GTK_WIDGET (op->m_BG));
+ gtk_widget_show (GTK_WIDGET (op->m_ColorDA3));
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (op->m_BG), FALSE, FALSE,
+ 0);
+
+ g_signal_connect (op->m_BG, "clicked", G_CALLBACK (ChangeColor3), base);
+
+ /* Modes */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+
+ label = gtk_label_new (_("Mode:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+
+ op->m_OptionMenu = gtk_option_menu_new ();
+ gtk_widget_show (op->m_OptionMenu);
+ gtk_box_pack_start (GTK_BOX (hbox), op->m_OptionMenu, FALSE, FALSE, 0);
+
+ op->m_Menu = gtk_menu_new ();
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (op->m_OptionMenu), op->m_Menu);
+
+ op->m_MenuItem = gtk_menu_item_new_with_label (_("Normal"));
+ gtk_widget_show (op->m_MenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_Menu), op->m_MenuItem);
+
+ op->m_MenuItem = gtk_menu_item_new_with_label (_("LED"));
+ gtk_widget_show (op->m_MenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_Menu), op->m_MenuItem);
+
+ op->m_MenuItem = gtk_menu_item_new_with_label (_("No history"));
+ gtk_widget_show (op->m_MenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_Menu), op->m_MenuItem);
+
+ op->m_MenuItem = gtk_menu_item_new_with_label (_("Grid"));
+ gtk_widget_show (op->m_MenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_Menu), op->m_MenuItem);
+
+
+ gtk_option_menu_set_history (GTK_OPTION_MENU (op->m_OptionMenu),
+ base->m_Mode);
+
+ g_signal_connect (op->m_OptionMenu, "changed", G_CALLBACK (ModeChange),
+ base);
+
+ /* Color mode */
+
+ hbox = GTK_BOX (gtk_hbox_new (FALSE, BORDER));
+ gtk_widget_show (GTK_WIDGET (hbox));
+ gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (hbox), FALSE, FALSE, 0);
+ label = gtk_label_new (_("Color mode: "));
+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ gtk_size_group_add_widget (sg, label);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (label), FALSE, FALSE, 0);
+
+ op->m_ModeOption = gtk_option_menu_new ();
+ gtk_widget_show (op->m_ModeOption);
+ gtk_box_pack_start (GTK_BOX (hbox), op->m_ModeOption, FALSE, FALSE, 0);
+
+ op->m_ModeMenu = gtk_menu_new ();
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (op->m_ModeOption),
+ op->m_ModeMenu);
+
+ op->m_ModeMenuItem = gtk_menu_item_new_with_label (_("None"));
+ gtk_widget_show (op->m_ModeMenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_ModeMenu),
+ op->m_ModeMenuItem);
+
+ op->m_ModeMenuItem = gtk_menu_item_new_with_label (_("Gradient"));
+ gtk_widget_show (op->m_ModeMenuItem);
+ gtk_menu_shell_append (GTK_MENU_SHELL (op->m_ModeMenu),
+ op->m_ModeMenuItem);
+
+ gtk_option_menu_set_history (GTK_OPTION_MENU (op->m_ModeOption),
+ base->m_ColorMode);
+
+ g_signal_connect (op->m_ModeOption, "changed",
+ G_CALLBACK (ColorModeChange), base);
+
+ gtk_widget_show_all (GTK_WIDGET (hbox));
+
+ op->m_Notebook = gtk_notebook_new ();
+ gtk_container_set_border_width (GTK_CONTAINER (op->m_Notebook),
+ BORDER - 2);
+ label = gtk_label_new (_("Appearance"));
+ gtk_notebook_append_page (GTK_NOTEBOOK (op->m_Notebook),
+ GTK_WIDGET (vbox2), GTK_WIDGET (label));
+ label = gtk_label_new (_("Advanced"));
+ gtk_notebook_append_page (GTK_NOTEBOOK (op->m_Notebook),
+ GTK_WIDGET (vbox), GTK_WIDGET (label));
+ gtk_widget_show (op->m_Notebook);
+
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox),
+ GTK_WIDGET (op->m_Notebook), TRUE, TRUE, 0);
+
+ gtk_widget_show (dlg);
+}
Property changes on: xfce4-cpugraph-plugin/trunk/panel-plugin/option.c
___________________________________________________________________
Name: svn:eol-style
+ native
Added: xfce4-cpugraph-plugin/trunk/panel-plugin/option.h
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/option.h (rev 0)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/option.h 2007-11-22 07:17:50 UTC (rev 3613)
@@ -0,0 +1,32 @@
+/* option.h
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __XFCE_OPTION_H__
+#define __XFCE_OPTION_H__
+
+#include "cpu.h"
+
+static void DialogResponse (GtkWidget *dlg, int response, CPUGraph *base);
+void CreateOptions (XfcePanelPlugin *plugin, CPUGraph *base);
+
+#endif
Property changes on: xfce4-cpugraph-plugin/trunk/panel-plugin/option.h
___________________________________________________________________
Name: svn:eol-style
+ native
Deleted: xfce4-cpugraph-plugin/trunk/panel-plugin/os.c
Deleted: xfce4-cpugraph-plugin/trunk/panel-plugin/os.h
Added: xfce4-cpugraph-plugin/trunk/panel-plugin/settings.c
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/settings.c (rev 0)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/settings.c 2007-11-22 07:17:50 UTC (rev 3613)
@@ -0,0 +1,186 @@
+/* settings.c
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "cpu.h"
+#include "settings.h"
+
+void
+ReadSettings (XfcePanelPlugin * plugin, CPUGraph * base)
+{
+ const char *value;
+ char *file;
+ XfceRc *rc;
+ int update;
+
+ base->m_Width = 60;
+
+ base->m_ForeGround1.red = 0;
+ base->m_ForeGround1.green = 65535;
+ base->m_ForeGround1.blue = 0;
+
+ base->m_ForeGround2.red = 65535;
+ base->m_ForeGround2.green = 0;
+ base->m_ForeGround2.blue = 0;
+
+ base->m_ForeGround3.red = 0;
+ base->m_ForeGround3.green = 0;
+ base->m_ForeGround3.blue = 65535;
+
+ base->m_BackGround.red = 65535;
+ base->m_BackGround.green = 65535;
+ base->m_BackGround.blue = 65535;
+
+ base->m_TimeScale = 0;
+ base->m_Frame = 0;
+ base->m_AssociateCommand = "xterm top";
+ base->m_ColorMode = 0;
+ base->m_Mode = 0;
+
+ if ((file = xfce_panel_plugin_lookup_rc_file (plugin)) != NULL)
+
+ {
+ rc = xfce_rc_simple_open (file, TRUE);
+ g_free (file);
+
+ if (rc)
+ {
+ base->m_UpdateInterval =
+ xfce_rc_read_int_entry (rc, "UpdateInterval",
+ base->m_UpdateInterval);
+
+ base->m_TimeScale =
+ xfce_rc_read_int_entry (rc, "TimeScale",
+ base->m_TimeScale);
+
+ base->m_Width =
+ xfce_rc_read_int_entry (rc, "Width", base->m_Width);
+
+ base->m_Mode = xfce_rc_read_int_entry (rc, "Mode", base->m_Mode);
+
+ base->m_Frame =
+ xfce_rc_read_int_entry (rc, "Frame", base->m_Frame);
+
+ if (value = xfce_rc_read_entry (rc, "AssociateCommand", base->m_AssociateCommand)) {
+ base->m_AssociateCommand = g_strdup(value);
+ }
+
+ base->m_ColorMode =
+ xfce_rc_read_int_entry (rc, "ColorMode", base->m_ColorMode);
+
+ if ((value = xfce_rc_read_entry (rc, "Foreground1", NULL)))
+ {
+ gdk_color_parse (value, &base->m_ForeGround1);
+ }
+ if ((value = xfce_rc_read_entry (rc, "Foreground2", NULL)))
+ {
+ gdk_color_parse (value, &base->m_ForeGround2);
+ }
+ if ((value = xfce_rc_read_entry (rc, "Background", NULL)))
+ {
+ gdk_color_parse (value, &base->m_BackGround);
+ }
+ if ((value = xfce_rc_read_entry (rc, "Foreground3", NULL)))
+ {
+ gdk_color_parse (value, &base->m_ForeGround3);
+ }
+
+ xfce_rc_close (rc);
+ }
+ }
+
+ SetHistorySize (base, base->m_Width);
+
+ if (base->m_TimeoutID)
+ g_source_remove (base->m_TimeoutID);
+ switch (base->m_UpdateInterval)
+ {
+ case 0:
+ update = 250;
+ break;
+ case 1:
+ update = 500;
+ break;
+ case 2:
+ update = 750;
+ break;
+ default:
+ update = 1000;
+ }
+ base->m_TimeoutID = g_timeout_add (update, (GtkFunction) UpdateCPU, base);
+
+ gtk_frame_set_shadow_type (GTK_FRAME (base->m_FrameWidget),
+ base->m_Frame ? GTK_SHADOW_IN : GTK_SHADOW_NONE);
+}
+
+void
+WriteSettings (XfcePanelPlugin *plugin, CPUGraph *base)
+{
+ char value[10];
+ XfceRc *rc;
+ char *file;
+
+ if (!(file = xfce_panel_plugin_save_location (plugin, TRUE)))
+ return;
+
+ rc = xfce_rc_simple_open (file, FALSE);
+ g_free (file);
+
+ if (!rc)
+ return;
+
+ xfce_rc_write_int_entry (rc, "UpdateInterval", base->m_UpdateInterval);
+
+ xfce_rc_write_int_entry (rc, "TimeScale", base->m_TimeScale);
+
+ xfce_rc_write_int_entry (rc, "Width", base->m_Width);
+
+ xfce_rc_write_int_entry (rc, "Mode", base->m_Mode);
+
+ xfce_rc_write_int_entry (rc, "Frame", base->m_Frame);
+
+ xfce_rc_write_entry (rc, "AssociateCommand", base->m_AssociateCommand ? base->m_AssociateCommand : "");
+
+ xfce_rc_write_int_entry (rc, "ColorMode", base->m_ColorMode);
+
+ g_snprintf (value, 8, "#%02X%02X%02X", base->m_ForeGround1.red >> 8,
+ base->m_ForeGround1.green >> 8,
+ base->m_ForeGround1.blue >> 8);
+ xfce_rc_write_entry (rc, "Foreground1", value);
+
+ g_snprintf (value, 8, "#%02X%02X%02X", base->m_ForeGround2.red >> 8,
+ base->m_ForeGround2.green >> 8,
+ base->m_ForeGround2.blue >> 8);
+ xfce_rc_write_entry (rc, "Foreground2", value);
+
+ g_snprintf (value, 8, "#%02X%02X%02X", base->m_BackGround.red >> 8,
+ base->m_BackGround.green >> 8,
+ base->m_BackGround.blue >> 8);
+ xfce_rc_write_entry (rc, "Background", value);
+
+ g_snprintf (value, 8, "#%02X%02X%02X", base->m_ForeGround3.red >> 8,
+ base->m_ForeGround3.green >> 8,
+ base->m_ForeGround3.blue >> 8);
+ xfce_rc_write_entry (rc, "Foreground3", value);
+
+ xfce_rc_close (rc);
+}
Property changes on: xfce4-cpugraph-plugin/trunk/panel-plugin/settings.c
___________________________________________________________________
Name: svn:eol-style
+ native
Added: xfce4-cpugraph-plugin/trunk/panel-plugin/settings.h
===================================================================
--- xfce4-cpugraph-plugin/trunk/panel-plugin/settings.h (rev 0)
+++ xfce4-cpugraph-plugin/trunk/panel-plugin/settings.h 2007-11-22 07:17:50 UTC (rev 3613)
@@ -0,0 +1,31 @@
+/* settings.h
+ * Part of xfce4-cpugraph-plugin
+ *
+ * Copyright (c) Alexander Nordfelth <alex.nordfelth at telia.com>
+ * Copyright (c) gatopeich <gatoguan-os at yahoo.com>
+ * Copyright (c) 2007-2008 Angelo Arrifano <miknix at gmail.com>
+ * Copyright (c) 2007-2008 Lidiriel <lidiriel at coriolys.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __XFCE_SETTINGS_H__
+#define __XFCE_SETTINGS_H__
+
+void ReadSettings (XfcePanelPlugin * plugin, CPUGraph * base);
+void WriteSettings (XfcePanelPlugin *plugin, CPUGraph *base);
+
+
+#endif
Property changes on: xfce4-cpugraph-plugin/trunk/panel-plugin/settings.h
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: xfce4-cpugraph-plugin/trunk/po/POTFILES.in
===================================================================
--- xfce4-cpugraph-plugin/trunk/po/POTFILES.in 2007-11-21 00:30:55 UTC (rev 3612)
+++ xfce4-cpugraph-plugin/trunk/po/POTFILES.in 2007-11-22 07:17:50 UTC (rev 3613)
@@ -1,4 +1,7 @@
panel-plugin/cpu.c
-panel-plugin/os.c
+panel-plugin/cpu_os.c
+panel-plugin/mode.c
+panel-plugin/option.c
+panel-plugin/settings.c
panel-plugin/cpugraph.desktop.in.in
More information about the Goodies-commits
mailing list