Olive
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
effectcontrols.h
Go to the documentation of this file.
1 /***
2 
3  Olive - Non-Linear Video Editor
4  Copyright (C) 2019 Olive Team
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 
19 ***/
20 
21 #ifndef EFFECTCONTROLS_H
22 #define EFFECTCONTROLS_H
23 
24 #include <QUndoCommand>
25 #include <QMutex>
26 #include <QMenu>
27 #include <QScrollArea>
28 #include <QVBoxLayout>
29 #include <QLabel>
30 #include <QScrollBar>
31 #include <QHBoxLayout>
32 #include <QSplitter>
33 
35 #include "ui/timelineheader.h"
36 #include "ui/keyframeview.h"
37 #include "ui/resizablescrollbar.h"
38 #include "ui/keyframeview.h"
39 #include "ui/panel.h"
40 #include "ui/effectui.h"
41 
42 class EffectsArea : public QWidget {
43  Q_OBJECT
44 public:
45  EffectsArea(QWidget* parent = nullptr);
46  QScrollArea* parent_widget;
49 protected:
50  void resizeEvent(QResizeEvent*);
51 public slots:
52  void receive_wheel_event(QWheelEvent* e);
53 };
54 
55 class EffectControls : public Panel
56 {
57  Q_OBJECT
58 public:
59  explicit EffectControls(QWidget *parent = nullptr);
60  virtual ~EffectControls() override;
61 
62 
63  void Reload();
64  void SetClips();
65  void Clear(bool clear_cache = true);
66 
67  bool IsEffectSelected(Effect* e);
68 
69  void DeleteSelectedEffects();
70  bool is_focused();
71  void set_zoom(bool in);
72  bool keyframe_focus();
74  void scroll_to_frame(long frame);
75 
76  double zoom;
77 
79  QScrollBar* verticalScrollBar;
80 
82 
83  virtual void Retranslate() override;
84 
85  virtual void LoadLayoutState(const QByteArray& data) override;
86  virtual QByteArray SaveLayoutState() override;
87 public slots:
88  void cut();
89  void copy(bool del = false);
90  void update_keyframes();
91 private slots:
92  void menu_select(QAction* q);
93 
94  void video_effect_click();
95  void audio_effect_click();
98 
99  void deselect_all_effects(QWidget*);
100 
101  void update_scrollbar();
102  void queue_post_update();
103 
105 protected:
106  virtual void resizeEvent(QResizeEvent *event) override;
107 private:
108  QVector<Clip*> selected_clips_;
109  QVector<EffectUI*> open_effects_;
110 
111  void Load();
112 
113  void DeleteEffect(ComboAction* ca, Effect* effect_ref);
114 
115  void show_effect_menu(int type, int subtype);
116  void load_keyframes();
117  void open_effect(QVBoxLayout* hlayout, Effect *e);
118  void UpdateTitle();
119 
120  void setup_ui();
121 
124  QString panel_name;
125 
128  QVBoxLayout* video_effect_layout;
129  QVBoxLayout* audio_effect_layout;
130 
131  QSplitter* splitter;
132  QPushButton* btnAddVideoEffect;
135  QPushButton* btnAddVideoTransition;
136  QPushButton* btnAddAudioEffect;
137  QPushButton* btnAddAudioTransition;
140  QScrollArea* scrollArea;
142  QWidget* vcontainer;
143  QWidget* acontainer;
144 };
145 
146 #endif // EFFECTCONTROLS_H
void delete_selected_keyframes()
Definition: effectcontrols.cpp:143
Definition: panel.h:26
TimelineHeader * header
Definition: effectcontrols.h:48
QVBoxLayout * audio_effect_layout
Definition: effectcontrols.h:129
bool is_focused()
Definition: effectcontrols.cpp:729
QVBoxLayout * video_effect_layout
Definition: effectcontrols.h:128
QWidget * vcontainer
Definition: effectcontrols.h:142
virtual void LoadLayoutState(const QByteArray &data) override
Definition: effectcontrols.cpp:519
TimelineHeader * headers
Definition: effectcontrols.h:138
void receive_wheel_event(QWheelEvent *e)
Definition: effectcontrols.cpp:750
QMutex effects_loaded
Definition: effectcontrols.h:81
Definition: effectcontrols.h:55
void audio_effect_click()
Definition: effectcontrols.cpp:713
bool keyframe_focus()
Definition: effectcontrols.cpp:88
void DeleteSelectedEffects()
Definition: effectcontrols.cpp:583
void Load()
Definition: effectcontrols.cpp:619
void copy(bool del=false)
Definition: effectcontrols.cpp:147
EffectsArea * effects_area
Definition: effectcontrols.h:139
void video_effect_click()
Definition: effectcontrols.cpp:709
void set_zoom(bool in)
Definition: effectcontrols.cpp:92
void Clear(bool clear_cache=true)
Definition: effectcontrols.cpp:266
void effects_area_context_menu()
Definition: effectcontrols.cpp:539
void deselect_all_effects(QWidget *)
Definition: effectcontrols.cpp:298
void cut()
Definition: effectcontrols.cpp:192
varying vec2 q
Definition: cornerpin.frag:6
QString panel_name
Definition: effectcontrols.h:124
void show_effect_menu(int type, int subtype)
Definition: effectcontrols.cpp:196
ResizableScrollBar * horizontalScrollBar
Definition: effectcontrols.h:78
QWidget * acontainer
Definition: effectcontrols.h:143
void SetClips()
Definition: effectcontrols.cpp:605
virtual void Retranslate() override
Definition: effectcontrols.cpp:506
int effect_menu_type
Definition: effectcontrols.h:122
QScrollArea * scrollArea
Definition: effectcontrols.h:140
virtual void resizeEvent(QResizeEvent *event) override
Definition: effectcontrols.cpp:725
KeyframeView * keyframe_area
Definition: effectcontrols.h:47
QPushButton * btnAddVideoEffect
Definition: effectcontrols.h:132
Definition: keyframeview.h:35
void scroll_to_frame(long frame)
Definition: effectcontrols.cpp:188
The ComboAction class.
Definition: comboaction.h:19
void resizeEvent(QResizeEvent *)
Definition: effectcontrols.cpp:745
void load_keyframes()
void open_effect(QVBoxLayout *hlayout, Effect *e)
Definition: effectcontrols.cpp:311
QWidget * video_effect_area
Definition: effectcontrols.h:126
void audio_transition_click()
Definition: effectcontrols.cpp:721
KeyframeView * keyframeView
Definition: effectcontrols.h:141
QScrollBar * verticalScrollBar
Definition: effectcontrols.h:79
void update_keyframes()
Definition: effectcontrols.cpp:133
QVector< Clip * > selected_clips_
Definition: effectcontrols.h:108
void Reload()
Definition: effectcontrols.cpp:600
void UpdateTitle()
Definition: effectcontrols.cpp:323
bool IsEffectSelected(Effect *e)
Definition: effectcontrols.cpp:288
void menu_select(QAction *q)
Definition: effectcontrols.cpp:98
void setup_ui()
Definition: effectcontrols.cpp:331
virtual QByteArray SaveLayoutState() override
Definition: effectcontrols.cpp:524
QPushButton * btnAddAudioTransition
Definition: effectcontrols.h:137
QScrollArea * parent_widget
Definition: effectcontrols.h:46
void DeleteEffect(ComboAction *ca, Effect *effect_ref)
Definition: effectcontrols.cpp:547
QPushButton * btnAddVideoTransition
Definition: effectcontrols.h:135
int effect_menu_subtype
Definition: effectcontrols.h:123
QSplitter * splitter
Definition: effectcontrols.h:131
QVector< EffectUI * > open_effects_
Definition: effectcontrols.h:109
Definition: resizablescrollbar.h:26
virtual ~EffectControls() override
Definition: effectcontrols.cpp:83
void video_transition_click()
Definition: effectcontrols.cpp:717
void update_scrollbar()
Definition: effectcontrols.cpp:529
Definition: timelineheader.h:31
void queue_post_update()
Definition: effectcontrols.cpp:534
QLabel * lblVideoEffects
Definition: effectcontrols.h:133
EffectsArea(QWidget *parent=nullptr)
Definition: effectcontrols.cpp:741
Definition: effect.h:136
QLabel * lblAudioEffects
Definition: effectcontrols.h:134
double zoom
Definition: effectcontrols.h:76
QWidget * audio_effect_area
Definition: effectcontrols.h:127
QPushButton * btnAddAudioEffect
Definition: effectcontrols.h:136
Definition: effectcontrols.h:42
EffectControls(QWidget *parent=nullptr)
Definition: effectcontrols.cpp:57