anjuta r4651 - in trunk: . plugins/build-basic-autotools plugins/debug-manager



Author: sgranjoux
Date: Sat Jan 31 09:55:08 2009
New Revision: 4651
URL: http://svn.gnome.org/viewvc/anjuta?rev=4651&view=rev

Log:
	* plugins/debug-manager/Makefile.am:
	* plugins/debug-manager/anjuta-debug-manager.ui:
	* plugins/debug-manager/disassemble.c:
	* plugins/debug-manager/plugin.c (dma_plugin_activate):
	* plugins/debug-manager/registers.c:
	* plugins/debug-manager/registers.h:
	* plugins/debug-manager/sharedlib.c (sharedlibs_update),
	(sharedlibs_update_controls), (create_sharedlibs_menu),
	(sharedlibs_ui_create_treeview_and_store), (create_sharedlibs_gui),
	(sharedlibs_new), (sharedlibs_clear), (sharedlibs_free):
	* plugins/debug-manager/sharedlib.h:
	* plugins/debug-manager/signals.c (signals_update_controls),
	(signals_update), (on_signals_send_activate), (on_signals_event),
	(on_column_toggled), (signals_add_toggle_column),
	(signals_create_list_store_and_treeview), (create_signals_gui),
	(signals_new), (signals_clear), (signals_free):
	* plugins/debug-manager/signals.h:
	Remove GnomeDialog and GnomeMenuShell as well as GtkCList from signals
	and sharedlibs window
	#513156 â Get rid of libgnome(ui)

	* manuals/build-basic-autotools/Makefile.am:
	* plugins/build-basic-autotools/executer.c (execute_program):
	#513156 â Get rid of libgnome(ui)


Modified:
   trunk/ChangeLog
   trunk/plugins/build-basic-autotools/Makefile.am
   trunk/plugins/build-basic-autotools/executer.c
   trunk/plugins/debug-manager/Makefile.am
   trunk/plugins/debug-manager/anjuta-debug-manager.ui
   trunk/plugins/debug-manager/disassemble.c
   trunk/plugins/debug-manager/plugin.c
   trunk/plugins/debug-manager/registers.c
   trunk/plugins/debug-manager/registers.h
   trunk/plugins/debug-manager/sharedlib.c
   trunk/plugins/debug-manager/sharedlib.h
   trunk/plugins/debug-manager/signals.c
   trunk/plugins/debug-manager/signals.h

Modified: trunk/plugins/build-basic-autotools/Makefile.am
==============================================================================
--- trunk/plugins/build-basic-autotools/Makefile.am	(original)
+++ trunk/plugins/build-basic-autotools/Makefile.am	Sat Jan 31 09:55:08 2009
@@ -54,7 +54,6 @@
 # Plugin dependencies
 libanjuta_build_basic_autotools_la_LIBADD = \
 	$(GLADE_LIBS) \
-	$(GNOME_LIBS) \
 	$(GIO_LIBS) \
 	$(LIBANJUTA_LIBS)
 

Modified: trunk/plugins/build-basic-autotools/executer.c
==============================================================================
--- trunk/plugins/build-basic-autotools/executer.c	(original)
+++ trunk/plugins/build-basic-autotools/executer.c	Sat Jan 31 09:55:08 2009
@@ -24,7 +24,6 @@
 #include <unistd.h>
 #include <string.h>
 
-#include <gnome.h>
 #include <glade/glade.h>
 
 #include <libanjuta/resources.h>
@@ -425,13 +424,12 @@
 		}
 		else
 		{
-			DEBUG_PRINT ("%s", "No installed terminal plugin found");
-			gnome_execute_shell (dir, cmd);
+			anjuta_util_execute_shell (dir, cmd);
 		}
 	}
 	else
 	{
-		gnome_execute_shell (dir, cmd);
+		anjuta_util_execute_shell (dir, cmd);
 	}
 	
 	g_free (dir);

Modified: trunk/plugins/debug-manager/Makefile.am
==============================================================================
--- trunk/plugins/debug-manager/Makefile.am	(original)
+++ trunk/plugins/debug-manager/Makefile.am	Sat Jan 31 09:55:08 2009
@@ -13,7 +13,6 @@
 
 AM_CPPFLAGS= \
 	$(WARN_CFLAGS) \
-	$(DEPRECATED_FLAGS) \
 	$(GIO_CFLAGS) \
 	$(LIBANJUTA_CFLAGS)
 

Modified: trunk/plugins/debug-manager/anjuta-debug-manager.ui
==============================================================================
--- trunk/plugins/debug-manager/anjuta-debug-manager.ui	(original)
+++ trunk/plugins/debug-manager/anjuta-debug-manager.ui	Sat Jan 31 09:55:08 2009
@@ -96,5 +96,11 @@
 		<menuitem name="SetCurrentThread" action="ActionDmaSetCurrentThread" />
 		<menuitem name="JumpToThread" action="ActionDmaJumpToThread" />
 	</popup>
-
+	<popup name="PopupSignals">
+		<menuitem name="SendSignal" action="ActionDmaSignalSend" />
+		<menuitem name="UpdateSignalList" action="ActionDmaSignalUpdate" />
+	</popup>
+	<popup name="PopupSharedlibs">
+		<menuitem name="UpdateShlList" action="ActionDmaSharedlibsUpdate" />
+	</popup>
 </ui>

Modified: trunk/plugins/debug-manager/disassemble.c
==============================================================================
--- trunk/plugins/debug-manager/disassemble.c	(original)
+++ trunk/plugins/debug-manager/disassemble.c	Sat Jan 31 09:55:08 2009
@@ -32,7 +32,6 @@
 #include <unistd.h>
 #include <string.h>
 
-#include <gnome.h>
 #include "disassemble.h"
 
 #include "sparse_buffer.h"

