[Xfce4-commits] <xfce4-cpugraph-plugin:master> Split the code into more files

Florian noreply at xfce.org
Sat Apr 17 16:16:13 CEST 2010


Updating branch refs/heads/master
         to 154acbbd84006189593ac4cf9eac9566ec088f4a (commit)
       from f66c35895bea6dcd3c30df800bf5312f2d606871 (commit)

commit 154acbbd84006189593ac4cf9eac9566ec088f4a
Author: Florian Rivoal <frivoal at gmail.com>
Date:   Wed Feb 10 10:30:29 2010 +0900

    Split the code into more files
    
    Make smaller, easier to manage files by breaking up the (too large for
    my taste) cpu.c.

 panel-plugin/Makefile.am  |    6 +-
 panel-plugin/actions.c    |  228 +++++++++++++++
 panel-plugin/actions.h    |   17 +
 panel-plugin/cpu.c        |  713 ---------------------------------------------
 panel-plugin/cpu.h        |   17 +-
 panel-plugin/properties.c |  332 +++++++++++++++++++++
 panel-plugin/settings.c   |  155 ++++++++++
 7 files changed, 738 insertions(+), 730 deletions(-)

diff --git a/panel-plugin/Makefile.am b/panel-plugin/Makefile.am
index c69a517..8568206 100644
--- a/panel-plugin/Makefile.am
+++ b/panel-plugin/Makefile.am
@@ -14,7 +14,11 @@ xfce4_cpugraph_plugin_SOURCES =					\
 	cpu.c							\
 	cpu.h							\
 	os.c							\
-	os.h
+	os.h                                                    \
+	properties.c                                            \
+	settings.c                                              \
+	actions.c                                               \
+	actions.h
 
 # .desktop file
 #
