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:
810
aclocal.m4
vendored
810
aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#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;
|
||||
@@ -39,7 +39,7 @@ GtkWidget* create_window1 (void)
|
||||
|
||||
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);
|
||||
gtk_window_set_default_size (GTK_WINDOW (window1), win_width, win_height);
|
||||
|
||||
vbox1 = gtk_vbox_new (FALSE, 10);
|
||||
gtk_widget_show (vbox1);
|
||||
@@ -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)
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
25
src/main.c
25
src/main.c
@@ -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
|
||||
@@ -48,22 +44,21 @@ 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 ();
|
||||
|
||||
|
||||
13
src/types.h
13
src/types.h
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user