[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