diff --git a/gui/gui.glade b/gui/gui.glade
index 274d0a49..00f0213d 100644
--- a/gui/gui.glade
+++ b/gui/gui.glade
@@ -485,11 +485,11 @@ The bar represents the percentage of available time used for audio processing (i
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
204
-
+
True
GTK_RESIZE_QUEUE
-
+
True
True
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
diff --git a/gui/main.c b/gui/main.c
index 7555ad66..107c2443 100644
--- a/gui/main.c
+++ b/gui/main.c
@@ -33,6 +33,7 @@
#include "dbus_helpers.h"
#include "control_proxy.h"
#include "../dbus_constants.h"
+#include "world_tree.h"
#if 0
class Patchage {
@@ -965,15 +966,21 @@ void control_proxy_on_studio_appeared(void)
{
g_studio_view = create_view("Studio", SERVICE_NAME, STUDIO_OBJECT_PATH);
attach_view(g_studio_view);
+ world_tree_add_studio(g_studio_view->graph);
+
g_jack_view = create_view("Raw JACK", JACKDBUS_SERVICE_NAME, JACKDBUS_OBJECT_PATH);
attach_view(g_jack_view);
+ world_tree_add_jack(g_jack_view->graph);
}
void control_proxy_on_studio_disappeared(void)
{
detach_view(g_jack_view);
+ world_tree_remove(g_jack_view->graph);
destroy_view(g_jack_view);
+
detach_view(g_studio_view);
+ world_tree_remove(g_studio_view->graph);
destroy_view(g_studio_view);
}
@@ -998,6 +1005,8 @@ int main(int argc, char** argv)
main_win = get_glade_widget("main_win");
g_main_scrolledwin = GTK_SCROLLED_WINDOW(get_glade_widget("main_scrolledwin"));
+ world_tree_init();
+
patchage_dbus_init();
if (!control_proxy_init())
diff --git a/gui/world_tree.c b/gui/world_tree.c
index 4497ec74..7113a77c 100644
--- a/gui/world_tree.c
+++ b/gui/world_tree.c
@@ -26,6 +26,7 @@
#include "common.h"
#include "world_tree.h"
+#include "glade.h"
#if 0
#include
@@ -378,22 +379,69 @@ project_list::set_lash_availability(
}
#endif
+enum
+{
+ COL_NAME = 0,
+ COL_GRAPH,
+ NUM_COLS
+};
+
+GtkWidget * g_world_tree_widget;
+GtkTreeStore * g_treestore;
+
void world_tree_init(void)
{
+ GtkTreeViewColumn * col;
+ GtkCellRenderer * renderer;
+
+ g_world_tree_widget = get_glade_widget("world_tree");
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(g_world_tree_widget), FALSE);
+
+ col = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title(col, "Name");
+ gtk_tree_view_append_column(GTK_TREE_VIEW(g_world_tree_widget), col);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(col, renderer, TRUE);
+ gtk_tree_view_column_add_attribute(col, renderer, "text", COL_NAME);
+
+ g_treestore = gtk_tree_store_new(NUM_COLS, G_TYPE_STRING, G_TYPE_POINTER);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(g_world_tree_widget), GTK_TREE_MODEL(g_treestore));
}
void world_tree_add_studio(graph_handle graph)
{
-}
+ GtkTreeIter iter;
-void world_tree_remove_studio(graph_handle graph)
-{
+ gtk_tree_store_append(g_treestore, &iter, NULL);
+ gtk_tree_store_set(g_treestore, &iter, COL_NAME, "Studio", COL_GRAPH, graph, -1);
}
void world_tree_add_jack(graph_handle graph)
{
+ GtkTreeIter toplevel;
+
+ gtk_tree_store_append(g_treestore, &toplevel, NULL);
+ gtk_tree_store_set(g_treestore, &toplevel, COL_NAME, "JACK", COL_GRAPH, graph, -1);
}
-void world_tree_remove_jack(graph_handle graph)
+void world_tree_remove(graph_handle graph)
{
+ GtkTreeIter iter;
+ gchar * name;
+ graph_handle graph2;
+
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(g_treestore), &iter))
+ {
+ do
+ {
+ gtk_tree_model_get(GTK_TREE_MODEL(g_treestore), &iter, COL_NAME, &name, COL_GRAPH, &graph2, -1);
+ //lash_info("'%s' %p", name, graph2);
+ if (graph == graph2)
+ {
+ gtk_tree_store_remove(g_treestore, &iter);
+ return;
+ }
+ }
+ while (gtk_tree_model_iter_next(GTK_TREE_MODEL(g_treestore), &iter));
+ }
}
diff --git a/gui/world_tree.h b/gui/world_tree.h
index 34f284cf..fc93dcc6 100644
--- a/gui/world_tree.h
+++ b/gui/world_tree.h
@@ -32,9 +32,7 @@
void world_tree_init(void);
void world_tree_add_studio(graph_handle graph);
-void world_tree_remove_studio(graph_handle graph);
-
void world_tree_add_jack(graph_handle graph);
-void world_tree_remove_jack(graph_handle graph);
+void world_tree_remove(graph_handle graph);
#endif // #ifndef WORLD_TREE_H__D786489B_E400_4E92_85C7_2BAE606DE56D__INCLUDED