From adac9032064d973ff6cfe1f94d8619c71fe199a3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 21 Jun 2006 05:53:27 +0000 Subject: Reorganized directory tree/names git-svn-id: http://svn.drobilla.net/lad/ingen@73 a436a847-0d15-0410-975c-d299462d15a1 --- src/progs/ingenuity/PatchTreeWindow.h | 105 ++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/progs/ingenuity/PatchTreeWindow.h (limited to 'src/progs/ingenuity/PatchTreeWindow.h') diff --git a/src/progs/ingenuity/PatchTreeWindow.h b/src/progs/ingenuity/PatchTreeWindow.h new file mode 100644 index 00000000..6733dc6f --- /dev/null +++ b/src/progs/ingenuity/PatchTreeWindow.h @@ -0,0 +1,105 @@ +/* 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., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef PATCHTREEWINDOW_H +#define PATCHTREEWINDOW_H + +#include +#include +#include "util/Path.h" + + +using namespace Om; +using Om::Path; + +namespace OmGtk { + +class PatchWindow; +class PatchController; +class PatchTreeView; + + +/** Window with a TreeView of all loaded patches. + * + * \ingroup OmGtk + */ +class PatchTreeWindow : public Gtk::Window +{ +public: + PatchTreeWindow(BaseObjectType* cobject, const Glib::RefPtr& refGlade); + + void patch_enabled(const Path& path); + void patch_disabled(const Path& path); + void patch_renamed(const Path& old_path, const Path& new_path); + + void add_patch(PatchController* pc); + void remove_patch(const Path& path); + void show_patch_menu(GdkEventButton* ev); + +protected: + //void event_patch_selected(); + void event_patch_activated(const Gtk::TreeModel::Path& path, Gtk::TreeView::Column* col); + void event_patch_enabled_toggled(const Glib::ustring& path_str); + + Gtk::TreeModel::iterator find_patch(Gtk::TreeModel::Children root, const Path& path); + + PatchTreeView* m_patches_treeview; + + struct PatchTreeModelColumns : public Gtk::TreeModel::ColumnRecord + { + PatchTreeModelColumns() + { add(name_col); add(enabled_col); add(patch_controller_col); } + + Gtk::TreeModelColumn name_col; + Gtk::TreeModelColumn enabled_col; + Gtk::TreeModelColumn patch_controller_col; + }; + + bool m_enable_signal; + PatchTreeModelColumns m_patch_tree_columns; + Glib::RefPtr m_patch_treestore; + Glib::RefPtr m_patch_tree_selection; +}; + + +/** Derived TreeView class to support context menus for patches */ +class PatchTreeView : public Gtk::TreeView +{ +public: + PatchTreeView(BaseObjectType* cobject, const Glib::RefPtr& xml) + : Gtk::TreeView(cobject) + {} + + void set_window(PatchTreeWindow* win) { m_window = win; } + + bool on_button_press_event(GdkEventButton* ev) { + bool ret = Gtk::TreeView::on_button_press_event(ev); + + if ((ev->type == GDK_BUTTON_PRESS) && (ev->button == 3)) + m_window->show_patch_menu(ev); + + return ret; + } + +private: + PatchTreeWindow* m_window; + +}; // struct PatchTreeView + + +} // namespace OmGtk + +#endif // PATCHTREEWINDOW_H -- cgit v1.2.1