summaryrefslogtreecommitdiff
path: root/gtk2_ardour/imageframe_time_axis.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/imageframe_time_axis.cc')
-rw-r--r--gtk2_ardour/imageframe_time_axis.cc420
1 files changed, 0 insertions, 420 deletions
diff --git a/gtk2_ardour/imageframe_time_axis.cc b/gtk2_ardour/imageframe_time_axis.cc
deleted file mode 100644
index e4a2efa2b6..0000000000
--- a/gtk2_ardour/imageframe_time_axis.cc
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- Copyright (C) 2003 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 <string>
-#include <algorithm>
-
-#include "pbd/error.h"
-
-#include <gtkmm/menu.h>
-
-#include <gtkmm2ext/utils.h>
-#include <gtkmm2ext/gtk_ui.h>
-
-#include "ardour/session.h"
-#include "ardour/utils.h"
-
-#include "public_editor.h"
-#include "imageframe_time_axis.h"
-#include "enums.h"
-#include "imageframe_time_axis_view.h"
-#include "imageframe_time_axis_group.h"
-#include "marker_time_axis_view.h"
-#include "imageframe_view.h"
-#include "marker_time_axis.h"
-#include "marker_view.h"
-#include "gui_thread.h"
-
-#include "i18n.h"
-
-using namespace ARDOUR;
-using namespace PBD;
-using namespace Gtk;
-
-/**
- * Constructs a new ImageFrameTimeAxis.
- *
- * @param track_id the track name/id
- * @param ed the PublicEditor
- * @param sess the current session
- * @param canvas the parent canvas item
- */
-ImageFrameTimeAxis::ImageFrameTimeAxis(const string & track_id, PublicEditor& ed, ARDOUR::Session* sess, ArdourCanvas::Canvas& canvas)
- : AxisView(sess),
- VisualTimeAxis(track_id, ed, sess, canvas)
-{
- _color = unique_random_color() ;
-
- selection_group = new ArdourCanvas::Group (*canvas_display);
- selection_group->hide();
-
- // intialize our data items
- y_position = -1 ;
-
- /* create our new image frame view */
- view = new ImageFrameTimeAxisView(*this) ;
-
- /* create the Image Frame Edit Menu */
- create_imageframe_menu() ;
-
- // set the initial time axis text label
- label_view() ;
-
- // set the initial height of this time axis
- set_height(hNormal) ;
-
- TimeAxisView::CatchDeletion.connect (*this, boost::bind (&ImageFrameTimeAxis::remove_time_axis_view, this, _1), gui_context());
-}
-
-/**
- * Destructor
- * Responsible for destroying any child image items that may have been added to thie time axis
- */
-ImageFrameTimeAxis::~ImageFrameTimeAxis ()
-{
- CatchDeletion (this);
-
- // Destroy all the marker views we may have associaited with this TimeAxis
- for(MarkerTimeAxisList::iterator iter = marker_time_axis_list.begin(); iter != marker_time_axis_list.end(); ++iter)
- {
- MarkerTimeAxis* mta = *iter ;
- MarkerTimeAxisList::iterator next = iter ;
- next++ ;
-
- marker_time_axis_list.erase(iter) ;
-
- delete mta ;
- mta = 0 ;
-
- iter = next ;
- }
-
- delete image_action_menu ;
- image_action_menu = 0 ;
-
- delete selection_group;
- selection_group = 0 ;
-
- // Destroy our Axis View helper
- delete view ;
- view = 0 ;
-}
-
-//---------------------------------------------------------------------------------------//
-// ui methods & data
-
-/**
- * Sets the height of this TrackView to one of ths TrackHeghts
- *
- * @param h
- */
-void
-ImageFrameTimeAxis::set_height (uint32_t h)
-{
- VisualTimeAxis::set_height(h) ;
-
- // tell out view helper of the change too
- if(view != 0)
- {
- view->set_height((double) height) ;
- }
-
- // tell those interested that we have had our height changed
- gui_changed("track_height",(void*)0); /* EMIT_SIGNAL */
-}
-
-/**
- * Sets the number of frames per pixel that are used.
- * This is used to determine the siezes of items upon this time axis
- *
- * @param fpp the number of frames per pixel
- */
-void
-ImageFrameTimeAxis::set_samples_per_pixel (double fpp)
-{
- TimeAxisView::set_samples_per_pixel (editor.get_current_zoom ());
-
- if (view) {
- view->set_samples_per_pixel (fpp);
- }
-}
-
-
-/**
- * Returns the available height for images to be drawn onto
- *
- * @return the available height for an image item to be drawn onto
- */
-int
-ImageFrameTimeAxis::get_image_display_height()
-{
- return(height - (gint)TimeAxisViewItem::NAME_HIGHLIGHT_SIZE) ;
-}
-
-
-/**
- * Show the popup edit menu
- *
- * @param button the mouse button pressed
- * @param time when to show the popup
- * @param clicked_imageframe the ImageFrameItem that the event ocured upon, or 0 if none
- * @param with_item true if an item has been selected upon the time axis, used to set context menu
- */
-void
-ImageFrameTimeAxis::popup_imageframe_edit_menu(int button, int32_t time, ImageFrameView* clicked_imageframe, bool with_item)
-{
- if (!imageframe_menu)
- {
- create_imageframe_menu() ;
- }
-
- if(with_item)
- {
- imageframe_item_menu->set_sensitive(true) ;
- }
- else
- {
- imageframe_item_menu->set_sensitive(false) ;
- }
-
- imageframe_menu->popup(button,time) ;
-}
-
-/**
- * convenience method to select a new track color and apply it to the view and view items
- *
- */
-void
-ImageFrameTimeAxis::select_track_color()
-{
- if (choose_time_axis_color())
- {
- if (view)
- {
- view->apply_color (_color) ;
- }
- }
-}
-
-/**
- * Handles the building of the popup menu
- */
-void
-ImageFrameTimeAxis::build_display_menu()
-{
- using namespace Menu_Helpers;
- using Gtk::Menu;
-
- /* get the size menu ready */
-
- build_size_menu();
-
- /* prepare it */
-
- TimeAxisView::build_display_menu () ;
-
- /* now fill it with our stuff */
-
- MenuList& items = display_menu->items();
-
- items.push_back (MenuElem (_("Rename"), sigc::mem_fun(*this, &ImageFrameTimeAxis::start_time_axis_rename)));
-
- image_action_menu = new Menu() ;
- image_action_menu->set_name ("ArdourContextMenu");
- MenuList image_items = image_action_menu->items() ;
-
- items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Height"), *size_menu));
- items.push_back (MenuElem (_("Color"), sigc::mem_fun(*this, &ImageFrameTimeAxis::select_track_color)));
-
- items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Remove"), sigc::bind(sigc::mem_fun(*this, &VisualTimeAxis::remove_this_time_axis), (void*)this))) ;
-}
-
-/**
- * handles the building of the ImageFrameView sub menu
- */
-void
-ImageFrameTimeAxis::create_imageframe_menu()
-{
- using namespace Menu_Helpers;
- using Gtk::Menu;
-
- imageframe_menu = manage(new Menu) ;
- imageframe_menu->set_name ("ArdourContextMenu");
- MenuList& items = imageframe_menu->items();
-
- imageframe_item_menu = manage(new Menu) ;
- imageframe_item_menu->set_name ("ArdourContextMenu");
- MenuList& imageframe_sub_items = imageframe_item_menu->items() ;
-
- /* duration menu */
- Menu* duration_menu = manage(new Menu) ;
- duration_menu->set_name ("ArdourContextMenu");
- MenuList& duration_items = duration_menu->items() ;
-
- if(view)
- {
- duration_items.push_back(MenuElem (_("0.5 seconds"), sigc::bind (sigc::mem_fun (view, &ImageFrameTimeAxisView::set_imageframe_duration_sec), 0.5))) ;
- duration_items.push_back(MenuElem (_("1 seconds"), sigc::bind (sigc::mem_fun (view, &ImageFrameTimeAxisView::set_imageframe_duration_sec), 1.0))) ;
- duration_items.push_back(MenuElem (_("1.5 seconds"), sigc::bind (sigc::mem_fun (view, &ImageFrameTimeAxisView::set_imageframe_duration_sec), 1.5))) ;
- duration_items.push_back(MenuElem (_("2 seconds"), sigc::bind (sigc::mem_fun (view, &ImageFrameTimeAxisView::set_imageframe_duration_sec), 2.0))) ;
- duration_items.push_back(MenuElem (_("2.5 seconds"), sigc::bind (sigc::mem_fun (view, &ImageFrameTimeAxisView::set_imageframe_duration_sec), 2.5))) ;
- duration_items.push_back(MenuElem (_("3 seconds"), sigc::bind (sigc::mem_fun (view, &ImageFrameTimeAxisView::set_imageframe_duration_sec), 3.0))) ;
- //duration_items.push_back(SeparatorElem()) ;
- //duration_items.push_back(MenuElem (_("custom"), sigc::mem_fun(*this, &ImageFrameTimeAxis::set_imageframe_duration_custom))) ;
- }
-
- imageframe_sub_items.push_back(MenuElem(_("Duration (sec)"), *duration_menu)) ;
-
- imageframe_sub_items.push_back(SeparatorElem()) ;
- if(view)
- {
- imageframe_sub_items.push_back(MenuElem (_("Remove Frame"), sigc::bind(sigc::mem_fun (view, &ImageFrameTimeAxisView::remove_selected_imageframe_item), (void*)this))) ;
- }
-
- items.push_back(MenuElem(_("Image Frame"), *imageframe_item_menu)) ;
- items.push_back(MenuElem (_("Rename Track"), sigc::mem_fun(*this,&ImageFrameTimeAxis::start_time_axis_rename))) ;
-
- imageframe_menu->show_all() ;
-}
-
-
-
-
-//---------------------------------------------------------------------------------------//
-// Marker Time Axis Methods
-
-/**
- * Add a MarkerTimeAxis to the ilst of MarkerTimeAxis' associated with this ImageFrameTimeAxis
- *
- * @param marker_track the MarkerTimeAxis to add
- * @param src the identity of the object that initiated the change
- * @return true if the addition was a success,
- * false otherwise
- */
-bool
-ImageFrameTimeAxis::add_marker_time_axis(MarkerTimeAxis* marker_track, void* src)
-{
- bool ret = false ;
-
- if(get_named_marker_time_axis(marker_track->name()) != 0)
- {
- ret = false ;
- }
- else
- {
- marker_time_axis_list.push_back(marker_track) ;
- MarkerTimeAxisAdded(marker_track, src) ; /* EMIT_SIGNAL */
- ret = true ;
- }
-
- return(ret) ;
-}
-
-/**
- * Returns the named MarkerTimeAxis associated with this ImageFrameTimeAxis
- *
- * @param track_id the track_id of the MarkerTimeAxis to search for
- * @return the named markerTimeAxis, or 0 if the named MarkerTimeAxis is not associated with this ImageFrameTimeAxis
- */
-MarkerTimeAxis*
-ImageFrameTimeAxis::get_named_marker_time_axis(const string & track_id)
-{
- MarkerTimeAxis* mta = 0 ;
-
- for (MarkerTimeAxisList::iterator i = marker_time_axis_list.begin(); i != marker_time_axis_list.end(); ++i)
- {
- if (((MarkerTimeAxis*)*i)->name() == track_id)
- {
- mta = ((MarkerTimeAxis*)*i) ;
- break ;
- }
- }
- return(mta) ;
-}
-
-/**
- * Removes the named markerTimeAxis from those associated with this ImageFrameTimeAxis
- *
- * @param track_id the track id of the MarkerTimeAxis to remove
- * @param src the identity of the object that initiated the change
- * @return the removed MarkerTimeAxis
- */
-MarkerTimeAxis*
-ImageFrameTimeAxis::remove_named_marker_time_axis(const string & track_id, void* src)
-{
- MarkerTimeAxis* mta = 0 ;
-
- for(MarkerTimeAxisList::iterator i = marker_time_axis_list.begin(); i != marker_time_axis_list.end(); ++i)
- {
- if (((MarkerTimeAxis*)*i)->name() == track_id)
- {
- mta = ((MarkerTimeAxis*)*i) ;
-
- // the iterator is invalid after this call, so we can no longer use it as is.
- marker_time_axis_list.erase(i) ;
-
- MarkerTimeAxisRemoved(mta->name(), src) ; /* EMIT_SIGNAL */
- break ;
- }
- }
-
- return(mta) ;
-}
-
-/**
- * Removes the specified MarkerTimeAxis from the list of MarkerTimaAxis associated with this ImageFrameTimeAxis
- * Note that the MarkerTimeAxis is not deleted, only removed from the list os associated tracks
- *
- * @param mta the TimeAxis to remove
- * @param src the identity of the object that initiated the change
- */
-void
-ImageFrameTimeAxis::remove_time_axis_view (TimeAxisView* tav)
-{
- MarkerTimeAxisView* mtav = dynamic_cast<MarkerTimeAxisView*> (tav);
-
- if (!mtav) {
- return;
- }
-
- MarkerTimeAxisList::iterator i;
-
- if ((i = find (marker_time_axis_list.begin(), marker_time_axis_list.end(), mta)) != marker_time_axis_list.end()) {
- // note that we dont delete the object itself, we just remove it from our list
- marker_time_axis_list.erase(i) ;
- MarkerTimeAxisRemoved (mta->name(), src) ; /* EMIT_SIGNAL */
- }
-}
-
-
-//---------------------------------------------------------------------------------------//
-// Parent/Child helper object accessors
-
-/**
- * Returns the view helper of this TimeAxis
- *
- * @return the view helper of this TimeAxis
- */
-ImageFrameTimeAxisView*
-ImageFrameTimeAxis::get_view()
-{
- return(view) ;
-}