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 "widgets/widget_vector.h"
40 #include "widgets/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_Vector *entry_focus;
98 Widget_Time *entry_start_time;
99 Widget_Time *entry_end_time;
101 mutable int update_lock;
106 UpdateLock(int &locked):locked(locked){locked++;}
107 ~UpdateLock(){locked--;}
112 sigc::signal<void> &signal_changed() { return signal_changed_; }
117 //! Sets the RendDesc
118 void set_rend_desc(const synfig::RendDesc &rend_desc);
120 //! Applies the given RendDesc to the current RendDesc
121 void apply_rend_desc(const synfig::RendDesc &rend_desc);
123 //! Retrieves the current RendDesc
124 const synfig::RendDesc &get_rend_desc();
126 void disable_time_section();
128 void enable_time_section();
133 void on_width_changed();
134 void on_height_changed();
135 void on_xres_changed();
136 void on_yres_changed();
137 void on_phy_width_changed();
138 void on_phy_height_changed();
139 void on_tl_changed();
140 void on_br_changed();
141 void on_fps_changed();
142 void on_start_time_changed();
143 void on_end_time_changed();
144 //void on_start_frame_changed();
145 //void on_end_frame_changed();
146 void on_lock_changed();
147 void on_focus_changed();
148 void on_span_changed();
150 void create_widgets();
151 void connect_signals();
152 Gtk::Widget *create_image_tab();
153 Gtk::Widget *create_time_tab();
154 Gtk::Widget *create_other_tab();
157 }; // END of namespace studio
159 /* === E N D =============================================================== */