[Goodies-commits] r4806 - xfce4-taskmanager/trunk/src
Mike Massonnet
mmassonnet at xfce.org
Fri May 16 09:05:20 CEST 2008
Author: mmassonnet
Date: 2008-05-16 07:05:20 +0000 (Fri, 16 May 2008)
New Revision: 4806
Modified:
xfce4-taskmanager/trunk/src/callbacks.c
xfce4-taskmanager/trunk/src/callbacks.h
xfce4-taskmanager/trunk/src/functions.c
xfce4-taskmanager/trunk/src/interface.c
xfce4-taskmanager/trunk/src/interface.h
xfce4-taskmanager/trunk/src/menu-positions.c
xfce4-taskmanager/trunk/src/menu-positions.h
xfce4-taskmanager/trunk/src/types.h
Log:
New information menu to select the columns to display; minor clean up
Modified: xfce4-taskmanager/trunk/src/callbacks.c
===================================================================
--- xfce4-taskmanager/trunk/src/callbacks.c 2008-05-16 07:05:14 UTC (rev 4805)
+++ xfce4-taskmanager/trunk/src/callbacks.c 2008-05-16 07:05:20 UTC (rev 4806)
@@ -22,16 +22,23 @@
#include "callbacks.h"
#include "menu-positions.h"
-void on_button1_activate(GtkButton *button)
+void on_preferences(GtkButton *button)
{
if(mainmenu == NULL)
mainmenu = create_mainmenu();
- gtk_menu_popup(GTK_MENU(mainmenu), NULL, NULL, (GtkMenuPositionFunc)position_mainmenu, button, 0, gtk_get_current_event_time());
+ gtk_menu_popup(GTK_MENU(mainmenu), NULL, NULL, (GtkMenuPositionFunc)position_menu_cover_widget, button, 0, gtk_get_current_event_time());
}
-void on_button3_toggled_event(GtkButton *button, GdkEventButton *event)
+void on_information(GtkButton *button)
{
- full_view = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
+ if(infomenu == NULL)
+ infomenu = create_infomenu();
+ gtk_menu_popup(GTK_MENU(infomenu), NULL, NULL, (GtkMenuPositionFunc)position_menu_cover_widget, button, 0, gtk_get_current_event_time());
+}
+
+void on_show_info_toggled(GtkCheckMenuItem *menuitem, gint column_id)
+{
+ show_col[column_id] = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem));
change_list_store_view();
}
Modified: xfce4-taskmanager/trunk/src/callbacks.h
===================================================================
--- xfce4-taskmanager/trunk/src/callbacks.h 2008-05-16 07:05:14 UTC (rev 4805)
+++ xfce4-taskmanager/trunk/src/callbacks.h 2008-05-16 07:05:20 UTC (rev 4806)
@@ -34,8 +34,9 @@
#include "xfce-taskmanager-linux.h"
-void on_button1_activate(GtkButton *button);
-void on_button3_toggled_event(GtkButton *button, GdkEventButton *event);
+void on_preferences(GtkButton *button);
+void on_information(GtkButton *button);
+void on_show_info_toggled(GtkCheckMenuItem *menuitem, gint uid);
gboolean on_treeview1_button_press_event(GtkButton *button, GdkEventButton *event);
void on_info1_activate (GtkMenuItem *menuitem, gpointer user_data);
void handle_task_menu(GtkWidget *widget, gchar *signal);
Modified: xfce4-taskmanager/trunk/src/functions.c
===================================================================
--- xfce4-taskmanager/trunk/src/functions.c 2008-05-16 07:05:14 UTC (rev 4805)
+++ xfce4-taskmanager/trunk/src/functions.c 2008-05-16 07:05:20 UTC (rev 4806)
@@ -201,11 +201,20 @@
sort_column = xfce_rc_read_int_entry(rc_file, "sort_column", COLUMN_PID);
sort_type = xfce_rc_read_int_entry(rc_file, "sort_type", GTK_SORT_ASCENDING);
- 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_set_group (rc_file, "Information");
+
+ show_col[COLUMN_PID] = xfce_rc_read_bool_entry(rc_file, "show_col_pid", TRUE);
+ show_col[COLUMN_PPID] = xfce_rc_read_bool_entry(rc_file, "show_col_ppid", FALSE);
+ show_col[COLUMN_STATE] = xfce_rc_read_bool_entry(rc_file, "show_col_state", FALSE);
+ show_col[COLUMN_MEM] = xfce_rc_read_bool_entry(rc_file, "show_col_mem", FALSE);
+ show_col[COLUMN_RSS] = xfce_rc_read_bool_entry(rc_file, "show_col_rss", TRUE);
+ show_col[COLUMN_UNAME] = xfce_rc_read_bool_entry(rc_file, "show_col_uname", FALSE);
+ show_col[COLUMN_TIME] = xfce_rc_read_bool_entry(rc_file, "show_col_time", TRUE);
+ show_col[COLUMN_PRIO] = xfce_rc_read_bool_entry(rc_file, "show_col_prio", TRUE);
+
xfce_rc_close(rc_file);
}
@@ -224,13 +233,22 @@
xfce_rc_write_int_entry(rc_file, "sort_column", sort_column);
xfce_rc_write_int_entry(rc_file, "sort_type", sort_type);
- xfce_rc_write_bool_entry(rc_file, "full_view", full_view);
-
gtk_window_get_size(GTK_WINDOW (main_window), (gint *) &win_width, (gint *) &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_set_group (rc_file, "Information");
+
+ xfce_rc_write_bool_entry(rc_file, "show_col_pid", show_col[COLUMN_PID]);
+ xfce_rc_write_bool_entry(rc_file, "show_col_ppid", show_col[COLUMN_PPID]);
+ xfce_rc_write_bool_entry(rc_file, "show_col_state", show_col[COLUMN_STATE]);
+ xfce_rc_write_bool_entry(rc_file, "show_col_mem", show_col[COLUMN_MEM]);
+ xfce_rc_write_bool_entry(rc_file, "show_col_rss", show_col[COLUMN_RSS]);
+ xfce_rc_write_bool_entry(rc_file, "show_col_uname", show_col[COLUMN_UNAME]);
+ xfce_rc_write_bool_entry(rc_file, "show_col_time", show_col[COLUMN_TIME]);
+ xfce_rc_write_bool_entry(rc_file, "show_col_prio", show_col[COLUMN_PRIO]);
+
xfce_rc_flush(rc_file);
xfce_rc_close(rc_file);
Modified: xfce4-taskmanager/trunk/src/interface.c
===================================================================
--- xfce4-taskmanager/trunk/src/interface.c 2008-05-16 07:05:14 UTC (rev 4805)
+++ xfce4-taskmanager/trunk/src/interface.c 2008-05-16 07:05:20 UTC (rev 4806)
@@ -33,9 +33,9 @@
GtkWidget *vbox1;
GtkWidget *bbox1;
GtkWidget *scrolledwindow1;
- GtkWidget *button1;
- GtkWidget *button2;
- GtkWidget *button3;
+ GtkWidget *button_preferences;
+ GtkWidget *button_information;
+ GtkWidget *button_quit;
GtkWidget *system_info_box;
@@ -79,6 +79,7 @@
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_SHADOW_IN);
treeview = gtk_tree_view_new ();
+ gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (treeview), FALSE);
gtk_widget_show (treeview);
gtk_container_add (GTK_CONTAINER (scrolledwindow1), treeview);
@@ -94,27 +95,25 @@
gtk_box_pack_start(GTK_BOX(vbox1), bbox1, FALSE, TRUE, 0);
gtk_widget_show (bbox1);
- button2 = gtk_button_new_from_stock ("gtk-preferences");
- gtk_button_set_focus_on_click (GTK_BUTTON (button2), FALSE);
- gtk_widget_show (button2);
- gtk_box_pack_start (GTK_BOX (bbox1), button2, FALSE, FALSE, 0);
+ button_preferences = gtk_button_new_from_stock ("gtk-preferences");
+ gtk_button_set_focus_on_click (GTK_BUTTON (button_preferences), FALSE);
+ gtk_widget_show (button_preferences);
+ gtk_box_pack_start (GTK_BOX (bbox1), button_preferences, FALSE, FALSE, 0);
- button3 = gtk_toggle_button_new_with_label ("gtk-info");
- gtk_button_set_focus_on_click (GTK_BUTTON (button3), FALSE);
- gtk_button_set_use_stock (GTK_BUTTON(button3), TRUE);
- 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);
+ button_information = gtk_button_new_from_stock ("gtk-info");
+ gtk_button_set_focus_on_click (GTK_BUTTON (button_information), FALSE);
+ gtk_widget_show (button_information);
+ gtk_box_pack_start (GTK_BOX (bbox1), button_information, FALSE, FALSE, 0);
- button1 = gtk_button_new_from_stock ("gtk-quit");
- gtk_widget_show (button1);
- gtk_box_pack_start (GTK_BOX (bbox1), button1, FALSE, FALSE, 0);
+ button_quit = gtk_button_new_from_stock ("gtk-quit");
+ gtk_widget_show (button_quit);
+ gtk_box_pack_start (GTK_BOX (bbox1), button_quit, FALSE, FALSE, 0);
- g_signal_connect ((gpointer) window, "delete-event", G_CALLBACK (on_quit), NULL);
- g_signal_connect_swapped ((gpointer) treeview, "button-press-event", G_CALLBACK(on_treeview1_button_press_event), NULL);
- g_signal_connect ((gpointer) button1, "clicked", G_CALLBACK (on_quit), NULL);
- g_signal_connect ((gpointer) button2, "clicked", G_CALLBACK (on_button1_activate), NULL);
- g_signal_connect ((gpointer) button3, "toggled", G_CALLBACK (on_button3_toggled_event), NULL);
+ g_signal_connect_swapped (treeview, "button-press-event", G_CALLBACK(on_treeview1_button_press_event), NULL);
+ g_signal_connect (button_preferences, "clicked", G_CALLBACK (on_preferences), NULL);
+ g_signal_connect (button_information, "clicked", G_CALLBACK (on_information), NULL);
+ g_signal_connect (button_quit, "clicked", G_CALLBACK (on_quit), NULL);
+ g_signal_connect (window, "delete-event", G_CALLBACK (on_quit), NULL);
return window;
}
@@ -322,6 +321,50 @@
return mainmenu;
}
+GtkWidget* create_infomenu (void)
+{
+ GtkWidget *infomenu;
+ GtkWidget *title;
+ GtkWidget *separator;
+ GtkWidget *col_items[N_COLUMNS] = { 0 };
+ gint i;
+
+ infomenu = gtk_menu_new ();
+
+ title = gtk_image_menu_item_new_from_stock("gtk-info", NULL);
+ gtk_widget_show(title);
+ gtk_menu_shell_append(GTK_MENU_SHELL(infomenu), title);
+ gtk_widget_set_sensitive(title, FALSE);
+
+ separator = gtk_separator_menu_item_new();
+ gtk_widget_show(separator);
+ gtk_menu_shell_append(GTK_MENU_SHELL(infomenu), separator);
+ gtk_widget_set_sensitive(separator, FALSE);
+
+ col_items[COLUMN_PID] = gtk_check_menu_item_new_with_label (_("PID"));
+ col_items[COLUMN_PPID] = gtk_check_menu_item_new_with_label (_("PPID"));
+ col_items[COLUMN_STATE] = gtk_check_menu_item_new_with_label (_("State"));
+ col_items[COLUMN_MEM] = gtk_check_menu_item_new_with_label (_("VM-Size"));
+ col_items[COLUMN_RSS] = gtk_check_menu_item_new_with_label (_("RSS"));
+ col_items[COLUMN_UNAME] = gtk_check_menu_item_new_with_label (_("User"));
+ col_items[COLUMN_TIME] = gtk_check_menu_item_new_with_label (_("CPU%"));
+ col_items[COLUMN_PRIO] = gtk_check_menu_item_new_with_label (_("Priority"));
+
+ for (i = 0; i < N_COLUMNS; i++)
+ {
+ if (GTK_IS_WIDGET (col_items[i]))
+ {
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (col_items[i]), show_col[i]);
+ gtk_widget_show(col_items[i]);
+ gtk_menu_shell_append(GTK_MENU_SHELL(infomenu), col_items[i]);
+ g_signal_connect (col_items[i], "toggled",
+ G_CALLBACK (on_show_info_toggled), GINT_TO_POINTER(i));
+ }
+ }
+
+ return infomenu;
+}
+
void show_about_dialog(void)
{
GtkWidget *about_dialog;
@@ -361,12 +404,14 @@
void change_list_store_view(void)
{
- gtk_tree_view_column_set_visible
- (gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_PPID), full_view);
- gtk_tree_view_column_set_visible
- (gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_STATE), full_view);
- gtk_tree_view_column_set_visible
- (gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_MEM), full_view);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_PID), show_col[COLUMN_PID]);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_PPID), show_col[COLUMN_PPID]);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_STATE), show_col[COLUMN_STATE]);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_MEM), show_col[COLUMN_MEM]);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_RSS), show_col[COLUMN_RSS]);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_UNAME), show_col[COLUMN_UNAME]);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_TIME), show_col[COLUMN_TIME]);
+ gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), COLUMN_PRIO), show_col[COLUMN_PRIO]);
}
void fill_list_item(gint i, GtkTreeIter *iter)
Modified: xfce4-taskmanager/trunk/src/interface.h
===================================================================
--- xfce4-taskmanager/trunk/src/interface.h 2008-05-16 07:05:14 UTC (rev 4805)
+++ xfce4-taskmanager/trunk/src/interface.h 2008-05-16 07:05:20 UTC (rev 4806)
@@ -44,6 +44,7 @@
GtkTreeSelection *selection;
GtkWidget *treeview;
GtkWidget *mainmenu;
+GtkWidget *infomenu;
GtkTooltips *tooltips;
GtkWidget *taskpopup;
GtkWidget *priopopup;
@@ -52,16 +53,6 @@
GtkWidget *cpu_usage_progress_bar_box;
GtkWidget *mem_usage_progress_bar_box;
-#define COLUMN_NAME 0
-#define COLUMN_PID 1
-#define COLUMN_PPID 2
-#define COLUMN_STATE 3
-#define COLUMN_MEM 4
-#define COLUMN_RSS 5
-#define COLUMN_UNAME 6
-#define COLUMN_TIME 7
-#define COLUMN_PRIO 8
-
GtkTreeViewColumn *column;
void change_list_store_view(void);
@@ -70,7 +61,8 @@
GtkWidget* create_main_window (void);
GtkWidget* create_taskpopup (void);
GtkWidget* create_mainmenu (void);
-GtkWidget *create_prio_submenu(void);
+GtkWidget* create_infomenu (void);
+GtkWidget* create_prio_submenu(void);
void show_about_dialog(void);
Modified: xfce4-taskmanager/trunk/src/menu-positions.c
===================================================================
--- xfce4-taskmanager/trunk/src/menu-positions.c 2008-05-16 07:05:14 UTC (rev 4805)
+++ xfce4-taskmanager/trunk/src/menu-positions.c 2008-05-16 07:05:20 UTC (rev 4806)
@@ -1,5 +1,5 @@
/*
- * xfce4-taskmanager - very simple taskmanger
+ * xfce4-taskmanager - very simple taskmanager
*
* Copyright (c) 2008 Mike Massonnet <mmassonnet at xfce.org>
*
@@ -20,20 +20,18 @@
#include "menu-positions.h"
-void position_mainmenu(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data)
+void position_menu_cover_widget(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, GtkWidget *widget)
{
- GtkWidget *widget;
GtkRequisition requisition;
- widget = user_data;
- gtk_widget_size_request(GTK_WIDGET(menu), &requisition);
gdk_window_get_origin(widget->window, x, y);
-
*x += widget->allocation.x;
*y += widget->allocation.y;
- if(*y + requisition.height > gdk_screen_height ())
- *y = gdk_screen_height () - requisition.height;
+ gtk_widget_size_request(GTK_WIDGET(menu), &requisition);
+ if(*y + requisition.height > gdk_screen_height())
+ *y = gdk_screen_height() - requisition.height;
else if(*y < 0)
*y = 0;
}
+
Modified: xfce4-taskmanager/trunk/src/menu-positions.h
===================================================================
--- xfce4-taskmanager/trunk/src/menu-positions.h 2008-05-16 07:05:14 UTC (rev 4805)
+++ xfce4-taskmanager/trunk/src/menu-positions.h 2008-05-16 07:05:20 UTC (rev 4806)
@@ -30,6 +30,6 @@
#include "functions.h"
#include "interface.h"
-void position_mainmenu(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data);
+void position_menu_cover_widget(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, GtkWidget *widget);
#endif
Modified: xfce4-taskmanager/trunk/src/types.h
===================================================================
--- xfce4-taskmanager/trunk/src/types.h 2008-05-16 07:05:14 UTC (rev 4805)
+++ xfce4-taskmanager/trunk/src/types.h 2008-05-16 07:05:20 UTC (rev 4806)
@@ -76,8 +76,22 @@
guint sort_column;
guint sort_type;
-gboolean full_view;
+enum
+{
+ COLUMN_NAME = 0,
+ COLUMN_PID,
+ COLUMN_PPID,
+ COLUMN_STATE,
+ COLUMN_MEM,
+ COLUMN_RSS,
+ COLUMN_UNAME,
+ COLUMN_TIME,
+ COLUMN_PRIO,
+ N_COLUMNS,
+};
+gboolean show_col[N_COLUMNS];
+
guint win_width;
guint win_height;
More information about the Goodies-commits
mailing list