Modified: trunk/plugins/debug-manager/plugin.c
==============================================================================
--- trunk/plugins/debug-manager/plugin.c	(original)
+++ trunk/plugins/debug-manager/plugin.c	Sat Jan 31 09:55:08 2009
@@ -1068,9 +1068,8 @@
 dma_plugin_activate (AnjutaPlugin* plugin)
 {
 	DebugManagerPlugin *this;
-    static gboolean initialized = FALSE;
+	static gboolean initialized = FALSE;
 	AnjutaUI *ui;
-	GtkAction *action;
 	
 	DEBUG_PRINT ("%s", "DebugManagerPlugin: Activating Debug Manager plugin...");
 	this = ANJUTA_PLUGIN_DEBUG_MANAGER (plugin);

Modified: trunk/plugins/debug-manager/registers.c
==============================================================================
--- trunk/plugins/debug-manager/registers.c	(original)
+++ trunk/plugins/debug-manager/registers.c	Sat Jan 31 09:55:08 2009
@@ -27,8 +27,6 @@
 #include <unistd.h>
 #include <string.h>
 
-#include <gnome.h>
-
 /*#define DEBUG*/
 #include <libanjuta/resources.h>
 #include <libanjuta/anjuta-debug.h>

Modified: trunk/plugins/debug-manager/registers.h
==============================================================================
--- trunk/plugins/debug-manager/registers.h	(original)
+++ trunk/plugins/debug-manager/registers.h	Sat Jan 31 09:55:08 2009
@@ -27,8 +27,6 @@
 #include <libanjuta/interfaces/ianjuta-debugger.h>
 #include <libanjuta/interfaces/ianjuta-debugger-register.h>
 
-#include <gnome.h>
-
 typedef struct _CpuRegisters CpuRegisters;
 
 CpuRegisters* cpu_registers_new (DebugManagerPlugin *plugin);

Modified: trunk/plugins/debug-manager/sharedlib.c
==============================================================================
--- trunk/plugins/debug-manager/sharedlib.c	(original)
+++ trunk/plugins/debug-manager/sharedlib.c	Sat Jan 31 09:55:08 2009
@@ -25,14 +25,22 @@
 #include <unistd.h>
 #include <string.h>
 
-#include <gnome.h>
-
 #include <libanjuta/resources.h>
+#include <libanjuta/anjuta-shell.h>
 
 #include "utilities.h"
 #include "sharedlib.h"
 #include "queue.h"
 
+enum 
+{
+	SHL_COLUMN_SHARED_OBJECT,
+	SHL_COLUMN_FROM,
+	SHL_COLUMN_TO,
+	SHL_COLUMN_SYM_READ,
+	SHL_COLUMN_COUNT
+};
+
 static gint
 on_sharedlibs_delete_event (GtkWidget* w, GdkEvent *event, gpointer data)
 {
@@ -55,33 +63,37 @@
 }
 
 
-static void
+	static void
 sharedlibs_update (const GList *lines, gpointer data)
 {
-    Sharedlibs *sl;
-    gchar obj[512], from[32], to[32], read[32];
-    gchar *row[4];
-    gint count;
-    GList *list, *node;
-
-    sl = (Sharedlibs*)data;
-
-    list = gdb_util_remove_blank_lines(lines);
-    sharedlibs_clear(sl);
-    if(g_list_length(list) < 2 ){g_list_free(list); return;}
-    node = list->next;
-    while(node)
-    {
-        count = sscanf((char*)node->data, "%s %s %s %s", from,to,read,obj);
-        node = g_list_next(node);
-        if(count != 4) continue;
-        row[0]=(gchar*) g_path_get_basename (obj);
-        row[1]=from;
-        row[2]=to;
-        row[3]=read;
-        gtk_clist_append(GTK_CLIST(sl->widgets.clist), row);
-     }
-     g_list_free(list);
+	Sharedlibs *sl;
+	gchar obj[512], from[32], to[32], read[32];
+	gint count;
+	GList *list, *node;
+	GtkTreeIter iter;
+
+	sl = (Sharedlibs*)data;
+
+	list = gdb_util_remove_blank_lines(lines);
+	sharedlibs_clear(sl);
+	if(g_list_length(list) < 2 ){g_list_free(list); return;}
+	node = list->next;
+	if (node)
+		node = g_list_next (node);
+	while(node)
+	{
+		count = sscanf((char*)node->data, "~%s %s %s %s", from,to,read,obj);
+		node = g_list_next(node);
+		if(count != 4) continue;
+		gtk_list_store_append (sl->widgets.store, &iter);
+		gtk_list_store_set (sl->widgets.store, &iter,
+				SHL_COLUMN_SHARED_OBJECT, g_path_get_basename (obj),
+				SHL_COLUMN_FROM, from,
+				SHL_COLUMN_TO, to,
+				SHL_COLUMN_SYM_READ, strcmp(read, "Yes") == 0,
+				-1);
+	}
+	g_list_free(list);
 }
 
 static void
@@ -98,11 +110,11 @@
 static void
 sharedlibs_update_controls (Sharedlibs* ew)
 {
-     gboolean R;
+	gboolean R;
 
-     R = dma_debugger_queue_get_state (ew->debugger) == IANJUTA_DEBUGGER_OK;
+	R = dma_debugger_queue_get_state (ew->debugger) == IANJUTA_DEBUGGER_PROGRAM_STOPPED;
 
-     gtk_widget_set_sensitive(ew->widgets.menu_update, R);
+	gtk_action_group_set_sensitive (ew->widgets.action_group, R);
 }
 
 static gboolean
@@ -124,44 +136,95 @@
 	return TRUE;
 }
 
-static GnomeUIInfo sharedlibs_menu_uiinfo[] =
+static GtkActionEntry sharedlibs_menu_actions[] =
 {
 	{
-		GNOME_APP_UI_ITEM, N_("Update"),
-		NULL,
-		on_sharedlibs_update_activate, NULL, NULL,
-		GNOME_APP_PIXMAP_NONE, NULL,
-		0, 0, NULL
-	},
-	GNOMEUIINFO_END
+		"ActionDmaSharedlibsUpdate",
+		GTK_STOCK_REFRESH,
+		N_("Update"),
+		NULL, NULL,
+		G_CALLBACK (on_sharedlibs_update_activate)
+	}
 };
 
 static GtkWidget*
