Hey I'm active! :-)

This is the initial commit for the 0.4.0 xfce4-taskmanager.

New Things:
  - now you have a configuration-file
  - views are saved and restored
  - task SleepAverage display
  - few bugfixes



(Old svn revision: 1262)
This commit is contained in:
Johannes Zellner
2006-03-28 12:22:19 +00:00
parent eca8b9b0ce
commit 255757695a
11 changed files with 712 additions and 423 deletions

870
aclocal.m4 vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([xfce4-taskmanager], [0.3.2], [xfce4-taskmanger@nebulon.de])
AC_INIT([xfce4-taskmanager], [0.4.0-rc1], [xfce4-taskmanger@nebulon.de])
AM_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE([AC_PACKAGE_TARNAME()], [AC_PACKAGE_VERSION()])
AM_MAINTAINER_MODE
@@ -22,6 +22,7 @@ AC_PROG_LIBTOOL
AC_PROG_INTLTOOL
XDT_CHECK_PACKAGE([XFCE4_GUI], [libxfcegui4-1.0], [4.2.0])
XDT_CHECK_PACKAGE([XFCE4_UTIL], [libxfce4util-1.0], [4.2.0])
XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.2.0])
dnl Check for i18n support

View File

@@ -12,9 +12,9 @@
# - Modified by jacob berkman <jacob@ximian.com> to install
# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
GETTEXT_PACKAGE = fi
GETTEXT_PACKAGE = xfce4-taskmanager
PACKAGE = xfce4-taskmanager
VERSION = 0.3.2
VERSION = 0.4.0-rc1
SHELL = /bin/sh
@@ -24,7 +24,7 @@ top_srcdir = ..
top_builddir = ..
prefix = /opt/lunar/xfce4/
prefix = /usr/local
exec_prefix = ${prefix}
datadir = ${prefix}/share
libdir = ${exec_prefix}/lib
@@ -59,14 +59,14 @@ INCLUDES = -I.. -I$(top_srcdir)/intl
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
SOURCES =
POFILES = de.po
GMOFILES = de.gmo
POFILES = de.po eu.po fi.po fr.po hu.po pt_BR.po vi.po
GMOFILES = de.gmo eu.gmo fi.gmo fr.gmo hu.gmo pt_BR.gmo vi.gmo
DISTFILES = ChangeLog Makefile.in.in POTFILES.in \
$(POFILES) $(GMOFILES) $(SOURCES)
POTFILES = \
CATALOGS = de.gmo
CATALOGS = de.gmo eu.gmo fi.gmo fr.gmo hu.gmo pt_BR.gmo vi.gmo
CATOBJEXT = .gmo
INSTOBJEXT = .mo

View File

@@ -30,14 +30,8 @@ void on_button1_button_press_event(GtkButton *button, GdkEventButton *event)
void on_button3_toggled_event(GtkButton *button, GdkEventButton *event)
{
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)))
{
change_list_store(TRUE);
}
else
{
change_list_store(FALSE);
}
full_view = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
change_list_store_view();
}
gboolean on_treeview1_button_press_event(GtkButton *button, GdkEventButton *event)
@@ -91,3 +85,11 @@ void on_show_tasks_toggled (GtkMenuItem *menuitem, gint uid)
change_task_view();
}
void on_quit(void)
{
save_config();
free(config_file);
gtk_main_quit();
}

View File

@@ -37,4 +37,6 @@ void on_info1_activate (GtkMenuItem *menuitem, gpointer user_data);
void handle_task_menu(GtkWidget *widget, gchar *signal);
void on_show_tasks_toggled (GtkMenuItem *menuitem, gint uid);
void on_quit(void);
#endif

View File

