mirror of https://github.com/odrling/Aegisub
89 lines
2.5 KiB
C++
89 lines
2.5 KiB
C++
// Copyright (c) 2011, Thomas Goyne <plorkyeran@aegisub.org>
|
|
//
|
|
// Permission to use, copy, modify, and distribute this software for any
|
|
// purpose with or without fee is hereby granted, provided that the above
|
|
// copyright notice and this permission notice appear in all copies.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
//
|
|
// Aegisub Project http://www.aegisub.org/
|
|
//
|
|
// $Id$
|
|
|
|
/// @file dialog_shift_times.h
|
|
/// @see dialog_shift_times.cpp
|
|
/// @ingroup secondary_ui
|
|
///
|
|
|
|
#ifndef AGI_PRE
|
|
#include <deque>
|
|
|
|
#include <wx/dialog.h>
|
|
#endif
|
|
|
|
#include <libaegisub/scoped_ptr.h>
|
|
#include <libaegisub/signal.h>
|
|
#include <libaegisub/vfr.h>
|
|
|
|
#include "selection_controller.h"
|
|
|
|
class AssDialogue;
|
|
class TimeEdit;
|
|
class wxListBox;
|
|
class wxRadioBox;
|
|
class wxRadioButton;
|
|
class wxTextCtrl;
|
|
namespace agi { struct Context; }
|
|
namespace json {
|
|
class UnknownElement;
|
|
typedef std::deque<UnknownElement> Array;
|
|
}
|
|
|
|
/// DOCME
|
|
/// @class DialogShiftTimes
|
|
/// @brief DOCME
|
|
///
|
|
/// DOCME
|
|
class DialogShiftTimes : public wxDialog, private SelectionListener<AssDialogue> {
|
|
agi::Context *context;
|
|
|
|
std::string history_filename;
|
|
agi::scoped_ptr<json::Array> history;
|
|
agi::vfr::Framerate fps;
|
|
agi::signal::Connection timecodes_loaded_slot;
|
|
|
|
TimeEdit *shift_time;
|
|
wxTextCtrl *shift_frames;
|
|
wxRadioButton *shift_by_time;
|
|
wxRadioButton *shift_by_frames;
|
|
wxRadioButton *shift_forward;
|
|
wxRadioButton *shift_backward;
|
|
wxRadioBox *selection_mode;
|
|
wxRadioBox *time_fields;
|
|
wxListBox *history_box;
|
|
|
|
void SaveHistory(json::Array const& shifted_blocks);
|
|
void LoadHistory();
|
|
void Process(wxCommandEvent&);
|
|
int Shift(int initial_time, int shift, bool by_time, agi::vfr::Time type);
|
|
|
|
void OnClear(wxCommandEvent&);
|
|
void OnByTime(wxCommandEvent&);
|
|
void OnByFrames(wxCommandEvent&);
|
|
void OnHistoryClick(wxCommandEvent&);
|
|
|
|
void OnActiveLineChanged(AssDialogue*) { }
|
|
void OnSelectedSetChanged(Selection const&, Selection const&);
|
|
void OnTimecodesLoaded(agi::vfr::Framerate const& new_fps);
|
|
|
|
public:
|
|
DialogShiftTimes(agi::Context *context);
|
|
~DialogShiftTimes();
|
|
};
|