-create_sharedlibs_menu (Sharedlibs *sl)
+create_sharedlibs_menu (Sharedlibs *sl, DebugManagerPlugin *plugin)
 {
-	GtkWidget *sharedlibs_menu;
+	AnjutaUI *ui;
 
-	sharedlibs_menu = gtk_menu_new ();
-	sharedlibs_menu_uiinfo[0].user_data = sl;
-	gnome_app_fill_menu (GTK_MENU_SHELL (sharedlibs_menu), sharedlibs_menu_uiinfo,
-						 NULL, FALSE, 0);
-	return sharedlibs_menu;
+	ui = anjuta_shell_get_ui (ANJUTA_PLUGIN(plugin)->shell, NULL);
+	sl->widgets.action_group = 
+		anjuta_ui_add_action_group_entries (ui,
+				"ActionGroupSharedlibs",
+				_("Sharedlibs operations"),
+				sharedlibs_menu_actions,
+				G_N_ELEMENTS(sharedlibs_menu_actions),
+				GETTEXT_PACKAGE, TRUE, sl);
+	return gtk_ui_manager_get_widget (GTK_UI_MANAGER (ui),
+			"/PopupSharedlibs");
+}
+
+static GtkWidget*
+sharedlibs_ui_create_treeview_and_store (Sharedlibs *sl)
+{
+	GtkWidget *treeview;
+	GtkListStore *store;
+	GtkCellRenderer *renderer;
+	GtkTreeViewColumn *column;
+
+	store = gtk_list_store_new (SHL_COLUMN_COUNT,
+			G_TYPE_STRING,
+			G_TYPE_STRING,
+			G_TYPE_STRING,
+			G_TYPE_BOOLEAN);
+	treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
+
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes (_("Shared Object"),
+			renderer,
+			"text", SHL_COLUMN_SHARED_OBJECT,
+			NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes (_("From"),
+			renderer,
+			"text", SHL_COLUMN_FROM,
+			NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes (_("To"),
+			renderer,
+			"text", SHL_COLUMN_TO,
+			NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+	renderer = gtk_cell_renderer_toggle_new ();
+	column = gtk_tree_view_column_new_with_attributes (_("Symbols read"),
+			renderer,
+			"active", SHL_COLUMN_SYM_READ,
+			NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+	sl->widgets.treeview = treeview;
+	sl->widgets.store = store;
+
+	return treeview;
 }
 
 static void
-create_sharedlibs_gui (Sharedlibs *sl)
+create_sharedlibs_gui (Sharedlibs *sl, DebugManagerPlugin *plugin)
 {
 	GtkWidget *window3;
 	GtkWidget *scrolledwindow4;
-	GtkWidget *clist4;
-	GtkWidget *label6, *label7, *label8, *label9;
+	GtkWidget *treeview;
 	
 	window3 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 	gtk_widget_set_usize (window3, 170, -2);
 	gtk_window_set_title (GTK_WINDOW (window3), _("Shared libraries"));
 	gtk_window_set_wmclass (GTK_WINDOW (window3), "sharedlibs", "Anjuta");
 	gtk_window_set_default_size (GTK_WINDOW (window3), 240, 230);
-	gnome_window_icon_set_from_default(GTK_WINDOW(window3));
 	
 	scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL);
 	gtk_widget_show (scrolledwindow4);
@@ -169,46 +232,23 @@
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4),
 									GTK_POLICY_AUTOMATIC,
 									GTK_POLICY_AUTOMATIC);
-	clist4 = gtk_clist_new (4);
-	gtk_widget_show (clist4);
-	gtk_container_add (GTK_CONTAINER (scrolledwindow4), clist4);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 0, 110);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 1, 90);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 2, 90);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 3, 80);
-	gtk_clist_set_selection_mode (GTK_CLIST (clist4), GTK_SELECTION_BROWSE);
-	gtk_clist_column_titles_show (GTK_CLIST (clist4));
-	gtk_clist_set_column_auto_resize (GTK_CLIST(clist4), 0, TRUE);
-	
-	label6 = gtk_label_new (_("Shared Object"));
-	gtk_widget_show (label6);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 0, label6);
-	
-	label7 = gtk_label_new (_("From"));
-	gtk_widget_show (label7);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 1, label7);
-	
-	label8 = gtk_label_new (_("To"));
-	gtk_widget_show (label8);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 2, label8);
-	
-	/* Whether the debugging symbols in the shared libraries have been read */
-	label9 = gtk_label_new (_("Symbols read"));
-	gtk_widget_show (label9);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 3, label9);
+
+	treeview = sharedlibs_ui_create_treeview_and_store (sl);
+	gtk_widget_show (treeview);
+	gtk_container_add (GTK_CONTAINER (scrolledwindow4), treeview);
 	
-	gtk_signal_connect (GTK_OBJECT (window3), "delete_event",
-						GTK_SIGNAL_FUNC (on_sharedlibs_delete_event), sl);
-	gtk_signal_connect (GTK_OBJECT (window3), "key-press-event",
-						GTK_SIGNAL_FUNC (on_sharedlibs_key_press_event), sl);							 
-	gtk_signal_connect (GTK_OBJECT (clist4), "event",
-						GTK_SIGNAL_FUNC (on_sharedlibs_event),
+	g_signal_connect (G_OBJECT (window3), "delete_event",
+						G_CALLBACK (on_sharedlibs_delete_event), sl);
+	g_signal_connect (G_OBJECT (window3), "key-press-event",
+						G_CALLBACK (on_sharedlibs_key_press_event), sl);
+
+	g_signal_connect (G_OBJECT (treeview), "event",
+						G_CALLBACK (on_sharedlibs_event),
 						sl);
 	
 	sl->widgets.window = window3;
-	sl->widgets.clist = clist4;
-	sl->widgets.menu = create_sharedlibs_menu (sl);
-	sl->widgets.menu_update = sharedlibs_menu_uiinfo[0].widget;
+	sl->widgets.treeview = treeview;
+	sl->widgets.menu = create_sharedlibs_menu (sl, plugin);
 }
 
 Sharedlibs*
@@ -225,7 +265,7 @@
 		ew->win_height = 370;
 		ew->win_pos_x = 120;
 		ew->win_pos_y = 140;
-		create_sharedlibs_gui(ew);
+		create_sharedlibs_gui(ew, plugin);
 	}
 	return ew;
 }
@@ -233,8 +273,10 @@
 void
 sharedlibs_clear (Sharedlibs *sg)
 {
-	if(GTK_IS_CLIST(sg->widgets.clist))
-		gtk_clist_clear(GTK_CLIST(sg->widgets.clist));
+	g_return_if_fail (sg->widgets.store != NULL);
+	g_return_if_fail (GTK_IS_LIST_STORE (sg->widgets.store));
+
+	gtk_list_store_clear (sg->widgets.store);
 }
 
 void
@@ -285,6 +327,7 @@
 		sharedlibs_clear(sg);
 		gtk_widget_destroy(sg->widgets.window);
 		gtk_widget_destroy(sg->widgets.menu);
+		g_object_unref (sg->widgets.store);
 		g_free(sg);
 	}
 }

Modified: trunk/plugins/debug-manager/sharedlib.h
==============================================================================
--- trunk/plugins/debug-manager/sharedlib.h	(original)
+++ trunk/plugins/debug-manager/sharedlib.h	Sat Jan 31 09:55:08 2009
@@ -35,10 +35,11 @@
 
 struct _SharedlibsGui
 {
-    GtkWidget*   window;
-    GtkWidget*   clist;
-    GtkWidget*   menu;
-    GtkWidget*   menu_update;
+	GtkWidget*   window;
+	GtkWidget*   menu;
+	GtkActionGroup *action_group;
+	GtkWidget* treeview;
+	GtkListStore* store;
 };
 
 struct _Sharedlibs