diff --git a/panel-plugin/actions.c b/panel-plugin/actions.c
new file mode 100644
index 0000000..ad12748
--- /dev/null
+++ b/panel-plugin/actions.c
@@ -0,0 +1,228 @@
+#include <actions.h>
+
+void AssociateCommandChange( GtkEntry *entry, CPUGraph * base )
+{
+	g_free (base->m_AssociateCommand );
+	base->m_AssociateCommand = g_strdup( gtk_entry_get_text( entry ) );
+}
+
+void ChangeColor( int color, CPUGraph * base )
+{
+	GtkWidget *dialog;
+	GtkColorSelection *colorsel;
+	gint response;
+
+	dialog = gtk_color_selection_dialog_new( "Select color" );
+	gtk_window_set_transient_for( GTK_WINDOW( dialog ), GTK_WINDOW( base->m_OptionsDialog ) );
+
+	colorsel = GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dialog )->colorsel );
+
+	if( color == 0 )
+	{
+		gtk_color_selection_set_previous_color( colorsel, &base->m_ForeGround1 );
+		gtk_color_selection_set_current_color( colorsel, &base->m_ForeGround1 );
+	}
+	else if( color == 1 )
+	{
+		gtk_color_selection_set_previous_color( colorsel, &base->m_ForeGround2 );
+		gtk_color_selection_set_current_color( colorsel, &base->m_ForeGround2 );
+	}
+	else if( color == 2 )
+	{
+		gtk_color_selection_set_previous_color( colorsel, &base->m_BackGround );
+		gtk_color_selection_set_current_color( colorsel, &base->m_BackGround );
+	}
+	else if( color == 3 )
+	{
+		gtk_color_selection_set_previous_color( colorsel, &base->m_ForeGround3 );
+		gtk_color_selection_set_current_color( colorsel, &base->m_ForeGround3 );
+	}
+
+	gtk_color_selection_set_has_palette( colorsel, TRUE );
+
+	response = gtk_dialog_run( GTK_DIALOG( dialog ) );
+	if( response == GTK_RESPONSE_OK )
+	{
+		if( color == 0 )
+		{
+			gtk_color_selection_get_current_color( colorsel, &base->m_ForeGround1 );
+			gtk_widget_modify_bg( base->m_Options.m_ColorDA, GTK_STATE_NORMAL, &base->m_ForeGround1 );
+		}
+		else if( color == 1 )
+		{
+			gtk_color_selection_get_current_color( colorsel, &base->m_ForeGround2 );
+			gtk_widget_modify_bg( base->m_Options.m_ColorDA2, GTK_STATE_NORMAL, &base->m_ForeGround2 );
+		}
+		else if( color == 2 )
+		{
+			gtk_color_selection_get_current_color( colorsel, &base->m_BackGround );
+			gtk_widget_modify_bg( base->m_Options.m_ColorDA3, GTK_STATE_NORMAL, &base->m_BackGround );
+		}
+		else if( color == 3 )
+		{
+			gtk_color_selection_get_current_color( colorsel, &base->m_ForeGround3 );
+			gtk_widget_modify_bg( base->m_Options.m_ColorDA5, GTK_STATE_NORMAL, &base->m_ForeGround3 );
+		}
+	}
+
+	gtk_widget_destroy( dialog );
+
+}
+
+void ChangeColor1( GtkButton * button, CPUGraph * base )
+{
+	ChangeColor( 0, base );
+}
+
+void ChangeColor2( GtkButton * button, CPUGraph * base )
+{
+	ChangeColor( 1, base );
+}
+
+void ChangeColor3( GtkButton * button, CPUGraph * base )
+{
+	ChangeColor( 2, base );
+}
+
+void ChangeColor4( GtkButton * button, CPUGraph * base )
+{
+	ChangeColor( 3, base );
+}
+
+void ColorModeChange( GtkOptionMenu * om, CPUGraph * base )
+{
+	base->m_ColorMode = gtk_option_menu_get_history( om );
+	if( base->m_ColorMode == 0 )
+	{
+		if( base->m_Mode == 0 || base->m_Mode == 2 )
+			gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), FALSE );
+		else
+			gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), TRUE );
+		gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG3 ), FALSE );
+	}
+	else if( base->m_ColorMode == 1 )
+	{
+		gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), TRUE );
+		if( base->m_Mode == 1 )
+			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 );
+	}
+	else if( base->m_ColorMode == 2 )
+	{
+		gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), TRUE );
+		if( base->m_Mode == 1 )
+			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 );
+	}
+	else if( base->m_ColorMode == 3 )
+	{
+		gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), TRUE );
+		if( base->m_Mode == 1 )
+			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 );
+	}
+}
+
+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 ApplyChanges( CPUGraph * base )
+{
+	int update;
+
+	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 );
+
+	UserSetSize( base );
+	SetHistorySize( base, base->m_Width );
+}
+
+void FrameChange( GtkToggleButton * button, CPUGraph * base )
+{
+	base->m_Frame = gtk_toggle_button_get_active( button );
+	gtk_frame_set_shadow_type( GTK_FRAME( base->m_FrameWidget ), base->m_Frame ? GTK_SHADOW_IN : GTK_SHADOW_NONE );
+}
+
+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 );
+	}
+}
+
+void SpinChange( GtkSpinButton * sb, int *value )
+{
+	(*value) = gtk_spin_button_get_value_as_int( sb );
+}
+
+void TimeScaleChange( GtkToggleButton * button, CPUGraph * base )
+{
+	base->m_TimeScale = gtk_toggle_button_get_active( button );
+}
+
+void UpdateChange( GtkOptionMenu * om, CPUGraph * base )
+{
+	base->m_UpdateInterval = gtk_option_menu_get_history( om );
+}
+
+void SetHistorySize( CPUGraph * base, int size )
+{
+	int i;
+	base->m_History = (long *) g_realloc( base->m_History, 2 * size * sizeof( long ) );
+
+	base->m_CpuData = cpuData_read();
+	base->m_CpuData[0].pUsed = 0;
+	base->m_CpuData[0].pTotal = 0;
+	long usage = base->m_CpuData[0].load;
+	for( i = size - 1; i >= base->m_Values; i-- )
+	{
+		base->m_History[i] = usage;
+		base->m_History[i+size] = base->m_CpuData[0].scalCurFreq;
+	}
+	base->m_Values = size;
+}
diff --git a/panel-plugin/actions.h b/panel-plugin/actions.h
new file mode 100644
index 0000000..20c4204
--- /dev/null
+++ b/panel-plugin/actions.h
@@ -0,0 +1,17 @@
+#include <cpu.h>
+
+void AssociateCommandChange( GtkEntry *entry, CPUGraph *base );
+void ChangeColor( int color, CPUGraph *base );
+void ChangeColor1( GtkButton *button, CPUGraph *base );
+void ChangeColor2( GtkButton *button, CPUGraph *base );
+void ChangeColor3( GtkButton *button, CPUGraph *base );
+void ChangeColor4( GtkButton *button, CPUGraph *base );
+void ColorModeChange( GtkOptionMenu *om, CPUGraph *base );
+void DialogResponse( GtkWidget *dlg, int response, CPUGraph *base );
+void ApplyChanges( CPUGraph *base );
+void FrameChange( GtkToggleButton *button, CPUGraph *base );
+void ModeChange( GtkOptionMenu *om, CPUGraph *base );
+void SpinChange( GtkSpinButton *sb, int *value );
+void TimeScaleChange( GtkToggleButton *button, CPUGraph *base );
+void UpdateChange( GtkOptionMenu *om, CPUGraph *base );
+void SetHistorySize( CPUGraph * base, int size );
diff --git a/panel-plugin/cpu.c b/panel-plugin/cpu.c
index a2bcd01..3e6cbf3 100644
--- a/panel-plugin/cpu.c
+++ b/panel-plugin/cpu.c
@@ -50,159 +50,6 @@ void Kill( XfcePanelPlugin * plugin, CPUGraph * base )
 	g_free( base );
 }
 
