#include "apatchgui.inc"
#include "clip.h"
+#include "cwindow.h"
+#include "cwindowgui.h"
#include "edl.h"
#include "edlsession.h"
+#include "keys.h"
#include "language.h"
#include "localsession.h"
#include "maincursor.h"
{
delete sample_zoom;
delete amp_zoom;
- delete track_zoom;
+ delete atrack_zoom;
+ delete vtrack_zoom;
}
void ZoomBar::create_objects()
{
- int x = 3;
- int y = get_h() / 2 -
- mwindow->theme->get_image_set("zoombar_menu", 0)[0]->get_h() / 2;
+ int xs5 = xS(5), xs10 = xS(10);
+ int x = xS(3), y = get_h()/2 -
+ mwindow->theme->get_image_set("zoombar_menu", 0)[0]->get_h()/2;
draw_top_background(get_parent(), 0, 0, get_w(), get_h());
sample_zoom = new SampleZoomPanel(mwindow, this, x, y);
amp_zoom->create_objects();
amp_zoom->set_tooltip(_("Audio waveform scale"));
x += amp_zoom->get_w();
- track_zoom = new TrackZoomPanel(mwindow, this, x, y);
- track_zoom->create_objects();
- track_zoom->set_tooltip(_("Height of tracks in the timeline"));
- x += track_zoom->get_w() + 10;
-
- int wid = 120;
+ atrack_zoom = new ATrackZoomPanel(mwindow, this, x, y);
+ atrack_zoom->create_objects();
+ atrack_zoom->set_tooltip(_("Height of audio tracks"));
+ x += atrack_zoom->get_w() + xs10;
+ vtrack_zoom = new VTrackZoomPanel(mwindow, this, x, y);
+ vtrack_zoom->create_objects();
+ vtrack_zoom->set_tooltip(_("Height of video tracks"));
+ x += vtrack_zoom->get_w() + xs10;
+
+ int wid = xS(120);
for( int i=AUTOGROUPTYPE_AUDIO_FADE; i<=AUTOGROUPTYPE_Y; ++i ) {
int ww = BC_GenericButton::calculate_w(this, AutoTypeMenu::to_text(i));
if( ww > wid ) wid = ww;
}
add_subwindow(auto_type = new AutoTypeMenu(mwindow, this, x, y, wid));
auto_type->create_objects();
- x += auto_type->get_w() + 10;
+ x += auto_type->get_w() + xs10;
#define DEFAULT_TEXT "000.00 to 000.00"
add_subwindow(auto_zoom = new AutoZoom(mwindow, this, x, y, 0));
x += auto_zoom->get_w();
- add_subwindow(auto_zoom_text = new ZoomTextBox(
- mwindow,
- this,
- x,
- y,
- DEFAULT_TEXT));
- x += auto_zoom_text->get_w() + 5;
+ add_subwindow(auto_zoom_text = new ZoomTextBox(mwindow, this, x, y, DEFAULT_TEXT));
+ x += auto_zoom_text->get_w() + xs5;
add_subwindow(auto_zoom = new AutoZoom(mwindow, this, x, y, 1));
update_autozoom();
- x += auto_zoom->get_w() + 5;
+ x += auto_zoom->get_w() + xs5;
add_subwindow(from_value = new FromTextBox(mwindow, this, x, y));
- x += from_value->get_w() + 5;
+ x += from_value->get_w() + xs5;
add_subwindow(length_value = new LengthTextBox(mwindow, this, x, y));
- x += length_value->get_w() + 5;
+ x += length_value->get_w() + xs5;
add_subwindow(to_value = new ToTextBox(mwindow, this, x, y));
- x += to_value->get_w() + 5;
+ x += to_value->get_w() + xs5;
add_subwindow(title_alpha_bar = new TitleAlphaBar(mwindow, this, x, y));
- x += title_alpha_bar->get_w() + 5;
+ x += title_alpha_bar->get_w() + xs5;
add_subwindow(title_alpha_text = new TitleAlphaText(mwindow, this, x, y));
update_formatting(from_value);
auto_zoom_text->update(string);
const char *group_name = AutoTypeMenu::to_text(autogroup_type);
auto_type->set_text(group_name);
+ switch( autogroup_type ) {
+ case AUTOGROUPTYPE_ZOOM:
+ case AUTOGROUPTYPE_X:
+ case AUTOGROUPTYPE_Y:
+ CWindowGUI *cgui = mwindow->cwindow->gui;
+ unlock_window();
+ cgui->lock_window("ZoomBar::update_autozoom");
+ cgui->update_tool();
+ cgui->unlock_window();
+ lock_window("ZoomBar::update_autozoom");
+ break;
+ }
}
{
sample_zoom->update(mwindow->edl->local_session->zoom_sample);
amp_zoom->update(mwindow->edl->local_session->zoom_y);
- track_zoom->update(mwindow->edl->local_session->zoom_track);
+ atrack_zoom->update(mwindow->edl->local_session->zoom_atrack);
+ vtrack_zoom->update(mwindow->edl->local_session->zoom_vtrack);
update_autozoom();
update_clocks();
return 0;
}
TitleAlphaBar::TitleAlphaBar(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
- : BC_FSlider(x, y, 0, 150, 200, 0, 1.0, mwindow->session->title_bar_alpha, 0)
+ : BC_FSlider(x, y, 0, xS(150), xS(200), 0, 1.0, mwindow->session->title_bar_alpha, 0)
{
this->mwindow = mwindow;
this->zoombar = zoombar;
}
TitleAlphaText::TitleAlphaText(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
- : BC_TextBox(x, y, 48, 1, mwindow->session->title_bar_alpha, 0, MEDIUMFONT, 2)
+ : BC_TextBox(x, y, xS(48), 1, mwindow->session->title_bar_alpha, 0, MEDIUMFONT, 2)
{
this->mwindow = mwindow;
this->zoombar = zoombar;
}
-
-
-
-
-
-
-
-
-
-
SampleZoomPanel::SampleZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
: ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_sample,
- x, y, 110, MIN_ZOOM_TIME, MAX_ZOOM_TIME, ZOOM_TIME)
+ x, y, xS(130), MIN_ZOOM_TIME, MAX_ZOOM_TIME, ZOOM_TIME)
{
this->mwindow = mwindow;
this->zoombar = zoombar;
AmpZoomPanel::AmpZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
: ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_y,
- x, y, 80, MIN_AMP_ZOOM, MAX_AMP_ZOOM, ZOOM_LONG)
+ x, y, xS(80), MIN_AMP_ZOOM, MAX_AMP_ZOOM, ZOOM_LONG)
{
this->mwindow = mwindow;
this->zoombar = zoombar;
}
int AmpZoomPanel::handle_event()
{
+ if( zoombar->shift_down() )
+ update(DEFAULT_ZOOM_TRACK);
mwindow->zoom_amp((int64_t)get_value());
return 1;
}
-TrackZoomPanel::TrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
- : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_track,
- x, y, 70, MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG)
+ATrackZoomPanel::ATrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
+ : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_atrack,
+ x, y, xS(64), MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG)
{
this->mwindow = mwindow;
this->zoombar = zoombar;
}
-int TrackZoomPanel::handle_event()
+int ATrackZoomPanel::handle_event()
{
- mwindow->zoom_track((int64_t)get_value());
+ if( zoombar->shift_down() )
+ update(DEFAULT_ZOOM_TRACK);
+ mwindow->zoom_atrack((int64_t)get_value());
zoombar->amp_zoom->update(mwindow->edl->local_session->zoom_y);
return 1;
}
-
+VTrackZoomPanel::VTrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
+ : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_vtrack,
+ x, y, xS(64), MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG)
+{
+ this->mwindow = mwindow;
+ this->zoombar = zoombar;
+}
+int VTrackZoomPanel::handle_event()
+{
+ if( zoombar->shift_down() )
+ update(DEFAULT_ZOOM_TRACK);
+ mwindow->zoom_vtrack((int64_t)get_value());
+ return 1;
+}
AutoZoom::AutoZoom(MWindow *mwindow, ZoomBar *zoombar, int x, int y, int changemax)
AutoTypeMenu::AutoTypeMenu(MWindow *mwindow, ZoomBar *zoombar, int x, int y, int wid)
- : BC_PopupMenu(x, y, wid, to_text(mwindow->edl->local_session->zoombar_showautotype), 1)
+ : BC_PopupMenu(x, y, wid + xS(24),
+ to_text(mwindow->edl->local_session->zoombar_showautotype), 1, 0, 12)
{
this->mwindow = mwindow;
this->zoombar = zoombar;
return AUTOGROUPTYPE_INT255;
}
-int AutoTypeMenu::draw_face(int dx)
+int AutoTypeMenu::draw_face(int dx, int color)
{
- BC_PopupMenu::draw_face(dx);
- int color = mwindow->edl->local_session->zoombar_showautocolor;
+ BC_PopupMenu::draw_face(dx+xS(8), color);
+ color = mwindow->edl->local_session->zoombar_showautocolor;
if( color >= 0 ) {
set_color(color);
int margin = get_margin();
- int mx = margin+5, my = 3*margin/8;
+ int mx = margin+xS(8), my = 3*margin/8;
int bh = get_h() - 2*my;
draw_box(mx,my, bh,bh);
}
ZoomTextBox::ZoomTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y, const char *text)
- : BC_TextBox(x, y, 130, 1, text)
+ : BC_TextBox(x, y, xS(130), 1, text)
{
this->mwindow = mwindow;
this->zoombar = zoombar;
FromTextBox::FromTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
- : BC_TextBox(x, y, 90, 1, "")
+ : BC_TextBox(x, y, xS(90), 1, "")
{
this->mwindow = mwindow;
this->zoombar = zoombar;
int FromTextBox::handle_event()
{
- if(get_keypress() == 13)
+ if(get_keypress() == NEWLINE)
{
zoombar->set_selection(SET_FROM);
return 1;
mwindow->edl->session->time_format,
mwindow->edl->session->sample_rate,
mwindow->edl->session->frame_rate,
- mwindow->edl->session->frames_per_foot);
+ mwindow->edl->session->frames_per_foot,
+ mwindow->get_timecode_offset());
//printf("FromTextBox::update_position %f %s\n", new_position, string);
update(string);
return 0;
LengthTextBox::LengthTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
- : BC_TextBox(x, y, 90, 1, "")
+ : BC_TextBox(x, y, xS(90), 1, "")
{
this->mwindow = mwindow;
this->zoombar = zoombar;
int LengthTextBox::handle_event()
{
- if(get_keypress() == 13)
+ if(get_keypress() == NEWLINE)
{
zoombar->set_selection(SET_LENGTH);
return 1;
ToTextBox::ToTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y)
- : BC_TextBox(x, y, 90, 1, "")
+ : BC_TextBox(x, y, xS(90), 1, "")
{
this->mwindow = mwindow;
this->zoombar = zoombar;
int ToTextBox::handle_event()
{
- if(get_keypress() == 13)
+ if(get_keypress() == NEWLINE)
{
zoombar->set_selection(SET_TO);
return 1;
mwindow->edl->session->time_format,
mwindow->edl->session->sample_rate,
mwindow->edl->session->frame_rate,
- mwindow->edl->session->frames_per_foot);
+ mwindow->edl->session->frames_per_foot,
+ mwindow->get_timecode_offset());
update(string);
return 0;
}