diff options
author | David Robillard <d@drobilla.net> | 2006-06-10 02:43:54 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-06-10 02:43:54 +0000 |
commit | 47246db7e9d71ba694b719001033fba1766a58c4 (patch) | |
tree | 25614ea4f2c92033a3cd37f6413df742f09a5369 /src/progs/gtk/PatchView.cpp | |
parent | 98fe0e7056e6697396249531785d3899f94d79be (diff) | |
download | ingen-47246db7e9d71ba694b719001033fba1766a58c4.tar.gz ingen-47246db7e9d71ba694b719001033fba1766a58c4.tar.bz2 ingen-47246db7e9d71ba694b719001033fba1766a58c4.zip |
More juggling
git-svn-id: http://svn.drobilla.net/lad/grauph@16 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/progs/gtk/PatchView.cpp')
-rw-r--r-- | src/progs/gtk/PatchView.cpp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/progs/gtk/PatchView.cpp b/src/progs/gtk/PatchView.cpp new file mode 100644 index 00000000..e89428e9 --- /dev/null +++ b/src/progs/gtk/PatchView.cpp @@ -0,0 +1,119 @@ +/* This file is part of Om. Copyright (C) 2006 Dave Robillard. + * + * Om 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. + * + * Om 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 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., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PatchView.h" +#include <iostream> +#include <cassert> +#include <fstream> +#include "App.h" +#include "OmFlowCanvas.h" +#include "PatchController.h" +#include "LoadPluginWindow.h" +#include "PatchModel.h" +#include "NewSubpatchWindow.h" +#include "LoadSubpatchWindow.h" +#include "NodeControlWindow.h" +#include "PatchDescriptionWindow.h" +#include "PatchTreeWindow.h" +#include "Controller.h" + +namespace OmGtk { + + +PatchView::PatchView(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml) +: Gtk::Box(cobject), + m_patch(NULL), + m_canvas(NULL), + m_enable_signal(true) +{ + property_visible() = false; + + xml->get_widget("patch_canvas_scrolledwindow", m_canvas_scrolledwindow); + xml->get_widget("patch_zoom_scale", m_zoom_slider); + xml->get_widget("patch_polyphony_label", m_polyphony_label); + xml->get_widget("patch_process_checkbutton", m_process_checkbutton); + + m_zoom_slider->signal_value_changed().connect( sigc::mem_fun(this, &PatchView::zoom_changed)); + m_process_checkbutton->signal_toggled().connect(sigc::mem_fun(this, &PatchView::process_toggled)); +} + + +/** Sets the patch controller for this window and initializes everything. + * + * This function MUST be called before using the window in any way! + */ +void +PatchView::patch_controller(PatchController* pc) +{ + //m_patch = new PatchController(pm, controller); + m_patch = pc; + + m_canvas = new OmFlowCanvas(pc, 1600*2, 1200*2); + + m_canvas_scrolledwindow->add(*m_canvas); + //m_canvas->show(); + //m_canvas_scrolledwindow->show(); + + char txt[4]; + snprintf(txt, 8, "%zd", pc->patch_model()->poly()); + m_polyphony_label->set_text(txt); + + //m_description_window->patch_model(pc->model()); +} + + +void +PatchView::show_control_window() +{ + if (m_patch != NULL) + m_patch->show_control_window(); +} + + +void +PatchView::zoom_changed() +{ + float z = m_zoom_slider->get_value(); + m_canvas->zoom(z); +} + + +void +PatchView::process_toggled() +{ + if (!m_enable_signal) + return; + + if (m_process_checkbutton->get_active()) { + Controller::instance().enable_patch(m_patch->model()->path()); + App::instance().patch_tree()->patch_enabled(m_patch->model()->path()); + } else { + Controller::instance().disable_patch(m_patch->model()->path()); + App::instance().patch_tree()->patch_disabled(m_patch->model()->path()); + } +} + + +void +PatchView::enabled(bool e) +{ + m_enable_signal = false; + m_process_checkbutton->set_active(e); + m_enable_signal = true; +} + + +} // namespace OmGtk |