Modified: trunk/plugins/debug-manager/signals.c
==============================================================================
--- trunk/plugins/debug-manager/signals.c	(original)
+++ trunk/plugins/debug-manager/signals.c	Sat Jan 31 09:55:08 2009
@@ -26,36 +26,47 @@
 #include <string.h>
 #include <ctype.h>
 
-#include <gnome.h>
-
+#include <libanjuta/anjuta-shell.h>
 #include <libanjuta/resources.h>
 
 #include "utilities.h"
 #include "signals.h"
 
 
-static GtkWidget* create_signals_set_dialog (Signals *s);
+enum _SignalColums
+{
+	SIGNAL_COLUMN_NAME,
+	SIGNAL_COLUMN_STOP,
+	SIGNAL_COLUMN_PRINT,
+	SIGNAL_COLUMN_PASS,
+	SIGNAL_COLUMN_DESCRIPTION,
+	SIGNAL_COLUMN_COUNT
+};
 
 static void
 signals_update_controls (Signals * ew)
 {
 	gboolean R, Pr;
 	
-	R = dma_debugger_queue_get_state (ew->debugger) == IANJUTA_DEBUGGER_OK;
+	R = dma_debugger_queue_get_state (ew->debugger) == IANJUTA_DEBUGGER_PROGRAM_STOPPED;
 	Pr = dma_debugger_queue_get_state (ew->debugger) == IANJUTA_DEBUGGER_PROGRAM_RUNNING;
-	gtk_widget_set_sensitive (ew->widgets.menu_signal, Pr);
-	gtk_widget_set_sensitive (ew->widgets.menu_modify, R);
-	gtk_widget_set_sensitive (ew->widgets.menu_update, R);
+	gtk_action_group_set_sensitive(ew->widgets.action_group_debugger_ok, R);
+	gtk_action_group_set_sensitive(ew->widgets.action_group_program_running, Pr);
 }
 
+/*
+ * signals_update:
+ */
 static void
 signals_update (const GList * lines, gpointer data)
 {
 	Signals *sg;
 	gint j, count;
-	gchar *row[5], *str;
+	gchar *str;
 	gchar sig[32], stop[10], print[10], pass[10];
 	GList *list, *node;
+	GtkTreeModel *model;
+	GtkTreeIter iter;
 	
 	sg = (Signals *) data;
 	signals_clear (sg);
@@ -65,12 +76,20 @@
 		g_list_free (list);
 		return;
 	}
-	gtk_clist_freeze (GTK_CLIST(sg->widgets.clist));
+
+	model = gtk_tree_view_get_model (GTK_TREE_VIEW (sg->widgets.treeview));
+	gtk_tree_view_set_model (GTK_TREE_VIEW (sg->widgets.treeview), NULL);
 	node = list->next;
+
+	/* Skip the first two lines */
+	if (node)
+		node = node->next;
+	if (node)
+		node = node->next;
 	while (node)
 	{
 		count =
-			sscanf ((char *) node->data, "%s %s %s %s", sig, stop, print, pass);
+			sscanf ((char *) node->data, "~%s %s %s %s", sig, stop, print, pass);
 		str = node->data;
 		node = g_list_next (node);
 		if (count != 4)
@@ -79,10 +98,6 @@
 		/* Do not worry. This is used to avoid the last line */
 		if (node == NULL)
 			break;
-		row[0] = sig;
-		row[1] = stop;
-		row[2] = print;
-		row[3] = pass;
 		for (j = 0; j < 4; j++)
 		{
 			while (isspace (*str))
@@ -92,19 +107,20 @@
 		}
 		while (isspace (*str))
 			str++;
-		row[4] = str;
-		gtk_clist_append (GTK_CLIST (sg->widgets.clist), row);
+
+		gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+		gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+				SIGNAL_COLUMN_NAME, sig,
+				SIGNAL_COLUMN_STOP, strcmp (stop, "Yes") == 0,
+				SIGNAL_COLUMN_PRINT, strcmp (print, "Yes") == 0,
+				SIGNAL_COLUMN_PASS, strcmp (pass, "Yes") == 0,
+				SIGNAL_COLUMN_DESCRIPTION, str,
+				-1);
 	}
-	g_list_free (list);
-	gtk_clist_thaw (GTK_CLIST(sg->widgets.clist));
-}
 
-static void
-on_signals_clist_select_row (GtkCList *clist, gint row,
-							 gint column, GdkEvent *event, gpointer user_data)
-{
-    Signals *s = (Signals*)user_data;
-    s->idx = row;
+	/* FIXME: do we need to free the char data as well? */
+	g_list_free (list);
+	gtk_tree_view_set_model (GTK_TREE_VIEW (sg->widgets.treeview), model);
 }
 
 static gint
@@ -129,29 +145,29 @@
 }
 
 static void
-on_signals_modify_activate (GtkMenuItem *menuitem, gpointer user_data)
-{
-	GtkWidget* dialog;
-    Signals *s = (Signals*)user_data;
-	
-	dialog = create_signals_set_dialog (s);
-	if (dialog)
-		gtk_widget_show (dialog);
-}
-
-static void
 on_signals_send_activate (GtkMenuItem *menuitem, gpointer user_data)
 {
-	#if 0
+	Signals *s = (Signals*)user_data;
+#if 0
 	gchar* sig;
-    Signals *s = (Signals*)user_data;
-	
-	if (debugger_program_is_running (s->debugger) == FALSE) return;
+	GtkTreeSelection *selection;
+	GtkTreeModel *model;
+	GtkTreeIter iter;
+#endif 
+	if (dma_debugger_queue_get_state (s->debugger) != IANJUTA_DEBUGGER_PROGRAM_RUNNING)
+		return;
+	/* has FIXME in debugger.c in gdb plugin */
+#if 0
 	
 	signals_show (s);
-	gtk_clist_get_text(GTK_CLIST (s->widgets.clist), s->idx, 0, &sig);
+	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (s->widgets.treeview));
+	gtk_tree_selection_get_selected (selection, &model, &iter);
+	gtk_tree_model_get (model, &iter, 
+			SIGNAL_COLUMN_NAME, &sig,
+			-1);
 	debugger_signal(sig, TRUE);
