my log
[synfig.git] / synfig-studio / trunk / src / gtkmm / renddesc.cpp
1 /* === S Y N F I G ========================================================= */
2 /*!     \file renddesc.cpp
3 **      \brief Template File
4 **
5 **      $Id: renddesc.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $
6 **
7 **      \legal
8 **      Copyright (c) 2002 Robert B. Quattlebaum Jr.
9 **
10 **      This software and associated documentation
11 **      are CONFIDENTIAL and PROPRIETARY property of
12 **      the above-mentioned copyright holder.
13 **
14 **      You may not copy, print, publish, or in any
15 **      other way distribute this software without
16 **      a prior written agreement with
17 **      the copyright holder.
18 **      \endlegal
19 */
20 /* ========================================================================= */
21
22 /* === H E A D E R S ======================================================= */
23
24 #ifdef USING_PCH
25 #       include "pch.h"
26 #else
27 #ifdef HAVE_CONFIG_H
28 #       include <config.h>
29 #endif
30
31 #include "renddesc.h"
32 #include <gtkmm/label.h>
33 #include <gtkmm/frame.h>
34 #include <ETL/misc>
35 #include <synfig/general.h>
36 //#include <gtkmm/seperator.h>
37
38 #endif
39
40 /* === U S I N G =========================================================== */
41
42 using namespace std;
43 using namespace etl;
44 using namespace synfig;
45 using namespace studio;
46
47 /* === M A C R O S ========================================================= */
48
49 #ifndef SYNFIG_MAX_PIXEL_WIDTH
50 #define SYNFIG_MAX_PIXEL_WIDTH  (~(1<<31))
51 #endif
52
53 #ifndef SYNFIG_MAX_PIXEL_HEIGHT
54 #define SYNFIG_MAX_PIXEL_HEIGHT (~(1<<31))
55 #endif
56
57 #if ! defined(_)
58 #define _(x)    (x)
59 #endif
60
61 #ifndef DPM2DPI
62 #define DPM2DPI(x)      ((x)/39.3700787402)
63 #define DPI2DPM(x)      ((x)*39.3700787402)
64 #endif
65
66 #ifndef METERS2INCHES
67 #define METERS2INCHES(x)        ((x)*39.3700787402)
68 #define INCHES2METERS(x)        ((x)/39.3700787402)
69 #endif
70
71 /* === G L O B A L S ======================================================= */
72
73 /* === P R O C E D U R E S ================================================= */
74
75 /* === M E T H O D S ======================================================= */
76
77 Widget_RendDesc::Widget_RendDesc():
78         Gtk::Table(1,2,false),
79         adjustment_width(1,1,SYNFIG_MAX_PIXEL_WIDTH),
80         adjustment_height(1,1,SYNFIG_MAX_PIXEL_HEIGHT),
81         adjustment_xres(0,0,10000000),
82         adjustment_yres(0,0,10000000),
83         adjustment_phy_width(0,0,10000000),
84         adjustment_phy_height(0,0,10000000),
85         adjustment_fps(0,0,10000000),
86         adjustment_span(0,0,10000000)
87 {
88         update_lock=0;
89         
90         Gtk::Frame *size_frame=manage(new Gtk::Frame(_("Image Size")));
91         Gtk::Frame *area_frame=manage(new Gtk::Frame(_("Image Area")));
92         time_frame=manage(new Gtk::Frame(_("Time")));
93         
94         Gtk::Table *size_table=manage(new Gtk::Table(2,2,false));
95         size_frame->add(*size_table);
96
97         Gtk::Table *area_table=manage(new Gtk::Table(2,2,false));
98         area_frame->add(*area_table);
99
100         time_table=manage(new Gtk::Table(2,2,false));
101         time_frame->add(*time_table);
102
103         Gtk::Frame *other_frame=manage(new Gtk::Frame(_("Other")));
104         Gtk::Table *other_table=manage(new Gtk::Table(2,2,false));
105         other_frame->add(*other_table);
106
107         Gtk::Frame *lock_frame=manage(new Gtk::Frame(_("Locks and Links")));
108         Gtk::Table *lock_table=manage(new Gtk::Table(2,2,false));
109         lock_frame->add(*lock_table);
110         
111         entry_width=manage(new Gtk::SpinButton(adjustment_width,1,0));
112         entry_height=manage(new Gtk::SpinButton(adjustment_height,1,0));        
113         entry_width->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_width_changed));
114         entry_height->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_height_changed));
115         size_table->attach(*manage(new Gtk::Label(_("Width"))), 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);        
116         size_table->attach(*manage(new Gtk::Label(_("Height"))), 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);       
117         size_table->attach(*entry_width, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0); 
118         size_table->attach(*entry_height, 1, 2, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);        
119         
120         entry_xres=manage(new Gtk::SpinButton(adjustment_xres,0.5,1));
121         entry_yres=manage(new Gtk::SpinButton(adjustment_yres,0.5,1));  
122         entry_xres->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_xres_changed));
123         entry_yres->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_yres_changed));
124         size_table->attach(*manage(new Gtk::Label(_("XRes"))), 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
125         size_table->attach(*manage(new Gtk::Label(_("YRes"))), 2, 3, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
126         size_table->attach(*entry_xres, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);  
127         size_table->attach(*entry_yres, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);  
128
129         entry_phy_width=manage(new Gtk::SpinButton(adjustment_phy_width,0.25,2));
130         entry_phy_height=manage(new Gtk::SpinButton(adjustment_phy_height,0.25,2));     
131         entry_phy_width->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_phy_width_changed));
132         entry_phy_height->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_phy_height_changed));
133         size_table->attach(*manage(new Gtk::Label(_("PhyWidth"))), 4, 5, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);     
134         size_table->attach(*manage(new Gtk::Label(_("PhyHeight"))), 4, 5, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);    
135         size_table->attach(*entry_phy_width, 5, 6, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);     
136         size_table->attach(*entry_phy_height, 5, 6, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
137
138
139         entry_span=manage(new Gtk::SpinButton(adjustment_span,0.1,4));  
140         entry_span->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_span_changed));
141         size_table->attach(*manage(new Gtk::Label(_("Span"))), 0, 1, 2, 3, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
142         size_table->attach(*entry_span, 1, 2, 2, 3, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);  
143
144         entry_tl=manage(new Widget_Vector());
145         entry_br=manage(new Widget_Vector());
146         entry_tl->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_tl_changed));
147         entry_br->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_br_changed));
148         area_table->attach(*manage(new Gtk::Label(_("Top-Left"))), 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);       
149         area_table->attach(*manage(new Gtk::Label(_("Bottom-Right"))), 0, 1, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);   
150         area_table->attach(*entry_tl, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
151         area_table->attach(*entry_br, 1, 2, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
152
153         entry_fps=manage(new Gtk::SpinButton(adjustment_fps,1,5));
154         entry_start_time=manage(new Widget_Time());
155         entry_end_time=manage(new Widget_Time());       
156         //entry_start_frame=manage(new Gtk::SpinButton(adjustment_start_frame,1,0));
157         //entry_end_frame=manage(new Gtk::SpinButton(adjustment_end_frame,1,0));        
158         entry_fps->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_fps_changed));
159         entry_start_time->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_start_time_changed));
160         entry_end_time->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_end_time_changed));
161         //entry_start_frame->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_start_frame_changed));
162         //entry_end_frame->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_end_frame_changed));
163         time_table->attach(*manage(new Gtk::Label(_("FPS"))), 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
164         time_table->attach(*manage(new Gtk::Label(_("Start Time"))), 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);   
165         time_table->attach(*manage(new Gtk::Label(_("End Time"))), 2, 3, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);     
166         //time_table->attach(*manage(new Gtk::Label(_("Start Frame"))), 4, 5, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);        
167         //time_table->attach(*manage(new Gtk::Label(_("End Frame"))), 4, 5, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
168         time_table->attach(*entry_fps, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);   
169         time_table->attach(*entry_start_time, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
170         time_table->attach(*entry_end_time, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);      
171         //time_table->attach(*entry_start_frame, 5, 6, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0); 
172         //time_table->attach(*entry_end_frame, 5, 6, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);   
173
174         entry_focus=manage(new Widget_Vector());
175         entry_focus->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_focus_changed));
176         other_table->attach(*manage(new Gtk::Label(_("Focus Point"))), 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);   
177         other_table->attach(*entry_focus, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);        
178
179
180
181         toggle_px_aspect=manage(new Gtk::CheckButton(_("Pixel Aspect")));
182         toggle_px_width=manage(new Gtk::CheckButton(_("Pixel Width")));
183         toggle_px_height=manage(new Gtk::CheckButton(_("Pixel Height")));
184
185         toggle_im_aspect=manage(new Gtk::CheckButton(_("Image Aspect")));
186         toggle_im_width=manage(new Gtk::CheckButton(_("Image Width")));
187         toggle_im_height=manage(new Gtk::CheckButton(_("Image Height")));
188         toggle_im_span=manage(new Gtk::CheckButton(_("Image Span")));
189
190         toggle_px_aspect->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
191         toggle_px_width->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
192         toggle_px_height->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
193         toggle_im_aspect->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
194         toggle_im_width->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
195         toggle_im_height->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
196         toggle_im_span->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
197
198         lock_table->attach(*toggle_px_aspect, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
199         lock_table->attach(*toggle_px_width, 0, 1, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);     
200         lock_table->attach(*toggle_px_height, 0, 1, 2, 3, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
201
202         lock_table->attach(*toggle_im_aspect, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
203         lock_table->attach(*toggle_im_width, 1, 2, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);     
204         lock_table->attach(*toggle_im_height, 1, 2, 2, 3, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
205         lock_table->attach(*toggle_im_span, 1, 2, 3, 4, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);      
206
207
208         lock_frame->show_all();
209         other_frame->show_all();
210         size_frame->show_all();
211         area_frame->show_all();
212         time_frame->show_all();
213         attach(*size_frame, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
214         attach(*area_frame, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
215         attach(*lock_frame, 0, 1, 2,3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);     
216         attach(*time_frame, 0, 1, 3, 4, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
217         attach(*other_frame, 0, 1, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);   
218 }
219
220 Widget_RendDesc::~Widget_RendDesc()
221 {
222 }
223
224 void Widget_RendDesc::set_rend_desc(const synfig::RendDesc &rend_desc)
225 {
226         if(update_lock)return;
227         
228         rend_desc_=rend_desc;
229         refresh();
230 }
231
232 void
233 Widget_RendDesc::refresh()
234 {
235         UpdateLock lock(update_lock);
236         adjustment_width.set_value(rend_desc_.get_w());
237         adjustment_height.set_value(rend_desc_.get_h());
238         adjustment_phy_width.set_value(METERS2INCHES(rend_desc_.get_physical_w()));
239         adjustment_phy_height.set_value(METERS2INCHES(rend_desc_.get_physical_h()));
240         adjustment_xres.set_value(DPM2DPI(rend_desc_.get_x_res()));
241         adjustment_yres.set_value(DPM2DPI(rend_desc_.get_y_res()));
242         entry_start_time->set_fps(rend_desc_.get_frame_rate());
243         entry_start_time->set_value(rend_desc_.get_time_start());
244         entry_end_time->set_fps(rend_desc_.get_frame_rate());
245         entry_end_time->set_value(rend_desc_.get_time_end());
246
247         adjustment_fps.set_value(rend_desc_.get_frame_rate());
248         adjustment_span.set_value(rend_desc_.get_span());
249         entry_tl->set_value(rend_desc_.get_tl());
250         entry_br->set_value(rend_desc_.get_br());
251         entry_focus->set_value(rend_desc_.get_focus());
252
253         toggle_px_aspect->set_active((bool)(rend_desc_.get_flags()&RendDesc::PX_ASPECT));
254         toggle_px_width->set_active((bool)(rend_desc_.get_flags()&RendDesc::PX_W));
255         toggle_px_height->set_active((bool)(rend_desc_.get_flags()&RendDesc::PX_H));
256
257         toggle_im_aspect->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_ASPECT));
258         toggle_im_width->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_W));
259         toggle_im_height->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_H));
260         toggle_im_span->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_SPAN));   
261 }
262
263 void Widget_RendDesc::apply_rend_desc(const synfig::RendDesc &rend_desc)
264 {
265         set_rend_desc(rend_desc);
266 }
267
268 const synfig::RendDesc &
269 Widget_RendDesc::get_rend_desc()
270 {
271         return rend_desc_;
272 }
273
274 void
275 Widget_RendDesc::on_width_changed()
276 {
277         if(update_lock)return;
278         UpdateLock lock(update_lock);
279         rend_desc_.set_w(round_to_int(adjustment_width.get_value()));
280         refresh();
281         signal_changed()();
282 }
283
284 void
285 Widget_RendDesc::on_lock_changed()
286 {
287         if(update_lock)return;
288         UpdateLock lock(update_lock);
289
290 #define DO_TOGGLE(x,y)  if(toggle_ ## x->get_active()) \
291                 rend_desc_.set_flags(rend_desc_.get_flags()|RendDesc:: y); \
292         else \
293                 rend_desc_.set_flags(rend_desc_.get_flags()&~RendDesc:: y)
294
295         DO_TOGGLE(px_aspect,PX_ASPECT);
296         DO_TOGGLE(px_width,PX_W);
297         DO_TOGGLE(px_height,PX_H);
298
299         DO_TOGGLE(im_aspect,IM_ASPECT);
300         DO_TOGGLE(im_width,IM_W);
301         DO_TOGGLE(im_height,IM_H);
302         DO_TOGGLE(im_span,IM_SPAN);
303
304 #undef DO_TOGGLE
305         
306         refresh();
307         signal_changed()();
308 }
309
310 void
311 Widget_RendDesc::on_height_changed()
312 {
313         if(update_lock)return;
314         UpdateLock lock(update_lock);
315         rend_desc_.set_h(round_to_int(adjustment_height.get_value()));
316         refresh();
317         signal_changed()();
318 }
319
320 void
321 Widget_RendDesc::on_phy_width_changed()
322 {
323         if(update_lock)return;
324         UpdateLock lock(update_lock);
325         rend_desc_.set_physical_w(INCHES2METERS(adjustment_phy_width.get_value()));
326         refresh();
327         signal_changed()();
328 }
329
330 void
331 Widget_RendDesc::on_phy_height_changed()
332 {
333         if(update_lock)return;
334         UpdateLock lock(update_lock);
335         rend_desc_.set_physical_h(INCHES2METERS(adjustment_phy_height.get_value()));
336         refresh();
337         signal_changed()();
338 }
339
340 void
341 Widget_RendDesc::on_xres_changed()
342 {
343         if(update_lock)return;
344         UpdateLock lock(update_lock);
345         rend_desc_.set_x_res(DPI2DPM(adjustment_xres.get_value()));
346         refresh();
347         signal_changed()();
348 }
349
350 void
351 Widget_RendDesc::on_yres_changed()
352 {
353         if(update_lock)return;
354         UpdateLock lock(update_lock);
355         rend_desc_.set_y_res(DPI2DPM(adjustment_yres.get_value()));
356         refresh();
357         signal_changed()();
358 }
359
360 void
361 Widget_RendDesc::on_start_time_changed()
362 {
363         if(update_lock)return;
364         UpdateLock lock(update_lock);
365         rend_desc_.set_time_start(entry_start_time->get_value());
366         refresh();
367         signal_changed()();
368 }
369
370 void
371 Widget_RendDesc::on_end_time_changed()
372 {
373         if(update_lock)return;
374         UpdateLock lock(update_lock);
375         rend_desc_.set_time_end(entry_end_time->get_value());
376         refresh();
377         signal_changed()();
378 }
379
380 /*
381 void
382 Widget_RendDesc::on_start_frame_changed()
383 {
384         if(update_lock)return;
385         UpdateLock lock(update_lock);
386         rend_desc_.set_frame_start((int)(adjustment_start_frame.get_value()+0.5));
387         refresh();
388         signal_changed()();
389 }
390
391 void
392 Widget_RendDesc::on_end_frame_changed()
393 {
394         if(update_lock)return;
395         UpdateLock lock(update_lock);
396         rend_desc_.set_frame_end((int)(adjustment_end_frame.get_value()+0.5));
397         refresh();
398         signal_changed()();
399 }
400 */
401
402 void
403 Widget_RendDesc::on_fps_changed()
404 {
405         if(update_lock)return;
406         UpdateLock lock(update_lock);
407         rend_desc_.set_frame_rate((int)(adjustment_fps.get_value()+0.5));
408         refresh();
409         signal_changed()();
410 }
411
412 void
413 Widget_RendDesc::on_tl_changed()
414 {
415         if(update_lock)return;
416         UpdateLock lock(update_lock);
417         rend_desc_.set_tl(entry_tl->get_value());
418         refresh();
419         signal_changed()();
420 }
421
422 void
423 Widget_RendDesc::on_br_changed()
424 {
425         if(update_lock)return;
426         UpdateLock lock(update_lock);
427         rend_desc_.set_br(entry_br->get_value());
428         refresh();
429         signal_changed()();
430 }
431
432 void
433 Widget_RendDesc::on_focus_changed()
434 {
435         if(update_lock)return;
436         UpdateLock lock(update_lock);
437         rend_desc_.set_focus(entry_focus->get_value());
438         refresh();
439         signal_changed()();
440 }
441
442 void
443 Widget_RendDesc::on_span_changed()
444 {
445         if(update_lock)return;
446         UpdateLock lock(update_lock);
447         rend_desc_.set_span(adjustment_span.get_value());
448         refresh();
449         signal_changed()();
450 }
451
452 void
453 Widget_RendDesc::disable_time_section()
454 {
455         time_frame->set_sensitive(false);
456         
457 /*
458         Gtk::Table::TableList &list=time_table->children();
459         Gtk::Table::TableList::iterator iter;
460         for(iter=list.begin();iter!=list.end();iter++)
461                 iter->get_widget()->set_sensitive(false);
462 */      
463 }
464         
465 void
466 Widget_RendDesc::enable_time_section()
467 {
468         time_frame->set_sensitive(true);
469
470 /*
471         Gtk::Table::TableList &list=time_table->children();
472         Gtk::Table::TableList::iterator iter;
473         for(iter=list.begin();iter!=list.end();iter++)
474                 iter->get_widget()->set_sensitive(true);
475
476 */
477 }