X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Fsrc%2Fgtkmm%2Fdialog_preview.cpp;fp=synfig-studio%2Fsrc%2Fgtkmm%2Fdialog_preview.cpp;h=07828693b872b1f11279aff43bf715a300011c0e;hb=a095981e18cc37a8ecc7cd237cc22b9c10329264;hp=0000000000000000000000000000000000000000;hpb=9459638ad6797b8139f1e9f0715c96076dbf0890;p=synfig.git diff --git a/synfig-studio/src/gtkmm/dialog_preview.cpp b/synfig-studio/src/gtkmm/dialog_preview.cpp new file mode 100644 index 0000000..0782869 --- /dev/null +++ b/synfig-studio/src/gtkmm/dialog_preview.cpp @@ -0,0 +1,220 @@ +/* === S Y N F I G ========================================================= */ +/*! \file dialog_preview.cpp +** \brief Preview dialog File +** +** $Id$ +** +** \legal +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** +** This package 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 2 of +** the License, or (at your option) any later version. +** +** This package 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. +** \endlegal +*/ +/* ========================================================================= */ + +/* === H E A D E R S ======================================================= */ + +#ifdef USING_PCH +# include "pch.h" +#else +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "dialog_preview.h" +#include "preview.h" +#include +#include +#include +#include +#include "general.h" + +#endif + +/* === U S I N G =========================================================== */ + +using namespace std; +using namespace etl; +using namespace synfig; +using namespace studio; +using namespace Gtk; + +/* === M A C R O S ========================================================= */ + +/* === G L O B A L S ======================================================= */ + +/* === P R O C E D U R E S ================================================= */ + +/* === M E T H O D S ======================================================= */ + +/* === E N T R Y P O I N T ================================================= */ + +//dialog_preview stuff... +Dialog_Preview::Dialog_Preview() +:Dialog(_("Preview Window"),false,true), +settings(this,"preview") +{ + get_vbox()->pack_start(preview); +} + +Dialog_Preview::~Dialog_Preview() +{ +} + +void Dialog_Preview::set_preview(etl::handle prev) +{ + get_window().clear(); + preview.set_preview(prev); + //preview.update(); +} + +void Dialog_Preview::on_hide() +{ + Dialog::on_hide(); + preview.stop(); + preview.stoprender(); +} + +//dialog_previewoptions stuff +Dialog_PreviewOptions::Dialog_PreviewOptions() +:Dialog(_("Preview Options"),false,true), +adj_zoom(0.5,0.1,5.0,0.1,0.2), +adj_fps(15,1,120,1,5), +check_overbegin(_("_Begin Time"),false), +check_overend(_("_End Time"),false), +settings(this,"prevoptions") +{ + //framerate = 15.0f; + //zoom = 0.2f; + + //set the fps of the time widgets + Gtk::Alignment *dialogPadding = manage(new Gtk::Alignment(0, 0, 1, 1)); + dialogPadding->set_padding(12, 12, 12, 12); + get_vbox()->add(*dialogPadding); + + Gtk::VBox *dialogBox = manage(new Gtk::VBox(false, 12)); + dialogPadding->add(*dialogBox); + + Gtk::Frame *generalFrame = manage(new Gtk::Frame(_("General Settings"))); + generalFrame->set_shadow_type(Gtk::SHADOW_NONE); + ((Gtk::Label *) generalFrame->get_label_widget())->set_markup(_("General Settings")); + dialogBox->pack_start(*generalFrame, false, false, 0); + + Gtk::Alignment *generalPadding = manage(new Gtk::Alignment(0, 0, 1, 1)); + generalPadding->set_padding(6, 0, 24, 0); + generalFrame->add(*generalPadding); + + Gtk::Table *generalTable = manage(new Gtk::Table(2, 2, false)); + generalTable->set_row_spacings(6); + generalTable->set_col_spacings(12); + generalPadding->add(*generalTable); + + Gtk::Label *zoomLabel = manage(new Gtk::Label(_("_Zoom"))); + zoomLabel->set_alignment(0, 0.5); + zoomLabel->set_use_underline(TRUE); + Gtk::SpinButton *zoomSpinner = manage(new Gtk::SpinButton(adj_zoom, 0.1, 2)); + zoomLabel->set_mnemonic_widget(*zoomSpinner); + zoomSpinner->set_alignment(1); + generalTable->attach(*zoomLabel, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + generalTable->attach(*zoomSpinner, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + + Gtk::Label *fpsLabel = manage(new Gtk::Label(_("_Frames per second"))); + fpsLabel->set_alignment(0, 0.5); + fpsLabel->set_use_underline(TRUE); + Gtk::SpinButton *fpsSpinner = manage(new Gtk::SpinButton(adj_fps, 1, 1)); + fpsLabel->set_mnemonic_widget(*fpsSpinner); + fpsSpinner->set_alignment(1); + generalTable->attach(*fpsLabel, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + generalTable->attach(*fpsSpinner, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + + Gtk::Frame *timeFrame = manage(new Gtk::Frame(_("Time Settings"))); + timeFrame->set_shadow_type(Gtk::SHADOW_NONE); + ((Gtk::Label *) timeFrame->get_label_widget())->set_markup(_("Time Settings")); + dialogBox->pack_start(*timeFrame, false, false, 0); + + Gtk::Alignment *timePadding = manage(new Gtk::Alignment(0, 0, 1, 1)); + timePadding->set_padding(6, 0, 24, 0); + timeFrame->add(*timePadding); + + Gtk::Table *timeTable = manage(new Gtk::Table(2, 2, false)); + timeTable->set_row_spacings(6); + timeTable->set_col_spacings(12); + timePadding->add(*timeTable); + + check_overbegin.set_alignment(0, 0.5); + check_overbegin.set_use_underline(TRUE); + check_overend.set_alignment(0, 0.5); + check_overend.set_use_underline(TRUE); + time_begin.set_alignment(1); + time_end.set_alignment(1); + timeTable->attach(check_overbegin, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + timeTable->attach(time_begin, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + timeTable->attach(check_overend, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + timeTable->attach(time_end, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0); + + check_overbegin.signal_toggled().connect(sigc::mem_fun(*this,&Dialog_PreviewOptions::on_overbegin_toggle)); + check_overend.signal_toggled().connect(sigc::mem_fun(*this,&Dialog_PreviewOptions::on_overend_toggle)); + + Gtk::Button *cancelButton = manage(new Gtk::Button(Gtk::StockID("gtk-cancel"))); + cancelButton->signal_clicked().connect(sigc::mem_fun(*this, &Dialog_PreviewOptions::on_cancel_pressed)); + add_action_widget(*cancelButton, 1); + + Gtk::Button *okbutton = manage(new Gtk::Button(Gtk::StockID("gtk-go-forward"))); + okbutton->set_label(_("Preview")); + okbutton->signal_clicked().connect(sigc::mem_fun(*this,&Dialog_PreviewOptions::on_ok_pressed)); + add_action_widget(*okbutton, 0); + + time_begin.set_sensitive(false); + time_end.set_sensitive(false); + show_all(); +} + +Dialog_PreviewOptions::~Dialog_PreviewOptions() +{ +} + +void Dialog_PreviewOptions::on_ok_pressed() +{ + PreviewInfo i; + i.zoom = get_zoom(); + i.fps = get_fps(); + i.overbegin = get_begin_override(); + i.overend = get_end_override(); + if(i.overbegin) i.begintime = (float)get_begintime(); + if(i.overend) i.endtime = (float)get_endtime(); + + hide(); + signal_finish_(i); + signal_finish_.clear(); +} + +void +Dialog_PreviewOptions::on_cancel_pressed() +{ + hide(); +} + +void Dialog_PreviewOptions::on_overbegin_toggle() +{ + time_begin.set_sensitive(get_begin_override()); +} + +void Dialog_PreviewOptions::on_overend_toggle() +{ + time_end.set_sensitive(get_end_override()); +} + +void studio::Dialog_PreviewOptions::set_global_fps(float f) +{ + globalfps = f; + time_begin.set_fps(f); + time_end.set_fps(f); +}