summaryrefslogtreecommitdiff
path: root/gtk2_ardour/itest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/itest.cc')
-rw-r--r--gtk2_ardour/itest.cc222
1 files changed, 0 insertions, 222 deletions
diff --git a/gtk2_ardour/itest.cc b/gtk2_ardour/itest.cc
deleted file mode 100644
index db6ede0fd2..0000000000
--- a/gtk2_ardour/itest.cc
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- Copyright (C) 2000-2007 Paul Davis
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#include <map>
-#include <vector>
-#include <string>
-#include <iostream>
-
-#include <gtkmm/main.h>
-#include <gtkmm/window.h>
-#include <gtkmm/box.h>
-#include <gtkmm/scrolledwindow.h>
-#include <gtkmm2ext/dndtreeview.h>
-#include <gtkmm/treemodel.h>
-#include <gtkmm/treestore.h>
-#include <gtkmm/treepath.h>
-#include <gtkmm/button.h>
-#include <gtkmm/window.h>
-#include <jack/jack.h>
-
-using namespace std;
-using namespace Gtk;
-using namespace Gtkmm2ext;
-using namespace Glib;
-
-struct ModelColumns : public TreeModel::ColumnRecord {
- ModelColumns() {
- add (used);
- add (text);
- add (port);
- }
- TreeModelColumn<bool> used;
- TreeModelColumn<string> text;
- TreeModelColumn<jack_port_t*> port;
-};
-
-jack_client_t* jack;
-
-void
-fill_it (RefPtr<TreeStore> model, TreeView* display, ModelColumns* columns)
-{
- RefPtr<TreeModel> old = display->get_model();
- display->set_model (RefPtr<TreeStore>(0));
-
- model->clear ();
-
- const char ** ports;
- typedef map<string,vector<pair<string,string> > > PortMap;
- PortMap portmap;
- PortMap::iterator i;
-
- ports = jack_get_ports (jack, "", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput);
-
- if (ports == 0) {
- goto out;
- }
-
- /* find all the client names and group their ports into a list-by-client */
-
- for (int n = 0; ports[n]; ++n) {
-
- pair<string,vector<pair<string,string> > > newpair;
- pair<string,string> strpair;
- std::pair<PortMap::iterator,bool> result;
-
- string str = ports[n];
- string::size_type pos;
- string portname;
-
- pos = str.find (':');
-
- newpair.first = str.substr (0, pos);
- portname = str.substr (pos+1);
-
- /* this may or may not succeed at actually inserting.
- we don't care, however: we just want an iterator
- that gives us either the inserted element or
- the existing one with the same name.
- */
-
- result = portmap.insert (newpair);
-
- strpair.first = portname;
- strpair.second = str;
-
- result.first->second.push_back (strpair);
- }
-
-
- for (i = portmap.begin(); i != portmap.end(); ++i) {
-
- /* i->first is a client name, i->second is a PortMap of all of its ports */
-
- TreeModel::Row parent = *(model->append());
-
- parent[columns->used] = false;
- parent[columns->text] = i->first;
- parent[columns->port] = 0;
-
- for (vector<pair<string,string> >::iterator s = i->second.begin(); s != i->second.end(); ++s) {
-
- /* s->first is a port name */
-
- TreeModel::Row row = *(model->append (parent.children()));
-
- row[columns->used] = ((random()%2) == 1);
- row[columns->text] = s->first;
- row[columns->port] = (jack_port_t*) random();
- }
- }
-
- out:
- display->set_model (old);
-}
-
-void
-selection_changed (RefPtr<TreeModel> model, TreeView* display, ModelColumns* columns)
-{
-// TreeSelection::ListHandle_Path selection = display->get_selection()->get_selected_rows ();
-//
-// for (TreeSelection::ListHandle_Path::iterator x = selection.begin(); x != selection.end(); ++x) {
-// cerr << "selected: " << (*(model->get_iter (*x)))[columns->text] << endl;
-// }
-}
-
-bool
-selection_filter (const RefPtr<TreeModel>& model, const TreeModel::Path& path, bool yn, ModelColumns* columns)
-{
- return (*(model->get_iter (path)))[columns->port] != 0;
-}
-
-void
-object_drop (string type, uint32_t cnt, void** ptr)
-{
- cerr << "Got an object drop of " << cnt << " pointer(s) of type " << type << endl;
-}
-
-int
-main (int argc, char* argv[])
-{
- Main app (&argc, &argv);
- Window win;
- VBox vpacker;
- HBox hpacker;
- Button rescan ("rescan");
- ScrolledWindow scrollerA;
- ScrolledWindow scrollerB;
- DnDTreeView displayA;
- DnDTreeView displayB;
- ModelColumns columns;
-
- if ((jack = jack_client_new ("itest")) == NULL) {
- return -1;
- }
-
- RefPtr<TreeStore> modelA = TreeStore::create (columns);
- RefPtr<TreeStore> modelB = TreeStore::create (columns);
-
- displayA.set_model (modelA);
- displayA.append_column ("Use", columns.used);
- displayA.append_column ("Source/Port", columns.text);
- displayA.set_reorderable (true);
- displayA.add_object_drag (columns.port.index(), "ports");
- displayA.signal_object_drop.connect (ptr_fun (object_drop));
-
- displayA.get_selection()->set_mode (SELECTION_MULTIPLE);
- displayA.get_selection()->set_select_function (sigc::bind (ptr_fun (selection_filter), &columns));
- displayA.get_selection()->signal_changed().connect (sigc::bind (ptr_fun (selection_changed), modelA, &displayA, &columns));
-
- displayB.set_model (modelB);
- displayB.append_column ("Use", columns.used);
- displayB.append_column ("Source/Port", columns.text);
- displayB.set_reorderable (true);
- displayB.add_object_drag (columns.port.index(), "ports");
- displayB.signal_object_drop.connect (ptr_fun (object_drop));
-
- displayB.get_selection()->set_mode (SELECTION_MULTIPLE);
- displayB.get_selection()->set_select_function (sigc::bind (ptr_fun (selection_filter), &columns));
- displayB.get_selection()->signal_changed().connect (sigc::bind (ptr_fun (selection_changed), modelB, &displayB, &columns));
-
- scrollerA.add (displayA);
- scrollerB.add (displayB);
-
- hpacker.pack_start (scrollerA);
- hpacker.pack_start (scrollerB);
-
- vpacker.pack_start (hpacker);
- vpacker.pack_start (rescan, false, false);
-
- win.add (vpacker);
- win.set_size_request (500, 400);
- win.show_all ();
-
- rescan.signal_clicked().connect (sigc::bind (ptr_fun (fill_it), modelA, &displayA, &columns));
- rescan.signal_clicked().connect (sigc::bind (ptr_fun (fill_it), modelB, &displayB, &columns));
-
- fill_it (modelA, &displayA, &columns);
- fill_it (modelB, &displayB, &columns);
-
- displayA.expand_all();
- displayB.expand_all();
-
- app.run ();
-
- jack_client_close (jack);
-}