X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Fsrc%2Fgtkmm%2Frenddesc.h;fp=synfig-studio%2Fsrc%2Fgtkmm%2Frenddesc.h;h=48d07934119a5b861f3e072c1ae23f3bb0818cef;hb=a095981e18cc37a8ecc7cd237cc22b9c10329264;hp=0000000000000000000000000000000000000000;hpb=9459638ad6797b8139f1e9f0715c96076dbf0890;p=synfig.git diff --git a/synfig-studio/src/gtkmm/renddesc.h b/synfig-studio/src/gtkmm/renddesc.h new file mode 100644 index 0000000..48d0793 --- /dev/null +++ b/synfig-studio/src/gtkmm/renddesc.h @@ -0,0 +1,161 @@ +/* === S Y N F I G ========================================================= */ +/*! \file gtkmm/renddesc.h +** \brief Header 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 +** +** === N O T E S =========================================================== +** +** ========================================================================= */ + +/* === S T A R T =========================================================== */ + +#ifndef __SYNFIG_GTKMM_RENDDESC_H +#define __SYNFIG_GTKMM_RENDDESC_H + +/* === H E A D E R S ======================================================= */ + +#include +#include +#include +#include +#include +#include +#include +#include "widget_vector.h" +#include "widget_time.h" + +/* === M A C R O S ========================================================= */ + +/* === T Y P E D E F S ===================================================== */ + +/* === C L A S S E S & S T R U C T S ======================================= */ + +namespace studio { + +class Widget_RendDesc : public Gtk::Notebook +{ + synfig::RendDesc rend_desc_; + sigc::signal signal_changed_; + + Gtk::Adjustment adjustment_width; + Gtk::Adjustment adjustment_height; + Gtk::Adjustment adjustment_xres; + Gtk::Adjustment adjustment_yres; + Gtk::Adjustment adjustment_phy_width; + Gtk::Adjustment adjustment_phy_height; + Gtk::Adjustment adjustment_fps; + //Gtk::Adjustment adjustment_start_time; + //Gtk::Adjustment adjustment_end_time; + //Gtk::Adjustment adjustment_start_frame; + //Gtk::Adjustment adjustment_end_frame; + Gtk::Adjustment adjustment_span; + + Gtk::SpinButton *entry_width; + Gtk::SpinButton *entry_height; + Gtk::SpinButton *entry_xres; + Gtk::SpinButton *entry_yres; + Gtk::SpinButton *entry_phy_width; + Gtk::SpinButton *entry_phy_height; + Gtk::SpinButton *entry_fps; +// Gtk::SpinButton *entry_start_time; +// Gtk::SpinButton *entry_end_time; +// Gtk::SpinButton *entry_start_frame; +// Gtk::SpinButton *entry_end_frame; + Gtk::SpinButton *entry_span; + + Gtk::CheckButton *toggle_px_aspect; + Gtk::CheckButton *toggle_px_width; + Gtk::CheckButton *toggle_px_height; + + Gtk::CheckButton *toggle_im_aspect; + Gtk::CheckButton *toggle_im_width; + Gtk::CheckButton *toggle_im_height; + Gtk::CheckButton *toggle_im_span; + + /* Gtk::Table *time_table; */ + Gtk::Frame *time_frame; + + Widget_Vector *entry_tl; + Widget_Vector *entry_br; + + Widget_Vector *entry_focus; + + Widget_Time *entry_start_time; + Widget_Time *entry_end_time; + + mutable int update_lock; + + struct UpdateLock + { + int &locked; + UpdateLock(int &locked):locked(locked){locked++;} + ~UpdateLock(){locked--;} + }; + +public: + + sigc::signal &signal_changed() { return signal_changed_; } + + Widget_RendDesc(); + ~Widget_RendDesc(); + + //! Sets the RendDesc + void set_rend_desc(const synfig::RendDesc &rend_desc); + + //! Applies the given RendDesc to the current RendDesc + void apply_rend_desc(const synfig::RendDesc &rend_desc); + + //! Retrieves the current RendDesc + const synfig::RendDesc &get_rend_desc(); + + void disable_time_section(); + + void enable_time_section(); + + void refresh(); +private: + + void on_width_changed(); + void on_height_changed(); + void on_xres_changed(); + void on_yres_changed(); + void on_phy_width_changed(); + void on_phy_height_changed(); + void on_tl_changed(); + void on_br_changed(); + void on_fps_changed(); + void on_start_time_changed(); + void on_end_time_changed(); + //void on_start_frame_changed(); + //void on_end_frame_changed(); + void on_lock_changed(); + void on_focus_changed(); + void on_span_changed(); + + void create_widgets(); + void connect_signals(); + Gtk::Widget *create_image_tab(); + Gtk::Widget *create_time_tab(); + Gtk::Widget *create_other_tab(); +}; + +}; // END of namespace studio + +/* === E N D =============================================================== */ + +#endif