added maximize panel and full screen viewer menu items
This commit is contained in:
+48
-3
@@ -736,6 +736,8 @@ 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");
|
||||
|
||||
// INITIALIZE PLAYBACK MENU
|
||||
|
||||
QMenu* playback_menu = menuBar->addMenu(tr("&Playback"));
|
||||
@@ -799,7 +801,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->addSeparator();
|
||||
|
||||
window_menu->addAction(tr("Reset to Default Layout"), this, SLOT(reset_layout()))->setProperty("id", "resetdefaultlayout");
|
||||
|
||||
@@ -1185,7 +1191,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);
|
||||
|
||||
// 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);
|
||||
|
||||
// clear temp panel state for next maximize call
|
||||
temp_panel_state.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::preferences()
|
||||
@@ -1200,7 +1233,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();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::windowMenu_About_To_Be_Shown() {
|
||||
@@ -1585,6 +1626,10 @@ void MainWindow::toggle_panel_visibility() {
|
||||
QAction* action = static_cast<QAction*>(sender());
|
||||
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();
|
||||
}
|
||||
|
||||
void MainWindow::set_timecode_view() {
|
||||
|
||||
+6
-1
@@ -78,14 +78,16 @@ private slots:
|
||||
void prev_cut();
|
||||
void next_cut();
|
||||
|
||||
void maximize_panel();
|
||||
void reset_layout();
|
||||
|
||||
void preferences();
|
||||
|
||||
void zoom_in_tracks();
|
||||
|
||||
void zoom_out_tracks();
|
||||
|
||||
void full_screen_viewer();
|
||||
|
||||
void fileMenu_About_To_Be_Shown();
|
||||
void fileMenu_About_To_Hide();
|
||||
void editMenu_About_To_Be_Shown();
|
||||
@@ -204,6 +206,9 @@ private:
|
||||
bool enable_launch_with_project;
|
||||
|
||||
QString appName;
|
||||
|
||||
// used to store the panel state when one panel is maximized
|
||||
QByteArray temp_panel_state;
|
||||
};
|
||||
|
||||
extern MainWindow* mainWindow;
|
||||
|
||||
+2
-2
@@ -115,9 +115,9 @@ void update_ui(bool modified) {
|
||||
panel_graph_editor->update_panel();
|
||||
}
|
||||
|
||||
QDockWidget *get_focused_panel() {
|
||||
QDockWidget *get_focused_panel(bool force_hover) {
|
||||
QDockWidget* w = nullptr;
|
||||
if (config.hover_focus) {
|
||||
if (config.hover_focus || force_hover) {
|
||||
if (panel_project->underMouse()) {
|
||||
w = panel_project;
|
||||
} else if (panel_effect_controls->underMouse()) {
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ extern Timeline* panel_timeline;
|
||||
extern GraphEditor* panel_graph_editor;
|
||||
|
||||
void update_ui(bool modified);
|
||||
QDockWidget* get_focused_panel();
|
||||
QDockWidget* get_focused_panel(bool force_hover = false);
|
||||
void alloc_panels(QWidget *parent);
|
||||
void free_panels();
|
||||
void scroll_to_frame_internal(QScrollBar* bar, long frame, double zoom, int area_width);
|
||||
|
||||
+15
-7
@@ -93,7 +93,20 @@ void ViewerWidget::set_waveform_scroll(int s) {
|
||||
if (waveform) {
|
||||
waveform_scroll = s;
|
||||
update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ViewerWidget::set_fullscreen(int screen) {
|
||||
if (screen >= 0 && screen < QGuiApplication::screens().size()) {
|
||||
QScreen* selected_screen = QGuiApplication::screens().at(screen);
|
||||
window->showFullScreen();
|
||||
window->setGeometry(selected_screen->geometry());
|
||||
|
||||
// HACK: window seems to show with distorted texture on first showing, so we queue an update after it's shown
|
||||
QTimer::singleShot(100, window, SLOT(update()));
|
||||
} else {
|
||||
qCritical() << "Failed to find requested screen" << screen << "to set fullscreen to";
|
||||
}
|
||||
}
|
||||
|
||||
void ViewerWidget::show_context_menu() {
|
||||
@@ -170,12 +183,7 @@ void ViewerWidget::fullscreen_menu_action(QAction *action) {
|
||||
if (action->data().isNull()) {
|
||||
window->hide();
|
||||
} else {
|
||||
QScreen* selected_screen = QGuiApplication::screens().at(action->data().toInt());
|
||||
window->showFullScreen();
|
||||
window->setGeometry(selected_screen->geometry());
|
||||
|
||||
// HACK: window seems to show with distorted texture on first showing, so we queue an update after it's shown
|
||||
QTimer::singleShot(100, window, SLOT(update()));
|
||||
set_fullscreen(action->data().toInt());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ public:
|
||||
void set_scroll(double x, double y);
|
||||
public slots:
|
||||
void set_waveform_scroll(int s);
|
||||
void set_fullscreen(int screen = 0);
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
void mouseMoveEvent(QMouseEvent *event);
|
||||
|
||||
Reference in New Issue
Block a user