-void ReadSettings( XfcePanelPlugin * plugin, CPUGraph * base )
-{
-	const char *value;
-	char *file;
-	XfceRc *rc;
-	int update;
-
-	base->m_Width = 70;
-
-	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 = NULL;
-	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", DEFAULT_COMMAND ) ) {
-				base->m_AssociateCommand = g_strdup(value);
-			}
-			else
-			{
-				base->m_AssociateCommand = g_strdup( DEFAULT_COMMAND );
-			}
-
-			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 );
-		}
-	}
-	else
-	{
-		base->m_AssociateCommand = g_strdup( DEFAULT_COMMAND );
-	}
-	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 );
-}
 
 CPUGraph * CreateControl( XfcePanelPlugin * plugin )
 {
@@ -356,345 +203,6 @@ void UserSetSize( CPUGraph * 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 )
 {
 	gint i;
@@ -776,184 +284,6 @@ void DrawAreaExposeEvent( GtkWidget * da, GdkEventExpose * event, gpointer data
 	DrawGraph( base );
 }
 
-void SpinChange( GtkSpinButton * sb, int *value )
-{
-	(*value) = gtk_spin_button_get_value_as_int( sb );
-}
-
-void ApplyChanges( CPUGraph * base )
-{
-	int update;
-
-	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 );
-
-	UserSetSize( base );
-	SetHistorySize( base, base->m_Width );
-}
-
-void ChangeColor1( GtkButton * button, CPUGraph * base )
-{
-	ChangeColor( 0, base );
-}
-
-void ChangeColor2( GtkButton * button, CPUGraph * base )
-{
-	ChangeColor( 1, base );
-}
-
-void ChangeColor3( GtkButton * button, CPUGraph * base )
-{
-	ChangeColor( 2, base );
-}
-
-void ChangeColor4( GtkButton * button, CPUGraph * base )
-{
-	ChangeColor( 3, base );
-}
-
-void ChangeColor( int color, CPUGraph * base )
-{
-	GtkWidget *dialog;
-	GtkColorSelection *colorsel;
-	gint response;
-
-	dialog = gtk_color_selection_dialog_new( "Select color" );
-	gtk_window_set_transient_for( GTK_WINDOW( dialog ), GTK_WINDOW( base->m_OptionsDialog ) );
-
-	colorsel = GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dialog )->colorsel );
-
-	if( color == 0 )
-	{
-		gtk_color_selection_set_previous_color( colorsel, &base->m_ForeGround1 );
-		gtk_color_selection_set_current_color( colorsel, &base->m_ForeGround1 );
-	}
-	else if( color == 1 )
-	{
-		gtk_color_selection_set_previous_color( colorsel, &base->m_ForeGround2 );
-		gtk_color_selection_set_current_color( colorsel, &base->m_ForeGround2 );
-	}
-	else if( color == 2 )
-	{
-		gtk_color_selection_set_previous_color( colorsel, &base->m_BackGround );
-		gtk_color_selection_set_current_color( colorsel, &base->m_BackGround );
-	}
-	else if( color == 3 )
-	{
-		gtk_color_selection_set_previous_color( colorsel, &base->m_ForeGround3 );
-		gtk_color_selection_set_current_color( colorsel, &base->m_ForeGround3 );
-	}
-
-	gtk_color_selection_set_has_palette( colorsel, TRUE );
-
-	response = gtk_dialog_run( GTK_DIALOG( dialog ) );
-	if( response == GTK_RESPONSE_OK )
-	{
-		if( color == 0 )
-		{
-			gtk_color_selection_get_current_color( colorsel, &base->m_ForeGround1 );
-			gtk_widget_modify_bg( base->m_Options.m_ColorDA, GTK_STATE_NORMAL, &base->m_ForeGround1 );
-		}
-		else if( color == 1 )
-		{
-			gtk_color_selection_get_current_color( colorsel, &base->m_ForeGround2 );
-			gtk_widget_modify_bg( base->m_Options.m_ColorDA2, GTK_STATE_NORMAL, &base->m_ForeGround2 );
-		}
-		else if( color == 2 )
-		{
-			gtk_color_selection_get_current_color( colorsel, &base->m_BackGround );
-			gtk_widget_modify_bg( base->m_Options.m_ColorDA3, GTK_STATE_NORMAL, &base->m_BackGround );
-		}
-		else if( color == 3 )
-		{
-			gtk_color_selection_get_current_color( colorsel, &base->m_ForeGround3 );
-			gtk_widget_modify_bg( base->m_Options.m_ColorDA5, GTK_STATE_NORMAL, &base->m_ForeGround3 );
-		}
-	}
-
-	gtk_widget_destroy( dialog );
-
-}
-
-void SetHistorySize( CPUGraph * base, int size )
-{
-	int i;
-	base->m_History = (long *) g_realloc( base->m_History, 2 * size * sizeof( long ) );
-
-	base->m_CpuData = cpuData_read();
-	base->m_CpuData[0].pUsed = 0;
-	base->m_CpuData[0].pTotal = 0;
-	long usage = base->m_CpuData[0].load;
-	for( i = size - 1; i >= base->m_Values; i-- )
-	{
-		base->m_History[i] = usage;
-		base->m_History[i+size] = base->m_CpuData[0].scalCurFreq;
-	}
-	base->m_Values = size;
-}
-
-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 );
-	}
-}
-
-void UpdateChange( GtkOptionMenu * om, CPUGraph * base )
-{
-	base->m_UpdateInterval = gtk_option_menu_get_history( om );
-}
-
-void FrameChange( GtkToggleButton * button, CPUGraph * base )
-{
-	base->m_Frame = gtk_toggle_button_get_active( button );
-
-	gtk_frame_set_shadow_type( GTK_FRAME( base->m_FrameWidget ), base->m_Frame ? GTK_SHADOW_IN : GTK_SHADOW_NONE );
-}
-
-void AssociateCommandChange( GtkEntry *entry, CPUGraph * base )
-{
-	g_free (base->m_AssociateCommand );
-	base->m_AssociateCommand = g_strdup( gtk_entry_get_text( entry ) );
-}
-
 gboolean LaunchCommand( GtkWidget*w,GdkEventButton *event, CPUGraph *base )
 {
 	if( event->button == 1 )
@@ -969,46 +299,3 @@ gboolean LaunchCommand( GtkWidget*w,GdkEventButton *event, CPUGraph *base )
 	}
 	return FALSE;
 }
