summaryrefslogtreecommitdiffstats
path: root/src/MainWindow.cc
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-08-16 19:55:43 +0000
committerLennart Poettering <lennart@poettering.net>2004-08-16 19:55:43 +0000
commit7b738b897f6e523024faadef9c1efb6a9aa32f59 (patch)
treebf003526bb2e10732f8c8eea26981714e35fe872 /src/MainWindow.cc
parentb3f41bd9945792ac7869db78fd75983546222622 (diff)
add sink input/source output support (currently broken)
git-svn-id: file:///home/lennart/svn/public/paman/trunk@12 cdefa82f-4ce1-0310-97f5-ab6066f37c3c
Diffstat (limited to 'src/MainWindow.cc')
-rw-r--r--src/MainWindow.cc59
1 files changed, 59 insertions, 0 deletions
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<Gnome::Glade::Xml>& 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) {