1 /* === S Y N F I G ========================================================= */
2 /*! \file gtkmm/renddesc.h
8 ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
10 ** This package is free software; you can redistribute it and/or
11 ** modify it under the terms of the GNU General Public License as
12 ** published by the Free Software Foundation; either version 2 of
13 ** the License, or (at your option) any later version.
15 ** This package is distributed in the hope that it will be useful,
16 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 ** General Public License for more details.
21 ** === N O T E S ===========================================================
23 ** ========================================================================= */
25 /* === S T A R T =========================================================== */
27 #ifndef __SYNFIG_GTKMM_RENDDESC_H
28 #define __SYNFIG_GTKMM_RENDDESC_H
30 /* === H E A D E R S ======================================================= */
32 #include <gtkmm/table.h>
33 #include <gtkmm/frame.h>
34 #include <synfig/renddesc.h>
35 #include <gtkmm/spinbutton.h>
36 #include <gtkmm/adjustment.h>
37 #include <gtkmm/checkbutton.h>
38 #include <gtkmm/notebook.h>
39 #include "widget_vector.h"
40 #include "widget_time.h"
42 /* === M A C R O S ========================================================= */
44 /* === T Y P E D E F S ===================================================== */
46 /* === C L A S S E S & S T R U C T S ======================================= */
50 class Widget_RendDesc : public Gtk::Notebook
52 synfig::RendDesc rend_desc_;
53 sigc::signal<void> signal_changed_;
55 Gtk::Adjustment adjustment_width;
56 Gtk::Adjustment adjustment_height;
57 Gtk::Adjustment adjustment_xres;
58 Gtk::Adjustment adjustment_yres;
59 Gtk::Adjustment adjustment_phy_width;
60 Gtk::Adjustment adjustment_phy_height;
61 Gtk::Adjustment adjustment_fps;
62 //Gtk::Adjustment adjustment_start_time;
63 //Gtk::Adjustment adjustment_end_time;
64 //Gtk::Adjustment adjustment_start_frame;
65 //Gtk::Adjustment adjustment_end_frame;
66 Gtk::Adjustment adjustment_span;
68 Gtk::SpinButton *entry_width;
69 Gtk::SpinButton *entry_height;
70 Gtk::SpinButton *entry_xres;
71 Gtk::SpinButton *entry_yres;
72 Gtk::SpinButton *entry_phy_width;
73 Gtk::SpinButton *entry_phy_height;
74 Gtk::SpinButton *entry_fps;
75 // Gtk::SpinButton *entry_start_time;
76 // Gtk::SpinButton *entry_end_time;
77 // Gtk::SpinButton *entry_start_frame;
78 // Gtk::SpinButton *entry_end_frame;
79 Gtk::SpinButton *entry_span;
81 Gtk::CheckButton *toggle_px_aspect;
82 Gtk::CheckButton *toggle_px_width;
83 Gtk::CheckButton *toggle_px_height;
85 Gtk::CheckButton *toggle_im_aspect;
86 Gtk::CheckButton *toggle_im_width;
87 Gtk::CheckButton *toggle_im_height;
88 Gtk::CheckButton *toggle_im_span;
90 /* Gtk::Table *time_table; */
91 Gtk::Frame *time_frame;
93 Widget_Vector *entry_tl;
94 Widget_Vector *entry_br;
96 Widget_Time *entry_start_time;
97 Widget_Time *entry_end_time;
99 mutable int update_lock;
104 UpdateLock(int &locked):locked(locked){locked++;}
105 ~UpdateLock(){locked--;}
110 sigc::signal<void> &signal_changed() { return signal_changed_; }
115 //! Sets the RendDesc
116 void set_rend_desc(const synfig::RendDesc &rend_desc);
118 //! Applies the given RendDesc to the current RendDesc
119 void apply_rend_desc(const synfig::RendDesc &rend_desc);
121 //! Retrieves the current RendDesc
122 const synfig::RendDesc &get_rend_desc();
124 void disable_time_section();
126 void enable_time_section();
131 void on_width_changed();
132 void on_height_changed();
133 void on_xres_changed();
134 void on_yres_changed();
135 void on_phy_width_changed();
136 void on_phy_height_changed();
137 void on_tl_changed();
138 void on_br_changed();
139 void on_fps_changed();
140 void on_start_time_changed();
141 void on_end_time_changed();
142 //void on_start_frame_changed();
143 //void on_end_frame_changed();
144 void on_lock_changed();
145 void on_span_changed();
147 void create_widgets();
148 void connect_signals();
149 Gtk::Widget *create_image_tab();
150 Gtk::Widget *create_time_tab();
151 Gtk::Widget *create_other_tab();
154 }; // END of namespace studio
156 /* === E N D =============================================================== */