-
-void TimeScaleChange( GtkToggleButton * button, CPUGraph * base )
-{
-	base->m_TimeScale = gtk_toggle_button_get_active( button );
-}
-
-void ColorModeChange( GtkOptionMenu * om, CPUGraph * base )
-{
-	base->m_ColorMode = gtk_option_menu_get_history( om );
-
-	if( base->m_ColorMode == 0 )
-	{
-		if( base->m_Mode == 0 || base->m_Mode == 2 )
-			gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), FALSE );
-		else
-			gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), TRUE );
-		gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG3 ), FALSE );
-	}
-	else if( base->m_ColorMode == 1 )
-	{
-		gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), TRUE );
-		if( base->m_Mode == 1 )
-			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 );
-	}
-	else if( base->m_ColorMode == 2 )
-	{
-		gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), TRUE );
-		if( base->m_Mode == 1 )
-			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 );
-	}
-	else if( base->m_ColorMode == 3 )
-	{
-		gtk_widget_set_sensitive( GTK_WIDGET( base->m_Options.m_FG2 ), TRUE );
-		if( base->m_Mode == 1 )
-			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 );
-	}
-}
diff --git a/panel-plugin/cpu.h b/panel-plugin/cpu.h
index 48ae5f9..9860912 100644
--- a/panel-plugin/cpu.h
+++ b/panel-plugin/cpu.h
@@ -110,21 +110,6 @@ void DrawGraph( CPUGraph *base );
 void DrawAreaExposeEvent( GtkWidget *da, GdkEventExpose *event, gpointer data );
 void CreateOptions( XfcePanelPlugin *plugin, CPUGraph *base );
 void SetOrientation( XfcePanelPlugin *plugin, GtkOrientation orientation, CPUGraph *base );
