From 125db978ba6012cd9fbf57398d971549f1f1b180 Mon Sep 17 00:00:00 2001 From: Joel Holdsworth Date: Mon, 22 Dec 2008 11:36:46 +0000 Subject: [PATCH] WIP: Experimenting with track headers --- src/gui/widgets/timeline/timeline-track.cpp | 33 ++++++++++++++++----- src/gui/widgets/timeline/timeline-track.hpp | 7 +++++ 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/gui/widgets/timeline/timeline-track.cpp b/src/gui/widgets/timeline/timeline-track.cpp index 05f49b523..828598d4a 100644 --- a/src/gui/widgets/timeline/timeline-track.cpp +++ b/src/gui/widgets/timeline/timeline-track.cpp @@ -29,6 +29,7 @@ using namespace boost; using namespace Gtk; +using namespace sigc; namespace gui { namespace widgets { @@ -37,9 +38,14 @@ namespace timeline { Track::Track(TimelineWidget &timeline_widget) : timelineWidget(timeline_widget), expanded(true), + titleMenuButton("4HelloHelloHello"), enableButton(Gtk::StockID("track_enabled")), lockButton(Gtk::StockID("track_unlocked")) -{ +{ + titleMenuButton.set_relief(RELIEF_HALF); + titleMenuButton.signal_pressed().connect( + mem_fun(this, &Track::on_title_menu_button) ); + buttonBar.append(enableButton); buttonBar.append(lockButton); @@ -55,16 +61,20 @@ Track::Track(TimelineWidget &timeline_widget) : (GtkIconSize)(int)WindowManager::MenuIconSize); #endif - headerWidget.pack_start(titleBox, PACK_SHRINK); + headerWidget.pack_start(titleMenuButton, PACK_SHRINK); headerWidget.pack_start(buttonBar, PACK_SHRINK); + // Setup the title menu + Menu::MenuList& title_list = titleMenu.items(); + title_list.push_back( Menu_Helpers::MenuElem(_("_Name..."), + mem_fun(this, &Track::on_remove_track) ) ); + // Setup the context menu - Menu::MenuList& menu_list = contextMenu.items(); - menu_list.push_back( Menu_Helpers::MenuElem(_("_Add Track"), - sigc::mem_fun(timelineWidget, - &TimelineWidget::on_add_track_command) ) ); - menu_list.push_back( Menu_Helpers::MenuElem(_("_Remove Track"), - sigc::mem_fun(this, &Track::on_remove_track) ) ); + Menu::MenuList& context_list = contextMenu.items(); + context_list.push_back( Menu_Helpers::MenuElem(_("_Add Track"), + mem_fun(timelineWidget, &TimelineWidget::on_add_track_command) ) ); + context_list.push_back( Menu_Helpers::MenuElem(_("_Remove Track"), + mem_fun(this, &Track::on_remove_track) ) ); } Gtk::Widget& @@ -97,6 +107,13 @@ Track::show_header_context_menu(guint button, guint32 time) contextMenu.popup(button, time); } +void +Track::on_title_menu_button() +{ + g_message("Hello"); + titleMenu.popup(0, gtk_get_current_event_time()); +} + void Track::on_remove_track() { diff --git a/src/gui/widgets/timeline/timeline-track.hpp b/src/gui/widgets/timeline/timeline-track.hpp index d5ad70538..0fdd87884 100644 --- a/src/gui/widgets/timeline/timeline-track.hpp +++ b/src/gui/widgets/timeline/timeline-track.hpp @@ -56,6 +56,9 @@ public: const = 0; private: + + void on_title_menu_button(); + void on_remove_track(); private: @@ -68,12 +71,16 @@ private: Gtk::VBox headerWidget; + Gtk::Button titleMenuButton; + Gtk::ToolButton enableButton; Gtk::ToolButton lockButton; Gtk::Entry titleBox; Gtk::Toolbar buttonBar; + Gtk::Menu titleMenu; + Gtk::Menu contextMenu; };