File indexing completed on 2025-02-02 04:11:33
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #include "keyframe_editor_widget.hpp" 0008 #include "ui_keyframe_editor_widget.h" 0009 #include "app/application.hpp" 0010 #include "keyframe_transition_data.hpp" 0011 0012 using namespace glaxnimate::gui; 0013 using namespace glaxnimate; 0014 0015 KeyframeEditorWidget::KeyframeEditorWidget(QWidget* parent) 0016 : QWidget(parent), d(std::make_unique<Ui::KeyframeEditorWidget>()) 0017 { 0018 d->setupUi(this); 0019 0020 0021 for ( int i = 0; i < KeyframeTransitionData::count; i++ ) 0022 { 0023 auto data = KeyframeTransitionData::from_index(i, KeyframeTransitionData::Start); 0024 d->combo_before->addItem(data.icon(), data.name); 0025 data = KeyframeTransitionData::from_index(i, KeyframeTransitionData::Finish); 0026 d->combo_after->addItem(data.icon(), data.name); 0027 } 0028 0029 connect(d->bezier_editor, &KeyframeTransitionWidget::before_changed, this, &KeyframeEditorWidget::update_before); 0030 connect(d->bezier_editor, &KeyframeTransitionWidget::after_changed, this, &KeyframeEditorWidget::update_after); 0031 } 0032 0033 KeyframeEditorWidget::~KeyframeEditorWidget() = default; 0034 0035 void KeyframeEditorWidget::changeEvent ( QEvent* e ) 0036 { 0037 QWidget::changeEvent(e); 0038 if ( e->type() == QEvent::LanguageChange) 0039 { 0040 d->retranslateUi(this); 0041 } 0042 } 0043 0044 void KeyframeEditorWidget::set_target(model::KeyframeTransition* kft) 0045 { 0046 d->bezier_editor->set_target(kft); 0047 } 0048 0049 void KeyframeEditorWidget::preset_after(int index) 0050 { 0051 if ( !d->bezier_editor->target() ) 0052 return; 0053 0054 d->bezier_editor->target()->set_after_descriptive(model::KeyframeTransition::Descriptive(index)); 0055 d->bezier_editor->update(); 0056 } 0057 0058 void KeyframeEditorWidget::preset_before(int index) 0059 { 0060 if ( !d->bezier_editor->target() ) 0061 return; 0062 0063 d->bezier_editor->target()->set_before_descriptive(model::KeyframeTransition::Descriptive(index)); 0064 d->bezier_editor->update(); 0065 } 0066 0067 void KeyframeEditorWidget::update_after(model::KeyframeTransition::Descriptive v) 0068 { 0069 d->combo_after->setCurrentIndex(int(v)); 0070 } 0071 0072 void KeyframeEditorWidget::update_before(model::KeyframeTransition::Descriptive v) 0073 { 0074 d->combo_before->setCurrentIndex(int(v)); 0075 }