diff options
-rw-r--r-- | gtk2_ardour/editor.cc | 17 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_region_list.cc | 7 | ||||
-rw-r--r-- | gtk2_ardour/io_selector.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/utils.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/utils.h | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/utils.h | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/utils.cc | 7 |
8 files changed, 44 insertions, 9 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index d5b917f75c..5b8d594e8b 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -595,12 +595,19 @@ Editor::Editor (AudioEngine& eng) region_list_display.set_name ("RegionListDisplay"); region_list_model = TreeStore::create (region_list_columns); - region_list_sort_model = TreeModelSort::create (region_list_model); - region_list_sort_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter)); + + region_list_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter)); + + region_list_display.set_model (region_list_model); + CellRendererText* renderer = Gtk::manage( new Gtk::CellRendererText() ); + region_list_display.append_column (_("Regions"), *renderer); - region_list_display.set_model (region_list_sort_model); - region_list_display.append_column (_("Regions"), region_list_columns.name); - region_list_display.set_headers_visible (false); + TreeViewColumn* tv_col = region_list_display.get_column(0); + tv_col->add_attribute(renderer->property_text(), region_list_columns.name); + tv_col->add_attribute(renderer->property_foreground_gdk(), region_list_columns.color_); + + region_list_display.set_reorderable (true); + region_list_display.get_selection()->set_mode (SELECTION_SINGLE); region_list_display.add_object_drag (region_list_columns.region.index(), "regions"); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 7443479ac1..c84cdbdd9a 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -683,9 +683,11 @@ class Editor : public PublicEditor RegionListDisplayModelColumns() { add (name); add (region); + add (color_); } Gtk::TreeModelColumn<Glib::ustring> name; Gtk::TreeModelColumn<ARDOUR::Region*> region; + Gtk::TreeModelColumn<Gdk::Color> color_; }; RegionListDisplayModelColumns region_list_columns; diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc index d610525e07..29eac46632 100644 --- a/gtk2_ardour/editor_region_list.cc +++ b/gtk2_ardour/editor_region_list.cc @@ -35,6 +35,7 @@ #include "ardour_ui.h" #include "gui_thread.h" #include "actions.h" +#include "utils.h" #include "i18n.h" @@ -209,6 +210,7 @@ Editor::add_audio_region_to_region_display (AudioRegion *region) { string str; TreeModel::Row row; + Gdk::Color c; if (!show_automatic_regions_in_region_list && region->automatic()) { return; @@ -241,6 +243,7 @@ Editor::add_audio_region_to_region_display (AudioRegion *region) if (region->whole_file()) { str = ".../"; str += PBD::basename_nosuffix (region->source().name()); + } else { str = region->name(); } @@ -270,9 +273,10 @@ Editor::add_audio_region_to_region_display (AudioRegion *region) AudioRegion* r = dynamic_cast<AudioRegion*>(rr); if (r && r->whole_file()) { - if (region->source_equivalent (*r)) { row = *(region_list_model->append ((*i).children())); + set_color(c, 65535, 0, 0); + row[region_list_columns.color_] = c; found_parent = true; break; } @@ -700,3 +704,4 @@ Editor::region_list_display_drag_data_received (const RefPtr<Gdk::DragContext>& context->drag_finish (true, false, time); } } + diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc index 9080f8e5dc..5354825c06 100644 --- a/gtk2_ardour/io_selector.cc +++ b/gtk2_ardour/io_selector.cc @@ -33,6 +33,7 @@ #include <gtkmm2ext/doi.h> #include <gtkmm2ext/gtk_ui.h> +#include <gtkmm2ext/utils.h> #include "utils.h" #include "ardour_message.h" @@ -47,6 +48,7 @@ using namespace Gtk; using namespace Glib; using namespace sigc; using namespace ARDOUR; +using namespace Gtkmm2ext; IOSelectorWindow::IOSelectorWindow (Session& sess, IO& ior, bool input, bool can_cancel) : ArdourDialog ("i/o selector"), @@ -472,10 +474,10 @@ IOSelector::display_ports () TreeViewColumn* col = tview->get_column (0); col->set_clickable (true); - //col->set_widget(0); + //set_treeview_header_as_default_label(col); /* handle button events on the column header and within the treeview itself */ - //col->get_widget()->signal_button_release_event().connect (bind (mem_fun(*this, &IOSelector::port_column_button_release), tview)); + //col->signal_button_release_event().connect (bind (mem_fun(*this, &IOSelector::port_column_button_release), tview)); tview->signal_button_release_event().connect (bind (mem_fun(*this, &IOSelector::connection_button_release), tview)); } @@ -664,7 +666,7 @@ IOSelector::connection_button_release (GdkEventButton *ev, TreeView *treeview) return true; } -int +gint IOSelector::port_column_button_release (GdkEventButton* event, TreeView* treeview) { /* this handles button release on the button at the top of a single-column diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 448f1b57fe..012d184fef 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -524,3 +524,11 @@ canvas_item_visible (ArdourCanvas::Item* item) { return (item->gobj()->object.flags & GNOME_CANVAS_ITEM_VISIBLE) ? true : false; } + +void +set_color (Gdk::Color& c, gint r, gint g, gint b) +{ + c.set_red(65535); + c.set_green(0); + c.set_blue(0); +} diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h index 1e2d7ce603..2180e80fc4 100644 --- a/gtk2_ardour/utils.h +++ b/gtk2_ardour/utils.h @@ -75,4 +75,6 @@ void decorate (Gtk::Window& w, Gdk::WMDecoration d); bool canvas_item_visible (ArdourCanvas::Item* item); +void set_color (Gdk::Color&, gint, gint, gint); + #endif /* __ardour_gtk_utils_h__ */ diff --git a/libs/gtkmm2ext/gtkmm2ext/utils.h b/libs/gtkmm2ext/gtkmm2ext/utils.h index 4fba212c03..639d2203dc 100644 --- a/libs/gtkmm2ext/gtkmm2ext/utils.h +++ b/libs/gtkmm2ext/gtkmm2ext/utils.h @@ -24,6 +24,7 @@ #include <vector> #include <string> +#include <gtkmm/treeview.h> #include <gdkmm/window.h> /* for WMDecoration */ namespace Gtk { @@ -49,6 +50,7 @@ namespace Gtkmm2ext { GdkWindow* get_paned_handle (Gtk::Paned& paned); void set_decoration (Gtk::Window* win, Gdk::WMDecoration decor); + void set_treeview_header_as_default_label(Gtk::TreeViewColumn *c); }; #endif /* __gtkmm2ext_utils_h__ */ diff --git a/libs/gtkmm2ext/utils.cc b/libs/gtkmm2ext/utils.cc index d52ab42ee7..63cbde1ac2 100644 --- a/libs/gtkmm2ext/utils.cc +++ b/libs/gtkmm2ext/utils.cc @@ -19,6 +19,8 @@ */ #include <gtk/gtkpaned.h> +#include <gtk/gtk.h> + #include <gtkmm2ext/utils.h> #include <gtkmm/widget.h> #include <gtkmm/window.h> @@ -74,3 +76,8 @@ Gtkmm2ext::set_decoration (Gtk::Window* win, Gdk::WMDecoration decor) { win->get_window()->set_decorations (decor); } + +void Gtkmm2ext::set_treeview_header_as_default_label(Gtk::TreeViewColumn* c) +{ + gtk_tree_view_column_set_widget( c->gobj(), GTK_WIDGET(0) ); +} |