@@ -86,6 +86,7 @@ gboolean refresh_task_list(void)
// fix for freebsd with linux emo
sscanf(buffer_status,"VmRss: %i",&task.rss);
sscanf(buffer_status,"State: %c",&task.state);
sscanf(buffer_status,"SleepAVG: %i",&task.sleep);
#endif
}
@@ -145,8 +146,6 @@ gboolean refresh_task_list(void)
}
}
printf("---------------------------------------------\n");
return TRUE;
}
@@ -163,14 +162,16 @@ void fill_list_item(gint i, GtkTreeIter *iter)
gchar *rss = g_strdup_printf("%i kb", task->rss);
gchar *name = g_strdup_printf("%s", task->name);
gchar *uname = g_strdup_printf("%s", task->uname);
gchar *sleep = g_strdup_printf("%i %%", task->sleep);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 0, name, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 1, pid, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 2, ppid, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 3, state, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 4, size, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 5, rss, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 6, uname, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 5, sleep, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 6, rss, -1);
gtk_list_store_set(GTK_LIST_STORE(list_store), iter, 7, uname, -1);
free(pid);
free(ppid);
@@ -179,6 +180,7 @@ void fill_list_item(gint i, GtkTreeIter *iter)
free(rss);
free(name);
free(uname);
free(sleep);
}
}
@@ -312,3 +314,44 @@ void change_task_view(void)
refresh_task_list();
}
void load_config(void)
{
XfceRc *rc_file = xfce_rc_simple_open(config_file, FALSE);
xfce_rc_set_group (rc_file, "General");
show_user_tasks = xfce_rc_read_bool_entry(rc_file, "show_user_tasks", TRUE);
show_root_tasks = xfce_rc_read_bool_entry(rc_file, "show_root_tasks", FALSE);
show_other_tasks = xfce_rc_read_bool_entry(rc_file, "show_other_tasks", FALSE);
full_view = xfce_rc_read_bool_entry(rc_file, "full_view", FALSE);
win_width = xfce_rc_read_int_entry(rc_file, "win_width", 500);
win_height = xfce_rc_read_int_entry(rc_file, "win_height", 400);
xfce_rc_close(rc_file);
}
void save_config(void)
{
XfceRc *rc_file = xfce_rc_simple_open(config_file, FALSE);
xfce_rc_set_group (rc_file, "General");
xfce_rc_write_bool_entry(rc_file, "show_user_tasks", show_user_tasks);
xfce_rc_write_bool_entry(rc_file, "show_root_tasks", show_root_tasks);
xfce_rc_write_bool_entry(rc_file, "show_other_tasks", show_other_tasks);
xfce_rc_write_bool_entry(rc_file, "full_view", full_view);
gtk_window_get_size(GTK_WINDOW (main_window), &win_width, &win_height);
xfce_rc_write_int_entry(rc_file, "win_width", win_width);
xfce_rc_write_int_entry(rc_file, "win_height", win_height);
xfce_rc_flush(rc_file);
xfce_rc_close(rc_file);
}

View File

@@ -27,6 +27,8 @@
#include <sys/types.h>
#include <stdio.h>
#include <libxfce4util/libxfce4util.h>
#include "types.h"
#define PROC_DIR_1 "/compat/linux/proc"
@@ -42,6 +44,9 @@ void refresh_list_item(gint i);
void send_signal_to_task(gchar *task_id, gchar *signal);
void change_task_view(void);
void load_config(void);
void save_config(void);
#endif

View File

