From 7b738b897f6e523024faadef9c1efb6a9aa32f59 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 16 Aug 2004 19:55:43 +0000 Subject: add sink input/source output support (currently broken) git-svn-id: file:///home/lennart/svn/public/paman/trunk@12 cdefa82f-4ce1-0310-97f5-ab6066f37c3c --- src/MainWindow.cc | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'src/MainWindow.cc') diff --git a/src/MainWindow.cc b/src/MainWindow.cc index fdb817a..26a3b90 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc @@ -12,6 +12,8 @@ enum { ROW_TYPE_SOURCE_CATEGORY, ROW_TYPE_SINK, ROW_TYPE_SOURCE, + ROW_TYPE_SINK_INPUT, + ROW_TYPE_SOURCE_OUTPUT, }; MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr& refGlade) : @@ -136,6 +138,44 @@ void MainWindow::updateInfo(ModuleInfo &i) { moduleOpenButton->set_sensitive(true); } +void MainWindow::updateInfo(SinkInputInfo &i) { + if (!i.treeRef) { + SinkInfo *si = serverInfoManager->getSinkInfo(i.sink); + if (!si) + return; + + Gtk::TreeIter iter = deviceTreeStore->get_iter(si->treeRef.get_path()); + i.treeRef = Gtk::TreeRowReference(deviceTreeStore, Gtk::TreePath(deviceTreeStore->append(iter->children()))); + } + + Gtk::TreeRow row = *(deviceTreeStore->get_iter(i.treeRef.get_path())); + row[deviceTreeModelColumns.name] = i.name; + row[deviceTreeModelColumns.index] = i.index; + row[deviceTreeModelColumns.type] = ROW_TYPE_SINK_INPUT; + + deviceTreeView->expand_row(sinkRef.get_path(), true); + onDeviceTreeViewCursorChanged(); +} + +void MainWindow::updateInfo(SourceOutputInfo &i) { + if (!i.treeRef) { + SourceInfo *si = serverInfoManager->getSourceInfo(i.source); + if (!si) + return; + + Gtk::TreeIter iter = deviceTreeStore->get_iter(si->treeRef.get_path()); + i.treeRef = Gtk::TreeRowReference(deviceTreeStore, Gtk::TreePath(deviceTreeStore->append(iter->children()))); + } + + Gtk::TreeRow row = *(deviceTreeStore->get_iter(i.treeRef.get_path())); + row[deviceTreeModelColumns.name] = i.name; + row[deviceTreeModelColumns.index] = i.index; + row[deviceTreeModelColumns.type] = ROW_TYPE_SOURCE_OUTPUT; + + deviceTreeView->expand_row(sinkRef.get_path(), true); + onDeviceTreeViewCursorChanged(); +} + void MainWindow::removeInfo(SinkInfo &i) { if (i.treeRef) deviceTreeStore->erase(deviceTreeStore->get_iter(i.treeRef.get_path())); @@ -164,6 +204,21 @@ void MainWindow::removeInfo(ModuleInfo &i) { moduleOpenButton->set_sensitive(!moduleTreeStore->children().empty()); } +void MainWindow::removeInfo(SourceOutputInfo &i) { + if (!i.treeRef) + deviceTreeStore->erase(deviceTreeStore->get_iter(i.treeRef.get_path())); + + onDeviceTreeViewCursorChanged(); +} + +void MainWindow::removeInfo(SinkInputInfo &i) { + if (!i.treeRef) + deviceTreeStore->erase(deviceTreeStore->get_iter(i.treeRef.get_path())); + + onDeviceTreeViewCursorChanged(); +} + + void MainWindow::onDeviceTreeViewCursorChanged() { Gtk::TreeModel::Path p; Gtk::TreeViewColumn *c; @@ -271,6 +326,10 @@ void MainWindow::showDeviceWindow(const Gtk::TreePath &p) { serverInfoManager->showSinkWindow(row[deviceTreeModelColumns.index]); else if (row[deviceTreeModelColumns.type] == ROW_TYPE_SOURCE) serverInfoManager->showSourceWindow(row[deviceTreeModelColumns.index]); + else if (row[deviceTreeModelColumns.type] == ROW_TYPE_SINK_INPUT) + serverInfoManager->showSinkInputWindow(row[deviceTreeModelColumns.index]); + else if (row[deviceTreeModelColumns.type] == ROW_TYPE_SOURCE_OUTPUT) + serverInfoManager->showSourceOutputWindow(row[deviceTreeModelColumns.index]); } void MainWindow::showClientWindow(const Gtk::TreePath &p) { -- cgit