-	#endif
+	g_free (sig);
+#endif
 }
 
 static void
@@ -164,17 +180,17 @@
 			s);
 }
 
+/*
+ * Show popup menu on #GtkTreeView
+ */
 static gboolean
-on_signals_event (GtkWidget *widget, GdkEvent  *event, gpointer user_data)
+on_signals_event (GtkWidget *widget, GdkEventButton  *bevent, gpointer user_data)
 {
-	GdkEventButton *bevent;
     Signals *ew = (Signals*)user_data;
 	
-	if (event->type != GDK_BUTTON_PRESS) return FALSE;
-	if (((GdkEventButton *)event)->button != 3) return FALSE;
+	if (bevent->type != GDK_BUTTON_PRESS) return FALSE;
+	if (bevent->button != 3) return FALSE;
 	
-	bevent =  (GdkEventButton *)event;
-	bevent->button = 1;
 	signals_update_controls(ew);
 	gtk_menu_popup (GTK_MENU(ew->widgets.menu), NULL,
 					NULL, NULL, NULL,
@@ -182,134 +198,155 @@
 	return TRUE;
 }
 
-static void
-on_signals_togglebutton1_toggled (GtkToggleButton *togglebutton,
-								  gpointer user_data)
-{
-	Signals *sig = (Signals*) user_data;
-	
-	sig->stop = gtk_toggle_button_get_active (togglebutton);
-	if (sig->stop)
-		gtk_label_set_text (GTK_LABEL(GTK_BIN (togglebutton)->child), _("Yes"));
-    else
-		gtk_label_set_text (GTK_LABEL(GTK_BIN (togglebutton)->child), _("No"));
-}
-
-static void
-on_signals_togglebutton2_toggled (GtkToggleButton *togglebutton,
-								  gpointer user_data)
-{
-	Signals *sig = (Signals*) user_data;
-	
-	sig->print = gtk_toggle_button_get_active(togglebutton);
-	if (sig->print)
-		gtk_label_set_text (GTK_LABEL(GTK_BIN(togglebutton)->child), _("Yes"));
-    else
-		gtk_label_set_text (GTK_LABEL(GTK_BIN(togglebutton)->child), _("No"));
-}
-
-static void
-on_signals_togglebutton3_toggled (GtkToggleButton *togglebutton,
-								  gpointer user_data)
-{
-	Signals *sig = (Signals*) user_data;
-	
-	sig->pass = gtk_toggle_button_get_active (togglebutton);
-	if (sig->pass)
-		gtk_label_set_text (GTK_LABEL(GTK_BIN(togglebutton)->child), _("Yes"));
-    else
-		gtk_label_set_text (GTK_LABEL(GTK_BIN(togglebutton)->child), _("No"));
-}
-
-static void
-on_signals_set_ok_clicked              (GtkButton       *button,
-                                        gpointer         user_data)
-{
-	Signals *s = (Signals*) user_data;
+/*
+ * on_column_toggled:
+ *
+ * @renderer: cell renderer on which the toggle happened
+ * @path: row in list where the change happened
+ * @sig: instance of #Signals
+ *
+ * Callback if one of the three boolean columns has been toggled by the 
+ * user. If the debugged program is not stopped this function will
+ * do nothing. Function will fetch state of signal from list store, update the 
+ * affected column and pass on the data to the debugging backend using
+ * dma_queue_handler_signal().
+ */
+static void
+on_column_toggled(GtkCellRendererToggle *renderer, gchar *path, Signals *sig)
+{
+	GtkTreeIter iter;
+	gchar *signal;
+	gboolean data[SIGNAL_COLUMN_COUNT];
+	guint column;
 
-	if(s->stop)
-	{
-		gtk_clist_set_text(GTK_CLIST(s->widgets.clist), s->idx, 1, "Yes");
-	}
-	else
-	{
-		gtk_clist_set_text(GTK_CLIST(s->widgets.clist), s->idx, 1, "No");
-	}
-	if(s->print)
+	if (dma_debugger_queue_get_state (sig->debugger) != IANJUTA_DEBUGGER_PROGRAM_STOPPED)
 	{
-		gtk_clist_set_text(GTK_CLIST(s->widgets.clist), s->idx, 2, "Yes");
-	}
-	else
-	{
-		gtk_clist_set_text(GTK_CLIST(s->widgets.clist), s->idx, 2, "No");
-	}
-	if(s->pass)
-	{
-		gtk_clist_set_text(GTK_CLIST(s->widgets.clist), s->idx, 3, "Yes");
+		return;
 	}
-	else
-	{
-		gtk_clist_set_text(GTK_CLIST(s->widgets.clist), s->idx, 3, "No");
+
+	column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (renderer), "__column_nr"));
+	
+	gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (sig->widgets.store),
+			&iter,
+			path);
+	gtk_tree_model_get (GTK_TREE_MODEL (sig->widgets.store),
+			&iter,
+			SIGNAL_COLUMN_NAME, &signal,
+			SIGNAL_COLUMN_STOP, &data[SIGNAL_COLUMN_STOP],
+			SIGNAL_COLUMN_PRINT, &data[SIGNAL_COLUMN_PRINT],
+			SIGNAL_COLUMN_PASS, &data[SIGNAL_COLUMN_PASS],
+			-1);
+
+	data[column] = !data[column];
+
+	gtk_list_store_set (sig->widgets.store,
+			&iter,
+			column, data[column], -1);
+	dma_queue_handle_signal (sig->debugger, signal, 
+			data[SIGNAL_COLUMN_STOP],
+			data[SIGNAL_COLUMN_PRINT],
+			data[SIGNAL_COLUMN_PASS]);
+	g_free (signal);
+}
+
+static void
+signals_add_toggle_column (GtkTreeView *tv, const gchar *title, guint column_num, Signals *sig)
+{
+	GtkCellRenderer *renderer;
+	GtkTreeViewColumn *column;
+
+	renderer = gtk_cell_renderer_toggle_new ();
+	g_object_set (G_OBJECT (renderer), "editable", TRUE, NULL);
+	column = gtk_tree_view_column_new_with_attributes (title,
+			renderer, 
+			"active", column_num,
+			NULL);
+	gtk_tree_view_append_column (tv, column);
+	g_object_set_data (G_OBJECT (renderer), "__column_nr", GINT_TO_POINTER (column_num));
+	g_signal_connect (G_OBJECT (renderer), 
+			"toggled", G_CALLBACK (on_column_toggled), sig);
+}
+
+static GtkWidget *
+signals_create_list_store_and_treeview(Signals *sig)
+{
+	GtkListStore *store;
+	GtkWidget *w;
+	GtkCellRenderer *renderer;
+	GtkTreeViewColumn *column;
+
+	store = gtk_list_store_new (SIGNAL_COLUMN_COUNT, 
+								G_TYPE_STRING,
+								G_TYPE_BOOLEAN,
+								G_TYPE_BOOLEAN,
+								G_TYPE_BOOLEAN,
+								G_TYPE_STRING
+								);
+	
+	w = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
+	
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes (_("Signal"),
+			renderer, 
+			"text", SIGNAL_COLUMN_NAME,
+			NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (w), column);
+
+	signals_add_toggle_column (GTK_TREE_VIEW (w), _("Stop"), SIGNAL_COLUMN_STOP, sig);
+	signals_add_toggle_column (GTK_TREE_VIEW (w), _("Print"), SIGNAL_COLUMN_PRINT, sig);
+	signals_add_toggle_column (GTK_TREE_VIEW (w), _("Pass"), SIGNAL_COLUMN_PASS, sig);
+
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes (_("Description"),
+			renderer, 
+			"text", SIGNAL_COLUMN_DESCRIPTION,
+			NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (w), column);
+
+	g_signal_connect (G_OBJECT (w), "button-press-event", 
+			G_CALLBACK (on_signals_event), sig);
+
+	return w;
+}
+
+/* Actions table
+ *---------------------------------------------------------------------------*/
+
+static GtkActionEntry actions_signals_program_running[] = {
+	{
+		"ActionDmaSignalSend",         	/* Action name */
+		NULL,                                 	/* Stock icon, if any */
+		N_("Send to process"),               /* Display label */
+		NULL,                                   /* short-cut */
+		NULL,                                   /* Tooltip */
+		G_CALLBACK (on_signals_send_activate) 	/* action callback */
 	}
-	dma_queue_handle_signal (s->debugger, s->signal, s->stop, s->print, s->pass);
-}
+};
 