@@ -27,34 +27,34 @@
#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
g_object_set_data (G_OBJECT (component), name, widget)
GtkWidget* create_window1 (void)
GtkWidget* create_main_window (void)
{
GtkWidget *window1;
GtkWidget *vbox1;
GtkWidget *bbox1;
GtkWidget *scrolledwindow1;
GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *window1;
GtkWidget *vbox1;
GtkWidget *bbox1;
GtkWidget *scrolledwindow1;
GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window1), _("xfce4-taskmanager"));
gtk_window_set_default_size (GTK_WINDOW (window1), 500, 400);
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window1), _("xfce4-taskmanager"));
gtk_window_set_default_size (GTK_WINDOW (window1), win_width, win_height);
vbox1 = gtk_vbox_new (FALSE, 10);
gtk_widget_show (vbox1);
gtk_container_add (GTK_CONTAINER (window1), vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), 10);
vbox1 = gtk_vbox_new (FALSE, 10);
gtk_widget_show (vbox1);
gtk_container_add (GTK_CONTAINER (window1), vbox1);
gtk_container_set_border_width (GTK_CONTAINER (vbox1), 10);
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_show (scrolledwindow1);
gtk_scrolled_window_set_policy (scrolledwindow1, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow1, TRUE, TRUE, 0);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_SHADOW_IN);
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_show (scrolledwindow1);
gtk_scrolled_window_set_policy (scrolledwindow1, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow1, TRUE, TRUE, 0);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_SHADOW_IN);
treeview1 = gtk_tree_view_new ();
gtk_widget_show (treeview1);
gtk_container_add (GTK_CONTAINER (scrolledwindow1), treeview1);
treeview1 = gtk_tree_view_new ();
gtk_widget_show (treeview1);
gtk_container_add (GTK_CONTAINER (scrolledwindow1), treeview1);
create_list_store();
@@ -73,7 +73,7 @@ GtkWidget* create_window1 (void)
gtk_box_pack_start (GTK_BOX (bbox1), button2, FALSE, FALSE, 0);
button3 = gtk_toggle_button_new_with_label (_("more details"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button3), FULL_VIEW);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button3), full_view);
gtk_widget_show (button3);
gtk_box_pack_start (GTK_BOX (bbox1), button3, FALSE, FALSE, 0);
@@ -81,28 +81,28 @@ GtkWidget* create_window1 (void)
gtk_widget_show (button1);
gtk_box_pack_start (GTK_BOX (bbox1), button1, FALSE, FALSE, 0);
g_signal_connect ((gpointer) window1, "destroy", G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect ((gpointer) window1, "destroy", G_CALLBACK (on_quit), NULL);
g_signal_connect_swapped ((gpointer) treeview1, "button-press-event", G_CALLBACK(on_treeview1_button_press_event), NULL);
g_signal_connect ((gpointer) button1, "clicked", G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect ((gpointer) button1, "clicked", G_CALLBACK (on_quit), NULL);
g_signal_connect ((gpointer) button2, "button_release_event", G_CALLBACK (on_button1_button_press_event), NULL);
g_signal_connect ((gpointer) button3, "toggled", G_CALLBACK (on_button3_toggled_event), NULL);
return window1;
}
void change_list_store(gboolean tmp_full_view)
void change_list_store_view(void)
{
gtk_tree_view_column_set_visible (column3, tmp_full_view);
gtk_tree_view_column_set_visible (column4, tmp_full_view);
gtk_tree_view_column_set_visible (column5, tmp_full_view);
gtk_tree_view_column_set_visible (column6, tmp_full_view);
gtk_tree_view_column_set_visible (column4, full_view);
gtk_tree_view_column_set_visible (column_sleep, full_view);
gtk_tree_view_column_set_visible (column5, full_view);
gtk_tree_view_column_set_visible (column6, full_view);
}
void create_list_store(void)
{
GtkCellRenderer *cell_renderer;
list_store = gtk_list_store_new(7, G_TYPE_STRING, G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
list_store = gtk_list_store_new(8, G_TYPE_STRING, G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
cell_renderer = gtk_cell_renderer_text_new();
@@ -136,19 +136,25 @@ void create_list_store(void)
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), 4, compare_list_item, (void *)4, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview1), column5);
column6 = gtk_tree_view_column_new_with_attributes(_("RSS"), cell_renderer, "text", 5, NULL);
gtk_tree_view_column_set_resizable(column6, TRUE);
gtk_tree_view_column_set_sort_column_id(column6, 5);
column_sleep = gtk_tree_view_column_new_with_attributes(_("Sleep"), cell_renderer, "text", 5, NULL);
gtk_tree_view_column_set_resizable(column_sleep, TRUE);
gtk_tree_view_column_set_sort_column_id(column_sleep, 5);
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), 5, compare_list_item, (void *)5, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview1), column_sleep);
column6 = gtk_tree_view_column_new_with_attributes(_("RSS"), cell_renderer, "text", 6, NULL);
gtk_tree_view_column_set_resizable(column6, TRUE);
gtk_tree_view_column_set_sort_column_id(column6, 6);
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), 6, compare_list_item, (void *)6, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview1), column6);
column7 = gtk_tree_view_column_new_with_attributes(_("User"), cell_renderer, "text", 6, NULL);
column7 = gtk_tree_view_column_new_with_attributes(_("User"), cell_renderer, "text", 7, NULL);
gtk_tree_view_column_set_resizable(column7, TRUE);
gtk_tree_view_column_set_sort_column_id(column7, 6);
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), 6, compare_list_item, (void *)6, NULL);
gtk_tree_view_column_set_sort_column_id(column7, 7);
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), 7, compare_list_item, (void *)7, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview1), column7);
change_list_store(FULL_VIEW);
change_list_store_view();
}
GtkWidget* create_taskpopup (void)
@@ -203,34 +209,34 @@ GtkWidget* create_mainmenu (void)
gtk_widget_show (info1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), info1);
trennlinie1 = gtk_separator_menu_item_new ();
gtk_widget_show (trennlinie1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), trennlinie1);
gtk_widget_set_sensitive (trennlinie1, FALSE);
trennlinie1 = gtk_separator_menu_item_new ();
gtk_widget_show (trennlinie1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), trennlinie1);
gtk_widget_set_sensitive (trennlinie1, FALSE);
show_user_tasks1 = gtk_check_menu_item_new_with_mnemonic (_("Show user tasks"));
show_user_tasks1 = gtk_check_menu_item_new_with_mnemonic (_("Show user tasks"));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(show_user_tasks1), show_user_tasks);
gtk_widget_show (show_user_tasks1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), show_user_tasks1);
gtk_widget_show (show_user_tasks1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), show_user_tasks1);
show_root_tasks1 = gtk_check_menu_item_new_with_mnemonic (_("Show root tasks"));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(show_root_tasks1), show_root_tasks);
gtk_widget_show (show_root_tasks1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), show_root_tasks1);
show_root_tasks1 = gtk_check_menu_item_new_with_mnemonic (_("Show root tasks"));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(show_root_tasks1), show_root_tasks);
gtk_widget_show (show_root_tasks1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), show_root_tasks1);
show_other_tasks1 = gtk_check_menu_item_new_with_mnemonic (_("Show other tasks"));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(show_other_tasks1), show_other_tasks);
gtk_widget_show (show_other_tasks1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), show_other_tasks1);
show_other_tasks1 = gtk_check_menu_item_new_with_mnemonic (_("Show other tasks"));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(show_other_tasks1), show_other_tasks);
gtk_widget_show (show_other_tasks1);
gtk_menu_shell_append(GTK_MENU_SHELL(mainmenu), show_other_tasks1);
g_signal_connect ((gpointer) info1, "activate", G_CALLBACK (on_info1_activate), NULL);
g_signal_connect ((gpointer) show_user_tasks1, "toggled", G_CALLBACK (on_show_tasks_toggled), (void *)own_uid);
g_signal_connect ((gpointer) show_root_tasks1, "toggled", G_CALLBACK (on_show_tasks_toggled), (void *)0);
g_signal_connect ((gpointer) show_other_tasks1, "toggled", G_CALLBACK (on_show_tasks_toggled), (void *)-1);
g_signal_connect ((gpointer) info1, "activate", G_CALLBACK (on_info1_activate), NULL);
g_signal_connect ((gpointer) show_user_tasks1, "toggled", G_CALLBACK (on_show_tasks_toggled), (void *)own_uid);
g_signal_connect ((gpointer) show_root_tasks1, "toggled", G_CALLBACK (on_show_tasks_toggled), (void *)0);
g_signal_connect ((gpointer) show_other_tasks1, "toggled", G_CALLBACK (on_show_tasks_toggled), (void *)-1);
gtk_menu_set_accel_group (GTK_MENU (mainmenu), accel_group);
gtk_menu_set_accel_group (GTK_MENU (mainmenu), accel_group);
return mainmenu;
return mainmenu;
}
void show_about_dialog(void)
@@ -242,7 +248,7 @@ void show_about_dialog(void)
xfce_about_info_set_homepage(about_info, "http://developer.berlios.de/projects/xfce-goodies/");
xfce_about_info_add_credit(about_info, "Johannes Zellner", "webmaster@nebulon.de", "Original Author");
about_dialog = xfce_about_dialog_new(GTK_WINDOW(window1), about_info, NULL);
about_dialog = xfce_about_dialog_new(GTK_WINDOW(main_window), about_info, NULL);
g_signal_connect(G_OBJECT(about_dialog), "response", G_CALLBACK(gtk_widget_destroy), NULL);
gtk_window_set_title (GTK_WINDOW (about_dialog), _("xfce4-taskmanager"));
gtk_widget_show(about_dialog);

