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);
}