1 /*! ========================================================================
3 ** Template Header File
4 ** $Id: renddesc.h,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $
6 ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
8 ** This package is free software; you can redistribute it and/or
9 ** modify it under the terms of the GNU General Public License as
10 ** published by the Free Software Foundation; either version 2 of
11 ** the License, or (at your option) any later version.
13 ** This package is distributed in the hope that it will be useful,
14 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 ** General Public License for more details.
18 ** === N O T E S ===========================================================
20 ** ========================================================================= */
22 /* === S T A R T =========================================================== */
24 #ifndef __SYNFIG_GTKMM_RENDDESC_H
25 #define __SYNFIG_GTKMM_RENDDESC_H
27 /* === H E A D E R S ======================================================= */
29 #include <gtkmm/table.h>
30 #include <gtkmm/frame.h>
31 #include <synfig/renddesc.h>
32 #include <gtkmm/spinbutton.h>
33 #include <gtkmm/adjustment.h>
34 #include <gtkmm/checkbutton.h>
35 #include <gtkmm/notebook.h>
36 #include "widget_vector.h"
37 #include "widget_time.h"
39 /* === M A C R O S ========================================================= */
41 /* === T Y P E D E F S ===================================================== */
43 /* === C L A S S E S & S T R U C T S ======================================= */
47 class Widget_RendDesc : public Gtk::Notebook
49 synfig::RendDesc rend_desc_;
50 sigc::signal<void> signal_changed_;
52 Gtk::Adjustment adjustment_width;
53 Gtk::Adjustment adjustment_height;
54 Gtk::Adjustment adjustment_xres;
55 Gtk::Adjustment adjustment_yres;
56 Gtk::Adjustment adjustment_phy_width;
57 Gtk::Adjustment adjustment_phy_height;
58 Gtk::Adjustment adjustment_fps;
59 //Gtk::Adjustment adjustment_start_time;
60 //Gtk::Adjustment adjustment_end_time;
61 //Gtk::Adjustment adjustment_start_frame;
62 //Gtk::Adjustment adjustment_end_frame;
63 Gtk::Adjustment adjustment_span;
65 Gtk::SpinButton *entry_width;
66 Gtk::SpinButton *entry_height;
67 Gtk::SpinButton *entry_xres;
68 Gtk::SpinButton *entry_yres;
69 Gtk::SpinButton *entry_phy_width;
70 Gtk::SpinButton *entry_phy_height;
71 Gtk::SpinButton *entry_fps;
72 // Gtk::SpinButton *entry_start_time;
73 // Gtk::SpinButton *entry_end_time;
74 // Gtk::SpinButton *entry_start_frame;
75 // Gtk::SpinButton *entry_end_frame;
76 Gtk::SpinButton *entry_span;
78 Gtk::CheckButton *toggle_px_aspect;
79 Gtk::CheckButton *toggle_px_width;
80 Gtk::CheckButton *toggle_px_height;
82 Gtk::CheckButton *toggle_im_aspect;
83 Gtk::CheckButton *toggle_im_width;
84 Gtk::CheckButton *toggle_im_height;
85 Gtk::CheckButton *toggle_im_span;
87 /* Gtk::Table *time_table; */
88 Gtk::Frame *time_frame;
90 Widget_Vector *entry_tl;
91 Widget_Vector *entry_br;
93 Widget_Vector *entry_focus;
95 Widget_Time *entry_start_time;
96 Widget_Time *entry_end_time;
98 mutable int update_lock;
103 UpdateLock(int &locked):locked(locked){locked++;}
104 ~UpdateLock(){locked--;}
109 sigc::signal<void> &signal_changed() { return signal_changed_; }
114 //! Sets the RendDesc
115 void set_rend_desc(const synfig::RendDesc &rend_desc);
117 //! Applies the given RendDesc to the current RendDesc
118 void apply_rend_desc(const synfig::RendDesc &rend_desc);
120 //! Retrieves the current RendDesc
121 const synfig::RendDesc &get_rend_desc();
123 void disable_time_section();
125 void enable_time_section();
130 void on_width_changed();
131 void on_height_changed();
132 void on_xres_changed();
133 void on_yres_changed();
134 void on_phy_width_changed();
135 void on_phy_height_changed();
136 void on_tl_changed();
137 void on_br_changed();
138 void on_fps_changed();
139 void on_start_time_changed();
140 void on_end_time_changed();
141 //void on_start_frame_changed();
142 //void on_end_frame_changed();
143 void on_lock_changed();
144 void on_focus_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 =============================================================== */