-static GnomeUIInfo signals_menu_uiinfo[] =
-{
-	{
-		GNOME_APP_UI_ITEM, N_("Modify Signal"),
-		NULL,
-		on_signals_modify_activate, NULL, NULL,
-		GNOME_APP_PIXMAP_NONE, NULL,
-		0, 0, NULL
-	},
+static GtkActionEntry actions_signals_debugger_ok[] = {
 	{
-		GNOME_APP_UI_ITEM, N_("Send to process"),
+		"ActionDmaSignalUpdate",
+		GTK_STOCK_REFRESH,
+		N_("Update"),
 		NULL,
-		on_signals_send_activate, NULL, NULL,
-		GNOME_APP_PIXMAP_NONE, NULL,
-		0, 0, NULL
-	},
-	{
-		GNOME_APP_UI_ITEM, N_("Update"),
 		NULL,
-		on_signals_update_activate, NULL, NULL,
-		GNOME_APP_PIXMAP_NONE, NULL,
-		0, 0, NULL
-	},
-	GNOMEUIINFO_END
+		G_CALLBACK (on_signals_update_activate)
+	}
 };
 
-static GtkWidget*
-create_signals_menu (Signals *s)
-{
-	GtkWidget *signals_menu;
-	
-	signals_menu = gtk_menu_new ();
-	
-	signals_menu_uiinfo[0].user_data = s;
-	signals_menu_uiinfo[1].user_data = s;
-	signals_menu_uiinfo[2].user_data = s;
-	
-	gnome_app_fill_menu (GTK_MENU_SHELL (signals_menu), signals_menu_uiinfo,
-						 NULL, FALSE, 0);
-	return signals_menu;
-}
 
 static void
 create_signals_gui (Signals *cr)
 {
 	GtkWidget *window3;
 	GtkWidget *scrolledwindow4;
-	GtkWidget *clist4;
-	GtkWidget *label6, *label7, *label8, *label9, *label10;
+	GtkWidget *tv;
 
 	window3 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 	gtk_widget_set_usize (window3, 170, -2);
 	gtk_window_set_title (GTK_WINDOW (window3), _("Kernel signals"));
 	gtk_window_set_wmclass (GTK_WINDOW (window3), "signals", "Anjuta");
 	gtk_window_set_default_size (GTK_WINDOW (window3), 240, 230);
-	gnome_window_icon_set_from_default(GTK_WINDOW(window3));
 
 	scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL);
 	gtk_widget_show (scrolledwindow4);
@@ -317,240 +354,51 @@
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4),
 									GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 	
-	clist4 = gtk_clist_new (5);
-	gtk_widget_show (clist4);
-	gtk_container_add (GTK_CONTAINER (scrolledwindow4), clist4);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 0, 100);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 1, 50);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 2, 50);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 3, 50);
-	gtk_clist_set_column_width (GTK_CLIST (clist4), 4, 80);
-	gtk_clist_set_selection_mode (GTK_CLIST (clist4), GTK_SELECTION_BROWSE);
-	gtk_clist_column_titles_show (GTK_CLIST (clist4));
-	gtk_clist_set_column_auto_resize (GTK_CLIST(clist4), 4, TRUE);
-	
-	label6 = gtk_label_new (_("Signal"));
-	gtk_widget_show (label6);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 0, label6);
-	
-	label7 = gtk_label_new (_("Stop"));
-	gtk_widget_show (label7);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 1, label7);
-	
-	label8 = gtk_label_new (_("Print"));
-	gtk_widget_show (label8);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 2, label8);
-	
-	label9 = gtk_label_new (_("Pass"));
-	gtk_widget_show (label9);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 3, label9);
-	
-	label10 = gtk_label_new (_("Description"));
-	gtk_widget_show (label10);
-	gtk_clist_set_column_widget (GTK_CLIST (clist4), 4, label10);
-	
+	tv = signals_create_list_store_and_treeview (cr);
+	gtk_widget_show (tv);
+	gtk_container_add (GTK_CONTAINER (scrolledwindow4), tv);
 	gtk_signal_connect (GTK_OBJECT (window3), "delete_event",
 						GTK_SIGNAL_FUNC (on_signals_delete_event), cr);
 	gtk_signal_connect (GTK_OBJECT (window3), "key-press-event",
 						GTK_SIGNAL_FUNC (on_signals_key_press_event), cr);
 	
-	gtk_signal_connect (GTK_OBJECT (clist4), "event",
-						GTK_SIGNAL_FUNC (on_signals_event),
-						cr);
-	gtk_signal_connect (GTK_OBJECT (clist4), "select_row",
-						GTK_SIGNAL_FUNC (on_signals_clist_select_row),
-						cr);
-
 	cr->widgets.window = window3;
