* added progessbars for cpu and memory usage

(Old svn revision: 1935)
This commit is contained in:
Johannes Zellner
2006-09-02 15:18:08 +00:00
parent c8e67f5285
commit 7047557d11
9 changed files with 134 additions and 19 deletions

View File

@@ -102,9 +102,32 @@ gboolean refresh_task_list(void)
g_array_free(new_task_list, TRUE);
system_status *sys_stat = g_new (system_status, 1);
get_system_status (sys_stat);
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (mem_usage_progress_bar), 1.0 - ( (gdouble) sys_stat->mem_free / sys_stat->mem_total ));
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (cpu_usage_progress_bar), get_cpu_usage(sys_stat));
g_free (sys_stat);
return TRUE;
}
gdouble get_cpu_usage(system_status *sys_stat)
{
gdouble cpu_usage = 0.0;
gint i = 0;
for(i = 0; i < task_array->len; i++)
{
struct task *tmp = &g_array_index(task_array, struct task, i);
cpu_usage += tmp->time_percentage;
}
cpu_usage = cpu_usage / (sys_stat->cpu_count * 100.0);
printf("%i\n", sys_stat->cpu_count);
return cpu_usage;
}
/*
* configurationfile support

View File

@@ -22,6 +22,7 @@
#define FUNCTIONS_H
#include <gtk/gtk.h>
#include <glib.h>
#include <dirent.h>
#include <pwd.h>
#include <sys/types.h>
@@ -45,6 +46,7 @@
#define PROC_DIR_3 "/proc"
gboolean refresh_task_list(void);
gdouble get_cpu_usage(system_status *sys_stat);
void send_signal_to_task(gchar *task_id, gchar *signal);
/* Configurationfile support */

View File

@@ -36,7 +36,9 @@ GtkWidget* create_main_window (void)
GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *system_info_box;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), _("xfce4-taskmanager"));
gtk_window_set_default_size (GTK_WINDOW (window), win_width, win_height);
@@ -46,6 +48,20 @@ GtkWidget* create_main_window (void)
gtk_container_add (GTK_CONTAINER (window), vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), 10);
system_info_box = gtk_hbox_new (FALSE, 10);
gtk_widget_show (system_info_box);
gtk_box_pack_start (GTK_BOX (vbox1), system_info_box, FALSE, TRUE, 0);
cpu_usage_progress_bar = gtk_progress_bar_new ();
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (cpu_usage_progress_bar), _("cpu usage"));
gtk_widget_show (cpu_usage_progress_bar);
gtk_box_pack_start (GTK_BOX (system_info_box), cpu_usage_progress_bar, TRUE, TRUE, 0);
mem_usage_progress_bar = gtk_progress_bar_new ();
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (mem_usage_progress_bar), _("memory usage"));
gtk_widget_show (mem_usage_progress_bar);
gtk_box_pack_start (GTK_BOX (system_info_box), mem_usage_progress_bar, TRUE, TRUE, 0);
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_show (scrolledwindow1);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

View File

@@ -46,6 +46,8 @@ GtkTreeSelection *selection;
GtkWidget *treeview;
GtkWidget *mainmenu;
GtkWidget *taskpopup;
GtkWidget *cpu_usage_progress_bar;
GtkWidget *mem_usage_progress_bar;
#define COLUMN_NAME 0
#define COLUMN_PID 1

View File

@@ -41,6 +41,13 @@ struct task
gdouble time_percentage;
};
typedef struct
{
gint mem_total;
gint mem_free;
gint cpu_count;
} system_status;
GtkWidget *main_window;
GArray *task_array;

View File

@@ -151,3 +151,63 @@ GArray *get_task_list()
return task_list;
}
gboolean get_system_status (system_status *sys_stat)
{
FILE *file;
gchar *file_name;
gchar *buffer;
buffer = g_new (gchar, 100);
file_name = g_strdup ("/proc/meminfo");
if (!g_file_test (file_name, G_FILE_TEST_EXISTS))
{
g_free(file_name);
return FALSE;
}
file = fopen (file_name, "r");
if (file)
{
while (fgets (buffer, 100, file) != NULL)
{
sscanf (buffer, "MemTotal:\t%i kB", &sys_stat->mem_total);
sscanf (buffer, "MemFree:\t%i kB", &sys_stat->mem_free);
}
fclose (file);
}
g_free (buffer);
g_free (file_name);
buffer = g_new (gchar, 100);
file_name = g_strdup ("/proc/cpuinfo");
if (!g_file_test (file_name, G_FILE_TEST_EXISTS))
{
g_free(file_name);
return FALSE;
}
file = fopen (file_name, "r");
sys_stat->cpu_count = -1;
if (file)
{
while (fgets (buffer, 100, file) != NULL)
{
sscanf (buffer, "processor : %i", &sys_stat->cpu_count);
}
fclose (file);
sys_stat->cpu_count++;
}
g_free (buffer);
g_free (file_name);
return TRUE;
}

View File

@@ -13,5 +13,6 @@
struct task get_task_details(gint pid);
GArray *get_task_list();
gboolean get_system_status(system_status *sys_stat);
#endif