-void SetHistorySize( CPUGraph *base, int size );
-
-void ChangeColor1( GtkButton *button, CPUGraph *base );
-void ChangeColor2( GtkButton *button, CPUGraph *base );
-void ChangeColor3( GtkButton *button, CPUGraph *base );
-void ChangeColor4( GtkButton *button, CPUGraph *base );
-void ChangeColor( int color, CPUGraph *base );
-void SpinChange( GtkSpinButton *sb, int *value );
-void UpdateChange( GtkOptionMenu *om, CPUGraph *base );
-void ModeChange( GtkOptionMenu *om, CPUGraph *base );
-void ApplyChanges( CPUGraph *base );
-void FrameChange( GtkToggleButton *button, CPUGraph *base );
-void TimeScaleChange( GtkToggleButton *button, CPUGraph *base );
-void AssociateCommandChange( GtkEntry *entry, CPUGraph *base );
-void ColorModeChange( GtkOptionMenu *om, CPUGraph *base );
-gboolean LaunchCommand( GtkWidget *w, GdkEventButton *event, CPUGraph *base );
 
+gboolean LaunchCommand( GtkWidget *w, GdkEventButton *event, CPUGraph *base );
 #endif
diff --git a/panel-plugin/properties.c b/panel-plugin/properties.c
new file mode 100644
index 0000000..5cdf68b
--- /dev/null
+++ b/panel-plugin/properties.c
@@ -0,0 +1,332 @@
+#include <actions.h>
+
+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 );
+}
diff --git a/panel-plugin/settings.c b/panel-plugin/settings.c
new file mode 100644
index 0000000..e344660
--- /dev/null
+++ b/panel-plugin/settings.c
@@ -0,0 +1,155 @@
+#include <actions.h>
+
+void ReadSettings( XfcePanelPlugin * plugin, CPUGraph * base )
+{
+	const char *value;
+	char *file;
+	XfceRc *rc;
+	int update;
+
+	base->m_Width = 70;
+
+	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 = NULL;
+	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", DEFAULT_COMMAND ) ) {
+				base->m_AssociateCommand = g_strdup(value);
+			}
+			else
+			{
+				base->m_AssociateCommand = g_strdup( DEFAULT_COMMAND );
+			}
+
+			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 );
+		}
+	}
+	else
+	{
+		base->m_AssociateCommand = g_strdup( DEFAULT_COMMAND );
+	}
+	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 );
+}



More information about the Xfce4-commits mailing list