-	cr->widgets.clist = clist4;
-	cr->widgets.menu = create_signals_menu (cr);
-	cr->widgets.menu_modify = signals_menu_uiinfo[0].widget;
-	cr->widgets.menu_signal = signals_menu_uiinfo[1].widget;
-	cr->widgets.menu_update = signals_menu_uiinfo[2].widget;
-}
-
-static GtkWidget*
-create_signals_set_dialog (Signals *s)
-{
-	GtkWidget *dialog1;
-	GtkWidget *dialog_vbox1;
-	GtkWidget *hbox1;
-	GtkWidget *label1;
-	GtkWidget *label2;
-	GtkWidget *hbox2;
-	GtkWidget *label3;
-	GtkWidget *label4;
-	GtkWidget *hseparator1;
-	GtkWidget *hbox4;
-	GtkWidget *label5;
-	GtkWidget *label6;
-	GtkWidget *label7;
-	GtkWidget *hbox3;
-	GtkWidget *togglebutton1;
-	GtkWidget *togglebutton2;
-	GtkWidget *togglebutton3;
-	GtkWidget *dialog_action_area1;
-	GtkWidget *button1;
-	GtkWidget *button2;
-	GtkWidget *button3;
-	gchar *row[5];
-	
-	if(s->idx < 0)
-		return NULL;
-	
-	gtk_clist_get_text(GTK_CLIST(s->widgets.clist), s->idx,0, &row[0]);
-	gtk_clist_get_text(GTK_CLIST(s->widgets.clist), s->idx,1, &row[1]);
-	gtk_clist_get_text(GTK_CLIST(s->widgets.clist), s->idx,2, &row[2]);
-	gtk_clist_get_text(GTK_CLIST(s->widgets.clist), s->idx,3, &row[3]);
-	gtk_clist_get_text(GTK_CLIST(s->widgets.clist), s->idx,4, &row[4]);
-	s->signal = row[0];
-	
-	if(strcasecmp(row[1], "Yes")==0)
-		s->stop = TRUE;
-	else
-		s->stop = FALSE;
-
-	if(strcasecmp(row[2], "Yes")==0)
-		s->print = TRUE;
-	else
-		s->print = FALSE;
-
-	if(strcasecmp(row[3], "Yes")==0)
-		s->pass = TRUE;
-	else
-		s->pass = FALSE;
-	
-	dialog1 = gnome_dialog_new (_("Set Signal Property"), NULL);
-	gtk_window_set_transient_for (GTK_WINDOW(dialog1),
-								  GTK_WINDOW(s->widgets.window));
-	GTK_WINDOW (dialog1)->type = GTK_WINDOW_TOPLEVEL;
-	gtk_window_set_position (GTK_WINDOW (dialog1), GTK_WIN_POS_MOUSE);
-	gtk_window_set_policy (GTK_WINDOW (dialog1), FALSE, FALSE, FALSE);
-	gtk_window_set_wmclass (GTK_WINDOW (dialog1), "set_signal", "Anjuta");
-	gnome_dialog_set_close (GNOME_DIALOG (dialog1), TRUE);
-	
-	dialog_vbox1 = GNOME_DIALOG (dialog1)->vbox;
-	gtk_widget_show (dialog_vbox1);
-	
-	hbox1 = gtk_hbox_new (FALSE, 0);
-	gtk_widget_show (hbox1);
-	gtk_box_pack_start (GTK_BOX (dialog_vbox1), hbox1, TRUE, TRUE, 0);
-	
-	label1 = gtk_label_new ("Signal: ");
-	gtk_widget_show (label1);
-	gtk_box_pack_start (GTK_BOX (hbox1), label1, FALSE, FALSE, 0);
-	
-	label2 = gtk_label_new (row[0]);
-	gtk_widget_show (label2);
-	gtk_box_pack_start (GTK_BOX (hbox1), label2, FALSE, FALSE, 0);
-	
-	hbox2 = gtk_hbox_new (FALSE, 0);
-	gtk_widget_show (hbox2);
-	gtk_box_pack_start (GTK_BOX (dialog_vbox1), hbox2, TRUE, TRUE, 0);
-	
-	label3 = gtk_label_new ("Description: ");
-	gtk_widget_show (label3);
-	gtk_box_pack_start (GTK_BOX (hbox2), label3, FALSE, FALSE, 0);
-	
-	label4 = gtk_label_new (row[4]);
-	gtk_widget_show (label4);
-	gtk_box_pack_start (GTK_BOX (hbox2), label4, FALSE, FALSE, 0);
-	
-	hseparator1 = gtk_hseparator_new ();
-	gtk_widget_show (hseparator1);
-	gtk_box_pack_start (GTK_BOX (dialog_vbox1), hseparator1, TRUE, TRUE, 0);
-	
-	hbox4 = gtk_hbox_new (FALSE, 0);
-	gtk_widget_show (hbox4);
-	gtk_box_pack_start (GTK_BOX (dialog_vbox1), hbox4, TRUE, TRUE, 0);
-	
-	label5 = gtk_label_new (_("Stop:"));
-	gtk_widget_show (label5);
-	gtk_box_pack_start (GTK_BOX (hbox4), label5, TRUE, TRUE, 0);
-	
-	label6 = gtk_label_new (_("Print:"));
-	gtk_widget_show (label6);
-	gtk_box_pack_start (GTK_BOX (hbox4), label6, TRUE, TRUE, 0);
-	
-	label7 = gtk_label_new (_("Pass:"));
-	gtk_widget_show (label7);
-	gtk_box_pack_start (GTK_BOX (hbox4), label7, TRUE, TRUE, 0);
-	
-	hbox3 = gtk_hbox_new (FALSE, 0);
-	gtk_widget_show (hbox3);
-	gtk_box_pack_start (GTK_BOX (dialog_vbox1), hbox3, TRUE, TRUE, 0);
-	
-	togglebutton1 = gtk_toggle_button_new_with_label (row[1]);
-	gtk_widget_show (togglebutton1);
-	gtk_box_pack_start (GTK_BOX (hbox3), togglebutton1, TRUE, TRUE, 0);
-	gtk_container_set_border_width (GTK_CONTAINER (togglebutton1), 3);
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(togglebutton1), s->stop);
-	
-	togglebutton2 = gtk_toggle_button_new_with_label (row[2]);
-	gtk_widget_show (togglebutton2);
-	gtk_box_pack_start (GTK_BOX (hbox3), togglebutton2, TRUE, TRUE, 0);
-	gtk_container_set_border_width (GTK_CONTAINER (togglebutton2), 3);
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(togglebutton2), s->print);
-	
-	togglebutton3 = gtk_toggle_button_new_with_label (row[3]);
-	gtk_widget_show (togglebutton3);
-	gtk_box_pack_start (GTK_BOX (hbox3), togglebutton3, TRUE, TRUE, 0);
-	gtk_container_set_border_width (GTK_CONTAINER (togglebutton3), 3);
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(togglebutton3), s->pass);
-	
-	dialog_action_area1 = GNOME_DIALOG (dialog1)->action_area;
-	gtk_widget_show (dialog_action_area1);
-	gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1),
-							   GTK_BUTTONBOX_SPREAD);
-	gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area1), 8);
-	
-	gnome_dialog_append_button (GNOME_DIALOG (dialog1),
-								GNOME_STOCK_BUTTON_HELP);
-	button1 = g_list_last (GNOME_DIALOG (dialog1)->buttons)->data;
-	gtk_widget_show (button1);
-	GTK_WIDGET_SET_FLAGS (button1, GTK_CAN_DEFAULT);
-	
-	gnome_dialog_append_button (GNOME_DIALOG (dialog1), GNOME_STOCK_BUTTON_OK);
-	button2 = g_list_last (GNOME_DIALOG (dialog1)->buttons)->data;
-	gtk_widget_show (button2);
-	GTK_WIDGET_SET_FLAGS (button2, GTK_CAN_DEFAULT);
-	
-	gnome_dialog_append_button (GNOME_DIALOG (dialog1),
-								GNOME_STOCK_BUTTON_CANCEL);
-	button3 = g_list_last (GNOME_DIALOG (dialog1)->buttons)->data;
-	gtk_widget_show (button3);
-	GTK_WIDGET_SET_FLAGS (button3, GTK_CAN_DEFAULT);
-	
-	gtk_signal_connect (GTK_OBJECT (togglebutton1), "toggled",
-						GTK_SIGNAL_FUNC (on_signals_togglebutton1_toggled),
-						s);
-	gtk_signal_connect (GTK_OBJECT (togglebutton2), "toggled",
-						GTK_SIGNAL_FUNC (on_signals_togglebutton2_toggled),
-						s);
-	gtk_signal_connect (GTK_OBJECT (togglebutton3), "toggled",
-						GTK_SIGNAL_FUNC (on_signals_togglebutton3_toggled),
-						s);
-	gtk_signal_connect (GTK_OBJECT (button2), "clicked",
-						GTK_SIGNAL_FUNC (on_signals_set_ok_clicked),
-						s);
-	return dialog1;
+	cr->widgets.treeview = tv;
+	cr->widgets.store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (tv)));
 }
 
 Signals *
 signals_new (DebugManagerPlugin *plugin)
 {
 	Signals *ew;
+	AnjutaUI *ui;
 	ew = g_malloc (sizeof (Signals));
 	if (ew)
 	{
+		ew->plugin = plugin;
 		ew->debugger = dma_debug_manager_get_queue (plugin);
 		ew->is_showing = FALSE;
 		ew->win_width = 460;
 		ew->win_height = 320;
 		ew->win_pos_x = 150;
 		ew->win_pos_y = 130;
-		ew->idx = -1;
 		create_signals_gui (ew);
+		ui = anjuta_shell_get_ui (ANJUTA_PLUGIN(plugin)->shell, NULL);
+		ew->widgets.action_group_debugger_ok = 
+				anjuta_ui_add_action_group_entries (ui, "ActionGroupSignalsDebuggerOk",
+													_("Signal operations"),
+													actions_signals_debugger_ok,
+													G_N_ELEMENTS (actions_signals_debugger_ok),
+													GETTEXT_PACKAGE, TRUE, ew);
+		ew->widgets.action_group_program_running = 
+				anjuta_ui_add_action_group_entries (ui, "ActionGroupSignalsProgramRunning",
+													_("Signal operations"),
+													actions_signals_program_running,
+													G_N_ELEMENTS (actions_signals_program_running),
+													GETTEXT_PACKAGE, TRUE, ew);
+		ew->widgets.menu = GTK_MENU (gtk_ui_manager_get_widget (GTK_UI_MANAGER (ui),
+					"/PopupSignals"));
+
 	}
 	return ew;
 }
