Olive
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 
34 #include "ui/timelineheader.h"
35 #include "ui/keyframeview.h"
36 #include "ui/resizablescrollbar.h"
37 #include "ui/keyframeview.h"
38 #include "ui/panel.h"
39 
40 class EffectsArea : public QWidget {
41  Q_OBJECT
42 public:
43  EffectsArea(QWidget* parent = 0);
44  QScrollArea* parent_widget;
47 public slots:
48  void receive_wheel_event(QWheelEvent* e);
49 };
50 
51 class EffectControls : public Panel
52 {
53  Q_OBJECT
54 public:
55  explicit EffectControls(QWidget *parent = 0);
57  int get_mode();
58  void set_clips(QVector<int>& clips, int mode);
59  void clear_effects(bool clear_cache);
60  void delete_effects();
61  bool is_focused();
62  void reload_clips();
63  void set_zoom(bool in);
64  bool keyframe_focus();
66  bool multiple;
67  void scroll_to_frame(long frame);
68 
69  QVector<int> selected_clips;
70 
71  double zoom;
72 
74  QScrollBar* verticalScrollBar;
75 
77 
78  void add_effect_paste_action(QMenu* menu);
79 public slots:
80  void cut();
81  void copy(bool del = false);
82  void update_keyframes();
83 private slots:
84  void menu_select(QAction* q);
85 
86  void video_effect_click();
87  void audio_effect_click();
90 
91  void deselect_all_effects(QWidget*);
92 
93  void update_scrollbar();
94  void queue_post_update();
95 
97 protected:
98  virtual void resizeEvent(QResizeEvent *event) override;
99  virtual void Retranslate() override;
100 private:
101  void show_effect_menu(int type, int subtype);
102  void load_effects();
103  void load_keyframes();
104  void open_effect(QVBoxLayout* hlayout, EffectPtr e);
105  void UpdateTitle();
106 
107  void setup_ui();
108 
111  QString panel_name;
112  int mode;
113 
114  QPushButton* btnAddVideoEffect;
116  QPushButton* btnAddVideoTransition;
117  QPushButton* btnAddAudioEffect;
118  QPushButton* btnAddAudioTransition;
123  QScrollArea* scrollArea;
127  QWidget* vcontainer;
128  QWidget* acontainer;
129 };
130 
131 #endif // EFFECTCONTROLS_H
QPushButton * btnAddVideoTransition
Definition: effectcontrols.h:116
QString panel_name
Definition: effectcontrols.h:111
virtual void Retranslate() override
Definition: effectcontrols.cpp:492
ResizableScrollBar * horizontalScrollBar
Definition: effectcontrols.h:73
int mode
Definition: effectcontrols.h:112
KeyframeView * keyframeView
Definition: effectcontrols.h:124
void update_scrollbar()
Definition: effectcontrols.cpp:506
void load_effects()
Definition: effectcontrols.cpp:524
void effects_area_context_menu()
Definition: effectcontrols.cpp:516
QPushButton * btnAddAudioEffect
Definition: effectcontrols.h:117
Definition: keyframeview.h:33
KeyframeView * keyframe_area
Definition: effectcontrols.h:45
void set_clips(QVector< int > &clips, int mode)
Definition: effectcontrols.cpp:588
QLabel * lblAudioEffects
Definition: effectcontrols.h:120
void audio_effect_click()
Definition: effectcontrols.cpp:602
QWidget * audio_effect_area
Definition: effectcontrols.h:126
Definition: effectcontrols.h:40
~EffectControls()
Definition: effectcontrols.cpp:84
EffectsArea * effects_area
Definition: effectcontrols.h:122
QScrollArea * scrollArea
Definition: effectcontrols.h:123
QWidget * video_effect_area
Definition: effectcontrols.h:125
EffectControls(QWidget *parent=0)
Definition: effectcontrols.cpp:55
void reload_clips()
Definition: effectcontrols.cpp:583
QVector< int > selected_clips
Definition: effectcontrols.h:69
QWidget * vcontainer
Definition: effectcontrols.h:127
int effect_menu_type
Definition: effectcontrols.h:109
void delete_selected_keyframes()
Definition: effectcontrols.cpp:139
int effect_menu_subtype
Definition: effectcontrols.h:110
void deselect_all_effects(QWidget *)
Definition: effectcontrols.cpp:290
void update_keyframes()
Definition: effectcontrols.cpp:134
int get_mode()
Definition: effectcontrols.cpp:86
void set_zoom(bool in)
Definition: effectcontrols.cpp:94
Definition: timelineheader.h:31
void load_keyframes()
double zoom
Definition: effectcontrols.h:71
bool multiple
Definition: effectcontrols.h:66
void video_transition_click()
Definition: effectcontrols.cpp:606
TimelineHeader * headers
Definition: effectcontrols.h:121
Definition: effectcontrols.h:51
Definition: panel.h:26
void setup_ui()
Definition: effectcontrols.cpp:316
QScrollBar * verticalScrollBar
Definition: effectcontrols.h:74
void copy(bool del=false)
Definition: effectcontrols.cpp:143
void UpdateTitle()
Definition: effectcontrols.cpp:308
void receive_wheel_event(QWheelEvent *e)
Definition: effectcontrols.cpp:639
void audio_transition_click()
Definition: effectcontrols.cpp:610
void delete_effects()
Definition: effectcontrols.cpp:560
void menu_select(QAction *q)
Definition: effectcontrols.cpp:99
void scroll_to_frame(long frame)
Definition: effectcontrols.cpp:180
virtual void resizeEvent(QResizeEvent *event) override
Definition: effectcontrols.cpp:614
void show_effect_menu(int type, int subtype)
Definition: effectcontrols.cpp:193
QLabel * lblMultipleClipsSelected
Definition: effectcontrols.h:119
QPushButton * btnAddVideoEffect
Definition: effectcontrols.h:114
QLabel * lblVideoEffects
Definition: effectcontrols.h:115
void clear_effects(bool clear_cache)
Definition: effectcontrols.cpp:263
Definition: resizablescrollbar.h:26
QMutex effects_loaded
Definition: effectcontrols.h:76
QPushButton * btnAddAudioTransition
Definition: effectcontrols.h:118
void queue_post_update()
Definition: effectcontrols.cpp:511
void cut()
Definition: effectcontrols.cpp:189
std::shared_ptr< Effect > EffectPtr
Definition: effect.h:48
EffectsArea(QWidget *parent=0)
Definition: effectcontrols.cpp:635
QScrollArea * parent_widget
Definition: effectcontrols.h:44
void video_effect_click()
Definition: effectcontrols.cpp:598
TimelineHeader * header
Definition: effectcontrols.h:46
bool is_focused()
Definition: effectcontrols.cpp:618
QWidget * acontainer
Definition: effectcontrols.h:128
bool keyframe_focus()
Definition: effectcontrols.cpp:90
void add_effect_paste_action(QMenu *menu)
Definition: effectcontrols.cpp:184
void open_effect(QVBoxLayout *hlayout, EffectPtr e)
Definition: effectcontrols.cpp:302
virtual bool event(QEvent *e) override
Definition: panel.cpp:29