Files
oak-editor/app/panel/timebased/timebased.cpp
T
Mike-Solar bb40b4923e style: unify identifier naming per updated conventions
Automated with clang-tidy readability-identifier-naming (config added to
.clang-tidy) plus scripted passes, per the updated rules now documented
in CONTRIBUTING.md:

- types (class/struct/enum/alias/template params): PascalCase
- functions, variables, members: snake_case (incl. rational -> Rational)
- private/protected members: trailing underscore; static member
  variables likewise (instance_, available_themes_)
- constants and enum values: snake_case (kLinear -> k_linear,
  F32P -> f32p); ALL_CAPS reserved for macros
- macros: OAK_ prefix (OLIVE_ADD_TEST/OLIVE_ASSERT/OLIVE_CONFIG ->
  OAK_ADD_TEST/OAK_ASSERT/OAK_CONFIG, GL_PREAMBLE -> OAK_GL_PREAMBLE,
  include guards -> OAK_*)
- file names: all lowercase (Current/Plugin/OliveHost/OliveClip/
  OlivePluginInstance -> current/plugin/olivehost/oliveclip/
  oliveplugininstance)
- getters share the member name sans underscore, setters set_foo()
- Qt and third-party (OpenFX) virtual overrides and framework callbacks
  keep their original names (exempt in .clang-tidy)

Manual follow-ups required where automation could not reach:
- string-based QMetaObject/SIGNAL/SLOT references updated to renamed
  methods (AddTask, CreatedFile, DeleteSpecificFile, moveSelectionUp, ...)
- macro bodies referencing renamed methods (OLIVE_CONFIG,
  NODE_DEFAULT_DESTRUCTOR, MANAGEDDISPLAYWIDGET_*)
- self-shadowing locals renamed where signals/methods became same-named
  (size_changed, worker_count, selected_items, import param, filters)
- third_party OFX member/namespace usages restored (OFX::Host::*,
  _created, _clipPrefsDirty, createInstance, clearPersistentMessage)
- STL protocol aliases restored (const_iterator) with .clang-tidy
  ignore rules; qHash overloads restored

Full build and test suite pass: ctest 4/4, ~1960 gtest cases green.
2026-07-19 16:10:54 +08:00

232 lines
4.2 KiB
C++

/***
Olive - Non-Linear Video Editor
Copyright (C) 2022 Olive Team
Modifications Copyright (C) 2025 mikesolar
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
***/
#include "timebased.h"
namespace olive
{
TimeBasedPanel::TimeBasedPanel(const QString &object_name)
: PanelWidget(object_name)
, widget_(nullptr)
, show_and_raise_on_connect_(false)
{
}
TimeBasedPanel::~TimeBasedPanel()
{
delete widget_;
}
const Rational &TimeBasedPanel::timebase()
{
return widget_->timebase();
}
void TimeBasedPanel::go_to_start()
{
widget_->go_to_start();
}
void TimeBasedPanel::prev_frame()
{
widget_->prev_frame();
}
void TimeBasedPanel::next_frame()
{
widget_->next_frame();
}
void TimeBasedPanel::go_to_end()
{
widget_->go_to_end();
}
void TimeBasedPanel::zoom_in()
{
widget_->zoom_in();
}
void TimeBasedPanel::zoom_out()
{
widget_->zoom_out();
}
void TimeBasedPanel::set_timebase(const Rational &timebase)
{
widget_->SetTimebase(timebase);
}
void TimeBasedPanel::go_to_prev_cut()
{
widget_->go_to_prev_cut();
}
void TimeBasedPanel::go_to_next_cut()
{
widget_->go_to_next_cut();
}
void TimeBasedPanel::play_pause()
{
emit play_pause_requested();
}
void TimeBasedPanel::play_in_to_out()
{
emit play_in_to_out_requested();
}
void TimeBasedPanel::shuttle_left()
{
emit shuttle_left_requested();
}
void TimeBasedPanel::shuttle_stop()
{
emit shuttle_stop_requested();
}
void TimeBasedPanel::shuttle_right()
{
emit shuttle_right_requested();
}
void TimeBasedPanel::connect_viewer_node(ViewerOutput *node)
{
widget_->connect_viewer_node(node);
}
void TimeBasedPanel::set_time_based_widget(TimeBasedWidget *widget)
{
if (widget_) {
disconnect(widget_, &TimeBasedWidget::connected_node_changed, this,
&TimeBasedPanel::connected_node_changed);
}
widget_ = widget;
if (widget_) {
connect(widget_, &TimeBasedWidget::connected_node_changed, this,
&TimeBasedPanel::connected_node_changed);
}
set_widget_with_padding(widget_);
}
void TimeBasedPanel::retranslate()
{
if (get_time_based_widget()->get_connected_node()) {
set_subtitle(get_time_based_widget()->get_connected_node()->get_label());
} else {
set_subtitle(tr("(none)"));
}
}
void TimeBasedPanel::connected_node_changed(ViewerOutput *old, ViewerOutput *now)
{
if (old) {
disconnect(old, &ViewerOutput::label_changed, this,
&TimeBasedPanel::set_subtitle);
}
if (now) {
connect(now, &ViewerOutput::label_changed, this,
&TimeBasedPanel::set_subtitle);
if (show_and_raise_on_connect_) {
this->show();
this->raise();
}
}
// Update strings
retranslate();
}
void TimeBasedPanel::set_in()
{
get_time_based_widget()->set_in_at_playhead();
}
void TimeBasedPanel::set_out()
{
get_time_based_widget()->set_out_at_playhead();
}
void TimeBasedPanel::reset_in()
{
get_time_based_widget()->reset_in();
}
void TimeBasedPanel::reset_out()
{
get_time_based_widget()->reset_out();
}
void TimeBasedPanel::clear_in_out()
{
get_time_based_widget()->clear_in_out_points();
}
void TimeBasedPanel::set_marker()
{
get_time_based_widget()->set_marker();
}
void TimeBasedPanel::toggle_show_all()
{
get_time_based_widget()->toggle_show_all();
}
void TimeBasedPanel::go_to_in()
{
get_time_based_widget()->go_to_in();
}
void TimeBasedPanel::go_to_out()
{
get_time_based_widget()->go_to_out();
}
void TimeBasedPanel::delete_selected()
{
get_time_based_widget()->delete_selected();
}
void TimeBasedPanel::cut_selected()
{
get_time_based_widget()->copy_selected(true);
}
void TimeBasedPanel::copy_selected()
{
get_time_based_widget()->copy_selected(false);
}
void TimeBasedPanel::paste()
{
get_time_based_widget()->paste();
}
}