@@ -558,9 +406,10 @@
 void
 signals_clear (Signals * sg)
 {
-	if (GTK_IS_CLIST (sg->widgets.clist))
-		gtk_clist_clear (GTK_CLIST (sg->widgets.clist));
-	sg->idx = -1;
+	g_return_if_fail (sg->widgets.store != NULL);
+	g_return_if_fail (GTK_IS_LIST_STORE(sg->widgets.store));
+
+	gtk_list_store_clear (sg->widgets.store);
 }
 
 void
@@ -611,7 +460,10 @@
 	{
 		signals_clear (sg);
 		gtk_widget_destroy (sg->widgets.window);
-		gtk_widget_destroy (sg->widgets.menu);
+		g_object_unref (sg->widgets.store);
+		g_object_unref (sg->widgets.menu);
+		g_object_unref (sg->widgets.action_group_debugger_ok);
+		g_object_unref (sg->widgets.action_group_program_running);
 		g_free (sg);
 	}
 }

Modified: trunk/plugins/debug-manager/signals.h
==============================================================================
--- trunk/plugins/debug-manager/signals.h	(original)
+++ trunk/plugins/debug-manager/signals.h	Sat Jan 31 09:55:08 2009
@@ -36,25 +36,22 @@
 
 struct _SignalsGui
 {
-    GtkWidget*   window;
-    GtkWidget*   clist;
-    GtkWidget*   menu;
-    GtkWidget*   menu_modify;
-    GtkWidget*   menu_signal;
-    GtkWidget*   menu_update;
+	GtkWidget*   window;
+	GtkWidget*   treeview;
+	GtkListStore* store;
+	GtkActionGroup *action_group_debugger_ok;
+	GtkActionGroup *action_group_program_running;
+
+	GtkMenu*   menu;
 };
 
 struct _Signals
 {
 	SignalsGui  widgets;
+	DebugManagerPlugin *plugin;
 	DmaDebuggerQueue *debugger;
 	gboolean is_showing;
 	gint win_pos_x, win_pos_y, win_width, win_height;
-	gint	idx;
-	gchar	*signal;
-	gboolean stop;
-	gboolean print;
-	gboolean pass;
 };
 
 Signals* signals_new (DebugManagerPlugin *plugin);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]