View File

@@ -44,12 +44,12 @@ GtkWidget *treeview1;
GtkWidget *mainmenu;
GtkWidget *taskpopup;
GtkTreeViewColumn *column1, *column2, *column3, *column4, *column5, *column6, *column7;
GtkTreeViewColumn *column1, *column2, *column3, *column4, *column5, *column_sleep, *column6, *column7;
void change_list_store(gboolean tmp_full_view);
void change_list_store_view(void);
void create_list_store(void);
GtkWidget* create_window1 (void);
GtkWidget* create_main_window (void);
GtkWidget* create_taskpopup (void);
GtkWidget* create_mainmenu (void);

View File

@@ -23,20 +23,16 @@
#endif
#include <gtk/gtk.h>
#include <glib.h>
#include <signal.h>
#include <libxfce4util/libxfce4util.h>
#include "types.h"
#include "interface.h"
#include "functions.h"
/* handler for SIGALRM to refresh the list */
void refresh_handler(void)
{
refresh_task_list();
alarm(REFRESH_INTERVAL);
}
int main (int argc, char *argv[])
{
#ifdef ENABLE_NLS
@@ -47,23 +43,22 @@ int main (int argc, char *argv[])
gtk_set_locale ();
gtk_init (&argc, &argv);
window1 = create_window1 ();
gtk_widget_show (window1);
own_uid = getuid();
show_user_tasks = TRUE;
show_root_tasks = FALSE;
show_other_tasks = FALSE;
config_file = xfce_resource_save_location(XFCE_RESOURCE_CONFIG, "xfce4-taskmanager.rc", FALSE);
load_config();
task_array = g_array_new (FALSE, FALSE, sizeof (struct task));
tasks = 0;
main_window = create_main_window ();
gtk_widget_show (main_window);
if(!refresh_task_list())
return 0;
signal(SIGALRM, (void *)refresh_handler);
alarm(REFRESH_INTERVAL);
g_timeout_add(REFRESH_INTERVAL, refresh_task_list, NULL);
gtk_main ();

View File

@@ -21,8 +21,7 @@
#ifndef __TYPES_H_
#define __TYPES_H_
#define REFRESH_INTERVAL 1
#define FULL_VIEW FALSE
#define REFRESH_INTERVAL 1000
struct task
{
@@ -35,17 +34,25 @@ struct task
gint size;
gint rss;
gboolean checked;
gint sleep;
};
GtkWidget *window1;
GtkWidget *main_window;
GtkListStore *list_store;
GArray *task_array;
gint tasks;
gint own_uid;
gchar *config_file;
gboolean show_user_tasks;
gboolean show_root_tasks;
gboolean show_other_tasks;
gboolean full_view;
guint win_width;
guint win_height;
#endif