fixed #403
This commit is contained in:
+46
-51
@@ -80,11 +80,6 @@ void MainWindow::setup_layout(bool reset) {
|
||||
addDockWidget(Qt::BottomDockWidgetArea, panel_timeline);
|
||||
panel_graph_editor->setFloating(true);
|
||||
|
||||
// workaround for strange Qt dock bug (see https://bugreports.qt.io/browse/QTBUG-65592)
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
|
||||
resizeDocks({panel_project}, {40}, Qt::Horizontal);
|
||||
#endif
|
||||
|
||||
// load panels from file
|
||||
if (!reset) {
|
||||
QFile panel_config(get_config_path() + "/layout");
|
||||
@@ -209,22 +204,22 @@ MainWindow::MainWindow(QWidget *parent, const QString &an) :
|
||||
}
|
||||
}
|
||||
|
||||
// load preferred language from file
|
||||
QString language_file = external_translation_file.isEmpty() ?
|
||||
config.language_file :
|
||||
external_translation_file;
|
||||
// load preferred language from file
|
||||
QString language_file = external_translation_file.isEmpty() ?
|
||||
config.language_file :
|
||||
external_translation_file;
|
||||
|
||||
if (!language_file.isEmpty()
|
||||
&& QFileInfo::exists(language_file)) {
|
||||
QTranslator* translator = new QTranslator(this);
|
||||
translator->load(language_file);
|
||||
QApplication::installTranslator(translator);
|
||||
}
|
||||
if (!language_file.isEmpty()
|
||||
&& QFileInfo::exists(language_file)) {
|
||||
QTranslator* translator = new QTranslator(this);
|
||||
translator->load(language_file);
|
||||
QApplication::installTranslator(translator);
|
||||
}
|
||||
|
||||
alloc_panels(this);
|
||||
|
||||
QStatusBar* statusBar = new QStatusBar(this);
|
||||
statusBar->showMessage(tr("Welcome to %1").arg(appName));
|
||||
statusBar->showMessage(tr("Welcome to %1").arg(appName));
|
||||
setStatusBar(statusBar);
|
||||
|
||||
setup_menus();
|
||||
@@ -752,7 +747,7 @@ void MainWindow::setup_menus() {
|
||||
full_screen->setProperty("id", "fullscreen");
|
||||
full_screen->setCheckable(true);
|
||||
|
||||
view_menu->addAction(tr("Full Screen Viewer"), this, SLOT(full_screen_viewer()))->setProperty("id", "fullscreenviewer");
|
||||
view_menu->addAction(tr("Full Screen Viewer"), this, SLOT(full_screen_viewer()))->setProperty("id", "fullscreenviewer");
|
||||
|
||||
// INITIALIZE PLAYBACK MENU
|
||||
|
||||
@@ -817,11 +812,11 @@ void MainWindow::setup_menus() {
|
||||
window_sequenceviewer_action->setCheckable(true);
|
||||
window_sequenceviewer_action->setData(reinterpret_cast<quintptr>(panel_sequence_viewer));
|
||||
|
||||
window_menu->addSeparator();
|
||||
window_menu->addSeparator();
|
||||
|
||||
window_menu->addAction(tr("Maximize Panel"), this, SLOT(maximize_panel()), QKeySequence("`"))->setProperty("id", "maximizepanel");
|
||||
window_menu->addAction(tr("Maximize Panel"), this, SLOT(maximize_panel()), QKeySequence("`"))->setProperty("id", "maximizepanel");
|
||||
|
||||
window_menu->addSeparator();
|
||||
window_menu->addSeparator();
|
||||
|
||||
window_menu->addAction(tr("Reset to Default Layout"), this, SLOT(reset_layout()))->setProperty("id", "resetdefaultlayout");
|
||||
|
||||
@@ -1207,34 +1202,34 @@ void MainWindow::next_cut() {
|
||||
QDockWidget* focused_panel = get_focused_panel();
|
||||
if (sequence != nullptr && (panel_timeline == focused_panel || panel_sequence_viewer == focused_panel)) {
|
||||
panel_timeline->next_cut();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::maximize_panel() {
|
||||
// toggles between normal state and a state of one panel being maximized
|
||||
if (temp_panel_state.isEmpty()) {
|
||||
// get currently hovered panel
|
||||
QDockWidget* focused_panel = get_focused_panel(true);
|
||||
// toggles between normal state and a state of one panel being maximized
|
||||
if (temp_panel_state.isEmpty()) {
|
||||
// get currently hovered panel
|
||||
QDockWidget* focused_panel = get_focused_panel(true);
|
||||
|
||||
// if the mouse is in fact hovering over a panel
|
||||
if (focused_panel != nullptr) {
|
||||
// store the current state of panels
|
||||
temp_panel_state = saveState();
|
||||
// if the mouse is in fact hovering over a panel
|
||||
if (focused_panel != nullptr) {
|
||||
// store the current state of panels
|
||||
temp_panel_state = saveState();
|
||||
|
||||
// remove all dock widgets (kind of painful having to do each individually)
|
||||
if (focused_panel != panel_project) removeDockWidget(panel_project);
|
||||
if (focused_panel != panel_effect_controls) removeDockWidget(panel_effect_controls);
|
||||
if (focused_panel != panel_timeline) removeDockWidget(panel_timeline);
|
||||
if (focused_panel != panel_sequence_viewer) removeDockWidget(panel_sequence_viewer);
|
||||
if (focused_panel != panel_footage_viewer) removeDockWidget(panel_footage_viewer);
|
||||
}
|
||||
} else {
|
||||
// we must be maximized, restore previous state
|
||||
restoreState(temp_panel_state);
|
||||
// remove all dock widgets (kind of painful having to do each individually)
|
||||
if (focused_panel != panel_project) removeDockWidget(panel_project);
|
||||
if (focused_panel != panel_effect_controls) removeDockWidget(panel_effect_controls);
|
||||
if (focused_panel != panel_timeline) removeDockWidget(panel_timeline);
|
||||
if (focused_panel != panel_sequence_viewer) removeDockWidget(panel_sequence_viewer);
|
||||
if (focused_panel != panel_footage_viewer) removeDockWidget(panel_footage_viewer);
|
||||
}
|
||||
} else {
|
||||
// we must be maximized, restore previous state
|
||||
restoreState(temp_panel_state);
|
||||
|
||||
// clear temp panel state for next maximize call
|
||||
temp_panel_state.clear();
|
||||
}
|
||||
// clear temp panel state for next maximize call
|
||||
temp_panel_state.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::preferences()
|
||||
@@ -1249,15 +1244,15 @@ void MainWindow::zoom_in_tracks() {
|
||||
}
|
||||
|
||||
void MainWindow::zoom_out_tracks() {
|
||||
panel_timeline->decrease_track_height();
|
||||
panel_timeline->decrease_track_height();
|
||||
}
|
||||
|
||||
void MainWindow::full_screen_viewer() {
|
||||
if (get_focused_panel() == panel_footage_viewer) {
|
||||
panel_footage_viewer->viewer_widget->set_fullscreen();
|
||||
} else {
|
||||
panel_sequence_viewer->viewer_widget->set_fullscreen();
|
||||
}
|
||||
if (get_focused_panel() == panel_footage_viewer) {
|
||||
panel_footage_viewer->viewer_widget->set_fullscreen();
|
||||
} else {
|
||||
panel_sequence_viewer->viewer_widget->set_fullscreen();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::windowMenu_About_To_Be_Shown() {
|
||||
@@ -1643,9 +1638,9 @@ void MainWindow::toggle_panel_visibility() {
|
||||
QDockWidget* w = reinterpret_cast<QDockWidget*>(action->data().value<quintptr>());
|
||||
w->setVisible(!w->isVisible());
|
||||
|
||||
// layout has changed, we're no longer in maximized panel mode,
|
||||
// so we clear this byte array
|
||||
temp_panel_state.clear();
|
||||
// layout has changed, we're no longer in maximized panel mode,
|
||||
// so we clear this byte array
|
||||
temp_panel_state.clear();
|
||||
}
|
||||
|
||||
void MainWindow::set_timecode_view() {
|
||||
|
||||
+18
-18
@@ -587,44 +587,46 @@ long Viewer::get_seq_out() {
|
||||
}
|
||||
|
||||
void Viewer::setup_ui() {
|
||||
QWidget* contents = new QWidget(this);
|
||||
QWidget* contents = new QWidget();
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout(contents);
|
||||
layout->setSpacing(0);
|
||||
layout->setMargin(0);
|
||||
|
||||
viewer_container = new ViewerContainer(contents);
|
||||
setWidget(contents);
|
||||
|
||||
viewer_container = new ViewerContainer();
|
||||
viewer_container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
layout->addWidget(viewer_container);
|
||||
|
||||
headers = new TimelineHeader(contents);
|
||||
headers = new TimelineHeader();
|
||||
layout->addWidget(headers);
|
||||
|
||||
horizontal_bar = new ResizableScrollBar(contents);
|
||||
horizontal_bar = new ResizableScrollBar();
|
||||
horizontal_bar->setSingleStep(20);
|
||||
horizontal_bar->setOrientation(Qt::Horizontal);
|
||||
layout->addWidget(horizontal_bar);
|
||||
|
||||
QWidget* lower_controls = new QWidget(contents);
|
||||
QWidget* lower_controls = new QWidget();
|
||||
|
||||
QHBoxLayout* lower_control_layout = new QHBoxLayout(lower_controls);
|
||||
lower_control_layout->setMargin(0);
|
||||
|
||||
// current time code
|
||||
QWidget* current_timecode_container = new QWidget(lower_controls);
|
||||
QWidget* current_timecode_container = new QWidget();
|
||||
QHBoxLayout* current_timecode_container_layout = new QHBoxLayout(current_timecode_container);
|
||||
current_timecode_container_layout->setSpacing(0);
|
||||
current_timecode_container_layout->setMargin(0);
|
||||
current_timecode_slider = new LabelSlider(current_timecode_container);
|
||||
current_timecode_slider = new LabelSlider();
|
||||
lower_control_layout->addWidget(current_timecode_container);
|
||||
|
||||
QWidget* playback_controls = new QWidget(lower_controls);
|
||||
QWidget* playback_controls = new QWidget();
|
||||
|
||||
QHBoxLayout* playback_control_layout = new QHBoxLayout(playback_controls);
|
||||
playback_control_layout->setSpacing(0);
|
||||
playback_control_layout->setMargin(0);
|
||||
|
||||
go_to_start_button = new QPushButton(playback_controls);
|
||||
go_to_start_button = new QPushButton();
|
||||
QIcon goToStartIcon;
|
||||
goToStartIcon.addFile(QStringLiteral(":/icons/prev.png"), QSize(), QIcon::Normal, QIcon::Off);
|
||||
goToStartIcon.addFile(QStringLiteral(":/icons/prev-disabled.png"), QSize(), QIcon::Disabled, QIcon::Off);
|
||||
@@ -632,7 +634,7 @@ void Viewer::setup_ui() {
|
||||
connect(go_to_start_button, SIGNAL(clicked(bool)), this, SLOT(go_to_in()));
|
||||
playback_control_layout->addWidget(go_to_start_button);
|
||||
|
||||
prev_frame_button = new QPushButton(playback_controls);
|
||||
prev_frame_button = new QPushButton();
|
||||
QIcon rewindIcon;
|
||||
rewindIcon.addFile(QStringLiteral(":/icons/rew.png"), QSize(), QIcon::Normal, QIcon::Off);
|
||||
rewindIcon.addFile(QStringLiteral(":/icons/rew-disabled.png"), QSize(), QIcon::Disabled, QIcon::Off);
|
||||
@@ -640,14 +642,14 @@ void Viewer::setup_ui() {
|
||||
connect(prev_frame_button, SIGNAL(clicked(bool)), this, SLOT(previous_frame()));
|
||||
playback_control_layout->addWidget(prev_frame_button);
|
||||
|
||||
play_button = new QPushButton(playback_controls);
|
||||
play_button = new QPushButton();
|
||||
playIcon.addFile(QStringLiteral(":/icons/play.png"), QSize(), QIcon::Normal, QIcon::On);
|
||||
playIcon.addFile(QStringLiteral(":/icons/play-disabled.png"), QSize(), QIcon::Disabled, QIcon::On);
|
||||
play_button->setIcon(playIcon);
|
||||
connect(play_button, SIGNAL(clicked(bool)), this, SLOT(toggle_play()));
|
||||
playback_control_layout->addWidget(play_button);
|
||||
|
||||
next_frame_button = new QPushButton(playback_controls);
|
||||
next_frame_button = new QPushButton();
|
||||
QIcon ffIcon;
|
||||
ffIcon.addFile(QStringLiteral(":/icons/ff.png"), QSize(), QIcon::Normal, QIcon::On);
|
||||
ffIcon.addFile(QStringLiteral(":/icons/ff-disabled.png"), QSize(), QIcon::Disabled, QIcon::Off);
|
||||
@@ -655,7 +657,7 @@ void Viewer::setup_ui() {
|
||||
connect(next_frame_button, SIGNAL(clicked(bool)), this, SLOT(next_frame()));
|
||||
playback_control_layout->addWidget(next_frame_button);
|
||||
|
||||
go_to_end_frame = new QPushButton(playback_controls);
|
||||
go_to_end_frame = new QPushButton();
|
||||
QIcon nextIcon;
|
||||
nextIcon.addFile(QStringLiteral(":/icons/next.png"), QSize(), QIcon::Normal, QIcon::Off);
|
||||
nextIcon.addFile(QStringLiteral(":/icons/next-disabled.png"), QSize(), QIcon::Disabled, QIcon::Off);
|
||||
@@ -665,21 +667,19 @@ void Viewer::setup_ui() {
|
||||
|
||||
lower_control_layout->addWidget(playback_controls);
|
||||
|
||||
QWidget* end_timecode_container = new QWidget(lower_controls);
|
||||
QWidget* end_timecode_container = new QWidget();
|
||||
|
||||
QHBoxLayout* end_timecode_layout = new QHBoxLayout(end_timecode_container);
|
||||
end_timecode_layout->setSpacing(0);
|
||||
end_timecode_layout->setMargin(0);
|
||||
end_timecode = new QLabel(end_timecode_container);
|
||||
end_timecode->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
|
||||
|
||||
end_timecode = new QLabel();
|
||||
end_timecode->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
|
||||
end_timecode_layout->addWidget(end_timecode);
|
||||
|
||||
lower_control_layout->addWidget(end_timecode_container);
|
||||
|
||||
layout->addWidget(lower_controls);
|
||||
|
||||
setWidget(contents);
|
||||
}
|
||||
|
||||
void Viewer::set_media(Media* m) {
|
||||
|
||||
@@ -20,9 +20,6 @@ ViewerContainer::ViewerContainer(QWidget *parent) :
|
||||
horizontal_scrollbar = new QScrollBar(Qt::Horizontal, this);
|
||||
vertical_scrollbar = new QScrollBar(Qt::Vertical, this);
|
||||
|
||||
horizontal_scrollbar->setVisible(false);
|
||||
vertical_scrollbar->setVisible(false);
|
||||
|
||||
horizontal_scrollbar->setSingleStep(20);
|
||||
vertical_scrollbar->setSingleStep(20);
|
||||
|
||||
@@ -112,6 +109,8 @@ void ViewerContainer::adjust() {
|
||||
|
||||
horizontal_scrollbar->setValue(horizontal_scrollbar->maximum()/2);
|
||||
vertical_scrollbar->setValue(vertical_scrollbar->maximum()/2);
|
||||
|
||||
adjust_scrollbars();
|
||||
}
|
||||
} else {
|
||||
// if the zoom size is smaller than the available area, scale the surface down
|
||||
@@ -129,7 +128,7 @@ void ViewerContainer::adjust() {
|
||||
}
|
||||
}
|
||||
|
||||
void ViewerContainer::resizeEvent(QResizeEvent *event) {
|
||||
void ViewerContainer::adjust_scrollbars() {
|
||||
horizontal_scrollbar->move(0, height()-horizontal_scrollbar->height());
|
||||
horizontal_scrollbar->setFixedWidth(qMax(0, width()-vertical_scrollbar->width()));
|
||||
horizontal_scrollbar->setPageStep(width());
|
||||
@@ -137,7 +136,9 @@ void ViewerContainer::resizeEvent(QResizeEvent *event) {
|
||||
vertical_scrollbar->move(width() - vertical_scrollbar->width(), 0);
|
||||
vertical_scrollbar->setFixedHeight(qMax(0, height()-horizontal_scrollbar->height()));
|
||||
vertical_scrollbar->setPageStep(height());
|
||||
}
|
||||
|
||||
void ViewerContainer::resizeEvent(QResizeEvent *event) {
|
||||
event->accept();
|
||||
adjust();
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@ public:
|
||||
ViewerWidget* child;
|
||||
void adjust();
|
||||
|
||||
// manually moves scrollbars into the correct position
|
||||
void adjust_scrollbars();
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *event);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user