diff --git a/mainwindow.cpp b/mainwindow.cpp index 8cd2f0972..f8be11aff 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -60,31 +60,26 @@ void MainWindow::setup_layout(bool reset) { panel_timeline->show(); panel_graph_editor->hide(); - bool load_default = true; - - /*if (!reset) { - QFile panel_config(get_data_path() + "/layout"); - if (panel_config.exists() && panel_config.open(QFile::ReadOnly)) { - if (restoreState(panel_config.readAll(), 0)) { - load_default = false; - } - panel_config.close(); - } - }*/ - - if (load_default) { - addDockWidget(Qt::TopDockWidgetArea, panel_project); - addDockWidget(Qt::TopDockWidgetArea, panel_footage_viewer); - tabifyDockWidget(panel_footage_viewer, panel_effect_controls); - panel_footage_viewer->raise(); - addDockWidget(Qt::TopDockWidgetArea, panel_sequence_viewer); - addDockWidget(Qt::BottomDockWidgetArea, panel_timeline); - panel_graph_editor->setFloating(true); + addDockWidget(Qt::TopDockWidgetArea, panel_project); + addDockWidget(Qt::TopDockWidgetArea, panel_footage_viewer); + tabifyDockWidget(panel_footage_viewer, panel_effect_controls); + panel_footage_viewer->raise(); + addDockWidget(Qt::TopDockWidgetArea, panel_sequence_viewer); + 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); + resizeDocks({panel_project}, {40}, Qt::Horizontal); #endif + + // load panels from file + if (!reset) { + QFile panel_config(get_data_path() + "/layout"); + if (panel_config.exists() && panel_config.open(QFile::ReadOnly)) { + restoreState(panel_config.readAll(), 0); + panel_config.close(); + } } layout()->update(); @@ -662,6 +657,7 @@ void MainWindow::windowMenu_About_To_Be_Shown() { ui->actionTimeline->setChecked(panel_timeline->isVisible()); ui->actionViewer->setChecked(panel_sequence_viewer->isVisible()); ui->actionFootage_Viewer->setChecked(panel_footage_viewer->isVisible()); + ui->actionGraph_Editor->setChecked(panel_graph_editor->isVisible()); } void MainWindow::viewMenu_About_To_Be_Shown() { @@ -1064,3 +1060,7 @@ void MainWindow::on_actionHand_Tool_triggered() { || panel_sequence_viewer->is_focused()) panel_timeline->ui->toolHandButton->click(); } + +void MainWindow::on_actionGraph_Editor_triggered() { + panel_graph_editor->setVisible(!panel_graph_editor->isVisible()); +} diff --git a/mainwindow.h b/mainwindow.h index a1b380542..76d70263a 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -215,6 +215,8 @@ private slots: void on_actionHand_Tool_triggered(); + void on_actionGraph_Editor_triggered(); + private: Ui::MainWindow *ui; void setup_layout(bool reset); diff --git a/mainwindow.ui b/mainwindow.ui index fe24d5e23..1daae80cf 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -111,6 +111,7 @@ + @@ -957,6 +958,14 @@ H + + + true + + + Graph Editor + + diff --git a/panels/grapheditor.cpp b/panels/grapheditor.cpp index ef2f1fdd2..4128b2474 100644 --- a/panels/grapheditor.cpp +++ b/panels/grapheditor.cpp @@ -5,9 +5,11 @@ #include #include "ui/graphview.h" +#include "ui/keyframenavigator.h" GraphEditor::GraphEditor(QWidget* parent) : QDockWidget(parent) { setWindowTitle("Graph Editor"); + resize(720, 480); QWidget* central_widget = new QWidget(); setWidget(central_widget); @@ -15,17 +17,32 @@ GraphEditor::GraphEditor(QWidget* parent) : QDockWidget(parent) { QVBoxLayout* layout = new QVBoxLayout(); central_widget->setLayout(layout); + QWidget* tool_widget = new QWidget(); + tool_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); QHBoxLayout* tools = new QHBoxLayout(); + tool_widget->setLayout(tools); + + KeyframeNavigator* keyframe_nav = new KeyframeNavigator(); + tools->addWidget(keyframe_nav); + tools->addStretch(); + tools->addWidget(new QPushButton("HECK!")); - layout->addLayout(tools); + tools->addStretch(); + + tools->addWidget(new QPushButton("Hand")); + + layout->addWidget(tool_widget); view = new GraphView(); layout->addWidget(view); + QWidget* value_widget = new QWidget(); + value_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); QHBoxLayout* values = new QHBoxLayout(); + value_widget->setLayout(values); values->addStretch(); values->addWidget(new QLabel("1920.0")); values->addWidget(new QLabel("1080.0")); values->addStretch(); - layout->addLayout(values); + layout->addWidget(value_widget); } diff --git a/panels/panels.cpp b/panels/panels.cpp index fcc9e0008..be40e402b 100644 --- a/panels/panels.cpp +++ b/panels/panels.cpp @@ -143,11 +143,17 @@ QDockWidget *get_focused_panel() { void alloc_panels(QWidget* parent) { // TODO maybe replace these with non-pointers later on? panel_sequence_viewer = new Viewer(parent); + panel_sequence_viewer->setObjectName("seq_viewer"); panel_footage_viewer = new Viewer(parent); + panel_footage_viewer->setObjectName("footage_viewer"); panel_project = new Project(parent); + panel_project->setObjectName("proj_root"); panel_effect_controls = new EffectControls(parent); + panel_effect_controls->setObjectName("fx_controls"); panel_timeline = new Timeline(parent); + panel_timeline->setObjectName("timeline"); panel_graph_editor = new GraphEditor(parent); + panel_graph_editor->setObjectName("graph_editor"); } void free_panels() { diff --git a/playback/audio.cpp b/playback/audio.cpp index 8d04cedce..9f80c7c6c 100644 --- a/playback/audio.cpp +++ b/playback/audio.cpp @@ -99,8 +99,10 @@ void stop_audio() { } void clear_audio_ibuffer() { + if (audio_thread != NULL) audio_thread->lock.lock(); memset(audio_ibuffer, 0, audio_ibuffer_size); audio_ibuffer_read = 0; + if (audio_thread != NULL) audio_thread->lock.unlock(); } int get_buffer_offset_from_frame(double framerate, long frame) { @@ -130,7 +132,7 @@ void AudioSenderThread::run() { // start data loop send_audio_to_output(0, audio_ibuffer_size); - lock.lock(); + lock.lock(); while (true) { cond.wait(&lock); if (close) { @@ -149,7 +151,7 @@ void AudioSenderThread::run() { audio_scrub = false; } - } + } lock.unlock(); } diff --git a/ui/graphview.cpp b/ui/graphview.cpp index 405663889..7b1bad15f 100644 --- a/ui/graphview.cpp +++ b/ui/graphview.cpp @@ -9,5 +9,8 @@ void GraphView::paintEvent(QPaintEvent *event) { p.setPen(Qt::white); - p.drawRect(rect()); + QRect border = rect(); + border.setWidth(border.width()-1); + border.setHeight(border.height()-1); + p.drawRect(border); }