1 /* === S Y N F I G ========================================================= */
2 /*! \file gtkmm/renddesc.cpp
3 ** \brief Template File
8 ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
9 ** Copyright (c) 2007 Chris Moore
11 ** This package is free software; you can redistribute it and/or
12 ** modify it under the terms of the GNU General Public License as
13 ** published by the Free Software Foundation; either version 2 of
14 ** the License, or (at your option) any later version.
16 ** This package is distributed in the hope that it will be useful,
17 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 ** General Public License for more details.
22 /* ========================================================================= */
24 /* === H E A D E R S ======================================================= */
34 #include <gtkmm/label.h>
35 #include <gtkmm/frame.h>
36 #include <gtkmm/alignment.h>
37 #include <gtkmm/box.h>
39 #include <synfig/general.h>
40 //#include <gtkmm/separator.h>
46 /* === U S I N G =========================================================== */
50 using namespace synfig;
51 using namespace studio;
53 /* === M A C R O S ========================================================= */
55 #ifndef SYNFIG_MAX_PIXEL_WIDTH
56 #define SYNFIG_MAX_PIXEL_WIDTH (~(1<<31))
59 #ifndef SYNFIG_MAX_PIXEL_HEIGHT
60 #define SYNFIG_MAX_PIXEL_HEIGHT (~(1<<31))
64 #define DPM2DPI(x) ((x)/39.3700787402)
65 #define DPI2DPM(x) ((x)*39.3700787402)
69 #define METERS2INCHES(x) ((x)*39.3700787402)
70 #define INCHES2METERS(x) ((x)/39.3700787402)
73 /* === G L O B A L S ======================================================= */
75 /* === P R O C E D U R E S ================================================= */
77 /* === M E T H O D S ======================================================= */
79 Widget_RendDesc::Widget_RendDesc():
81 adjustment_width(1,1,SYNFIG_MAX_PIXEL_WIDTH),
82 adjustment_height(1,1,SYNFIG_MAX_PIXEL_HEIGHT),
83 adjustment_xres(0,0.0000000001,10000000),
84 adjustment_yres(0,0.0000000001,10000000),
85 adjustment_phy_width(0,0.0000000001,10000000),
86 adjustment_phy_height(0,0.0000000001,10000000),
87 adjustment_fps(0,0.0000000001,10000000),
88 adjustment_span(0,0.0000000001,10000000)
95 Gtk::Label *image_tab_label = manage(new Gtk::Label(_("Image")));
96 Gtk::Label *time_tab_label = manage(new Gtk::Label(_("Time")));
97 Gtk::Label *other_tab_label = manage(new Gtk::Label(_("Other")));
98 Gtk::Widget *imageTab = create_image_tab();
99 Gtk::Widget *timeTab = create_time_tab();
100 Gtk::Widget *otherTab = create_other_tab();
101 append_page(*imageTab, *image_tab_label);
102 append_page(*timeTab, *time_tab_label);
103 append_page(*otherTab, *other_tab_label);
106 Widget_RendDesc::~Widget_RendDesc()
110 void Widget_RendDesc::set_rend_desc(const synfig::RendDesc &rend_desc)
112 if(update_lock)return;
114 rend_desc_=rend_desc;
119 Widget_RendDesc::refresh()
121 UpdateLock lock(update_lock);
122 adjustment_width.set_value(rend_desc_.get_w());
123 adjustment_height.set_value(rend_desc_.get_h());
124 adjustment_phy_width.set_value(METERS2INCHES(rend_desc_.get_physical_w()));
125 adjustment_phy_height.set_value(METERS2INCHES(rend_desc_.get_physical_h()));
126 adjustment_xres.set_value(DPM2DPI(rend_desc_.get_x_res()));
127 adjustment_yres.set_value(DPM2DPI(rend_desc_.get_y_res()));
128 entry_start_time->set_fps(rend_desc_.get_frame_rate());
129 entry_start_time->set_value(rend_desc_.get_time_start());
130 entry_end_time->set_fps(rend_desc_.get_frame_rate());
131 entry_end_time->set_value(rend_desc_.get_time_end());
133 adjustment_fps.set_value(rend_desc_.get_frame_rate());
134 adjustment_span.set_value(rend_desc_.get_span());
135 entry_tl->set_value(rend_desc_.get_tl());
136 entry_br->set_value(rend_desc_.get_br());
138 toggle_px_aspect->set_active((bool)(rend_desc_.get_flags()&RendDesc::PX_ASPECT));
139 toggle_px_width->set_active((bool)(rend_desc_.get_flags()&RendDesc::PX_W));
140 toggle_px_height->set_active((bool)(rend_desc_.get_flags()&RendDesc::PX_H));
142 toggle_im_aspect->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_ASPECT));
143 toggle_im_width->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_W));
144 toggle_im_height->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_H));
145 toggle_im_span->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_SPAN));
148 void Widget_RendDesc::apply_rend_desc(const synfig::RendDesc &rend_desc)
150 set_rend_desc(rend_desc);
153 const synfig::RendDesc &
154 Widget_RendDesc::get_rend_desc()
160 Widget_RendDesc::on_width_changed()
162 if(update_lock)return;
163 UpdateLock lock(update_lock);
164 rend_desc_.set_w(round_to_int(adjustment_width.get_value()));
170 Widget_RendDesc::on_lock_changed()
172 if(update_lock)return;
173 UpdateLock lock(update_lock);
175 #define DO_TOGGLE(x,y) if(toggle_ ## x->get_active()) \
176 rend_desc_.set_flags(rend_desc_.get_flags()|RendDesc:: y); \
178 rend_desc_.set_flags(rend_desc_.get_flags()&~RendDesc:: y)
180 DO_TOGGLE(px_aspect,PX_ASPECT);
181 DO_TOGGLE(px_width,PX_W);
182 DO_TOGGLE(px_height,PX_H);
184 DO_TOGGLE(im_aspect,IM_ASPECT);
185 DO_TOGGLE(im_width,IM_W);
186 DO_TOGGLE(im_height,IM_H);
187 DO_TOGGLE(im_span,IM_SPAN);
196 Widget_RendDesc::on_height_changed()
198 if(update_lock)return;
199 UpdateLock lock(update_lock);
200 rend_desc_.set_h(round_to_int(adjustment_height.get_value()));
206 Widget_RendDesc::on_phy_width_changed()
208 if(update_lock)return;
209 UpdateLock lock(update_lock);
210 rend_desc_.set_physical_w(INCHES2METERS(adjustment_phy_width.get_value()));
216 Widget_RendDesc::on_phy_height_changed()
218 if(update_lock)return;
219 UpdateLock lock(update_lock);
220 rend_desc_.set_physical_h(INCHES2METERS(adjustment_phy_height.get_value()));
226 Widget_RendDesc::on_xres_changed()
228 if(update_lock)return;
229 UpdateLock lock(update_lock);
230 rend_desc_.set_x_res(DPI2DPM(adjustment_xres.get_value()));
236 Widget_RendDesc::on_yres_changed()
238 if(update_lock)return;
239 UpdateLock lock(update_lock);
240 rend_desc_.set_y_res(DPI2DPM(adjustment_yres.get_value()));
246 Widget_RendDesc::on_start_time_changed()
248 if(update_lock)return;
249 UpdateLock lock(update_lock);
250 rend_desc_.set_time_start(entry_start_time->get_value());
256 Widget_RendDesc::on_end_time_changed()
258 if(update_lock)return;
259 UpdateLock lock(update_lock);
260 rend_desc_.set_time_end(entry_end_time->get_value());
267 Widget_RendDesc::on_start_frame_changed()
269 if(update_lock)return;
270 UpdateLock lock(update_lock);
271 rend_desc_.set_frame_start((int)(adjustment_start_frame.get_value()+0.5));
277 Widget_RendDesc::on_end_frame_changed()
279 if(update_lock)return;
280 UpdateLock lock(update_lock);
281 rend_desc_.set_frame_end((int)(adjustment_end_frame.get_value()+0.5));
288 Widget_RendDesc::on_fps_changed()
290 if(update_lock)return;
291 UpdateLock lock(update_lock);
292 rend_desc_.set_frame_rate((int)(adjustment_fps.get_value()+0.5));
298 Widget_RendDesc::on_tl_changed()
300 if(update_lock)return;
301 UpdateLock lock(update_lock);
302 rend_desc_.set_tl(entry_tl->get_value());
308 Widget_RendDesc::on_br_changed()
310 if(update_lock)return;
311 UpdateLock lock(update_lock);
312 rend_desc_.set_br(entry_br->get_value());
318 Widget_RendDesc::on_span_changed()
320 if(update_lock)return;
321 UpdateLock lock(update_lock);
322 rend_desc_.set_span(adjustment_span.get_value());
328 Widget_RendDesc::disable_time_section()
330 time_frame->set_sensitive(false);
333 Gtk::Table::TableList &list=time_table->children();
334 Gtk::Table::TableList::iterator iter;
335 for(iter=list.begin();iter!=list.end();iter++)
336 iter->get_widget()->set_sensitive(false);
341 Widget_RendDesc::enable_time_section()
343 time_frame->set_sensitive(true);
346 Gtk::Table::TableList &list=time_table->children();
347 Gtk::Table::TableList::iterator iter;
348 for(iter=list.begin();iter!=list.end();iter++)
349 iter->get_widget()->set_sensitive(true);
355 Widget_RendDesc::create_widgets()
357 entry_width=manage(new Gtk::SpinButton(adjustment_width,1,0));
358 entry_width->set_alignment(1);
359 entry_height=manage(new Gtk::SpinButton(adjustment_height,1,0));
360 entry_height->set_alignment(1);
361 entry_xres=manage(new Gtk::SpinButton(adjustment_xres,0.5,1));
362 entry_xres->set_alignment(1);
363 entry_yres=manage(new Gtk::SpinButton(adjustment_yres,0.5,1));
364 entry_yres->set_alignment(1);
365 entry_phy_width=manage(new Gtk::SpinButton(adjustment_phy_width,0.25,2));
366 entry_phy_width->set_alignment(1);
367 entry_phy_height=manage(new Gtk::SpinButton(adjustment_phy_height,0.25,2));
368 entry_phy_height->set_alignment(1);
369 entry_span=manage(new Gtk::SpinButton(adjustment_span,0.1,4));
370 entry_span->set_alignment(1);
371 entry_tl=manage(new Widget_Vector());
372 entry_br=manage(new Widget_Vector());
373 entry_fps=manage(new Gtk::SpinButton(adjustment_fps,1,5));
374 entry_start_time=manage(new Widget_Time());
375 entry_end_time=manage(new Widget_Time());
376 //entry_start_frame=manage(new Gtk::SpinButton(adjustment_start_frame,1,0));
377 //entry_end_frame=manage(new Gtk::SpinButton(adjustment_end_frame,1,0));
378 toggle_px_aspect=manage(new Gtk::CheckButton(_("_Pixel Aspect"), true));
379 toggle_px_aspect->set_alignment(0, 0.5);
380 toggle_px_width=manage(new Gtk::CheckButton(_("Pi_xel Width"), true));
381 toggle_px_width->set_alignment(0, 0.5);
382 toggle_px_height=manage(new Gtk::CheckButton(_("Pix_el Height"), true));
383 toggle_px_height->set_alignment(0, 0.5);
384 toggle_im_aspect=manage(new Gtk::CheckButton(_("Image _Aspect"), true));
385 toggle_im_aspect->set_alignment(0, 0.5);
386 toggle_im_width=manage(new Gtk::CheckButton(_("Image _Width"), true));
387 toggle_im_width->set_alignment(0, 0.5);
388 toggle_im_height=manage(new Gtk::CheckButton(_("Image _Height"), true));
389 toggle_im_height->set_alignment(0, 0.5);
390 toggle_im_span=manage(new Gtk::CheckButton(_("Image _Span"), true));
391 toggle_im_span->set_alignment(0, 0.5);
395 Widget_RendDesc::connect_signals()
397 entry_width->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_width_changed));
398 entry_height->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_height_changed));
399 entry_xres->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_xres_changed));
400 entry_yres->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_yres_changed));
401 entry_phy_width->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_phy_width_changed));
402 entry_phy_height->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_phy_height_changed));
403 entry_span->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_span_changed));
404 entry_tl->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_tl_changed));
405 entry_br->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_br_changed));
406 entry_fps->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_fps_changed));
407 entry_start_time->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_start_time_changed));
408 entry_end_time->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_end_time_changed));
409 //entry_start_frame->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_start_frame_changed));
410 //entry_end_frame->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_end_frame_changed));
411 toggle_px_aspect->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
412 toggle_px_width->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
413 toggle_px_height->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
414 toggle_im_aspect->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
415 toggle_im_width->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
416 toggle_im_height->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
417 toggle_im_span->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
421 Widget_RendDesc::create_image_tab()
423 Gtk::Alignment *paddedPanel = manage(new Gtk::Alignment(0, 0, 1, 1));
424 paddedPanel->set_padding(12, 12, 12, 12);
426 Gtk::VBox *panelBox = manage(new Gtk::VBox(false, 12));
427 paddedPanel->add(*panelBox);
429 Gtk::Frame *imageFrame = manage(new Gtk::Frame(_("Image Size")));
430 imageFrame->set_shadow_type(Gtk::SHADOW_NONE);
431 ((Gtk::Label *) imageFrame->get_label_widget())->set_markup(_("<b>Image Size</b>"));
432 panelBox->pack_start(*imageFrame, false, false, 0);
434 Gtk::Alignment *tablePadding = manage(new Gtk::Alignment(0, 0, 1, 1));
435 tablePadding->set_padding(6, 0, 24, 0);
436 Gtk::Table *imageSizeTable = manage(new Gtk::Table(2, 6, false));
437 imageSizeTable->set_row_spacings(6);
438 imageSizeTable->set_col_spacings(12);
439 tablePadding->add(*imageSizeTable);
440 imageFrame->add(*tablePadding);
442 Gtk::Label *size_width_label = manage(new Gtk::Label(_("_Width"), 0, 0.5, true));
443 size_width_label->set_mnemonic_widget(*entry_width);
445 Gtk::Label *size_height_label = manage(new Gtk::Label(_("_Height"), 0, 0.5, true));
446 size_height_label->set_mnemonic_widget(*entry_height);
448 Gtk::Label *size_xres_label = manage(new Gtk::Label(_("_XRes"), 0, 0.5, true));
449 size_xres_label->set_mnemonic_widget(*entry_xres);
451 Gtk::Label *size_yres_label = manage(new Gtk::Label(_("_YRes"), 0, 0.5, true));
452 size_yres_label->set_mnemonic_widget(*entry_yres);
454 Gtk::Label *size_physwidth_label = manage(new Gtk::Label(_("_Physical Width"), 0, 0.5, true));
455 size_physwidth_label->set_mnemonic_widget(*entry_phy_width);
457 Gtk::Label *size_physheight_label = manage(new Gtk::Label(_("Phy_sical Height"), 0, 0.5, true));
458 size_physheight_label->set_mnemonic_widget(*entry_phy_height);
460 Gtk::Label *size_span = manage(new Gtk::Label(_("I_mage Span"), 0, 0.5, true));
461 size_span->set_mnemonic_widget(*entry_span);
463 imageSizeTable->attach(*size_width_label, 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
464 imageSizeTable->attach(*size_height_label, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
465 imageSizeTable->attach(*entry_width, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
466 imageSizeTable->attach(*entry_height, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
468 imageSizeTable->attach(*size_xres_label, 2, 3, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
469 imageSizeTable->attach(*size_yres_label, 2, 3, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
470 imageSizeTable->attach(*entry_xres, 3, 4, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
471 imageSizeTable->attach(*entry_yres, 3, 4, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
473 imageSizeTable->attach(*size_physwidth_label, 4, 5, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
474 imageSizeTable->attach(*size_physheight_label, 4, 5, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
475 imageSizeTable->attach(*entry_phy_width, 5, 6, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
476 imageSizeTable->attach(*entry_phy_height, 5, 6, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
478 imageSizeTable->attach(*size_span, 0, 1, 2, 3, Gtk::SHRINK|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
479 imageSizeTable->attach(*entry_span, 1, 2, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
481 Gtk::Frame *imageAreaFrame = manage(new Gtk::Frame(_("Image Area")));
482 imageAreaFrame->set_shadow_type(Gtk::SHADOW_NONE);
483 ((Gtk::Label *) imageAreaFrame->get_label_widget())->set_markup(_("<b>Image Area</b>"));
484 panelBox->pack_start(*imageAreaFrame, false, false, 0);
486 Gtk::Alignment *imageAreaPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
487 imageAreaPadding->set_padding(6, 0, 24, 0);
488 imageAreaFrame->add(*imageAreaPadding);
490 Gtk::Table *imageAreaTable = manage(new Gtk::Table(2, 2, false));
491 imageAreaTable->set_row_spacings(6);
492 imageAreaTable->set_col_spacings(12);
493 imageAreaPadding->add(*imageAreaTable);
495 Gtk::Label *imageAreaTopLeftLabel = manage(new Gtk::Label(_("_Top Left"), 0, 0.5, true));
496 imageAreaTopLeftLabel->set_mnemonic_widget(*entry_tl);
498 Gtk::Label *imageAreaBottomRightLabel = manage(new Gtk::Label(_("_Bottom Right"), 0, 0.5, true));
499 imageAreaBottomRightLabel->set_mnemonic_widget(*entry_br);
501 imageAreaTable->attach(*imageAreaTopLeftLabel, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
502 imageAreaTable->attach(*imageAreaBottomRightLabel, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
503 imageAreaTable->attach(*entry_tl, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
504 imageAreaTable->attach(*entry_br, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
506 paddedPanel->show_all();
511 Widget_RendDesc::create_time_tab()
513 Gtk::Alignment *paddedPanel = manage(new Gtk::Alignment(0, 0, 1, 1));
514 paddedPanel->set_padding(12, 12, 12, 12);
516 Gtk::VBox *panelBox = manage(new Gtk::VBox(false, 12)); // for future widgets
517 paddedPanel->add(*panelBox);
519 time_frame = manage(new Gtk::Frame(_("Time Settings")));
520 time_frame->set_shadow_type(Gtk::SHADOW_NONE);
521 ((Gtk::Label *) time_frame->get_label_widget())->set_markup(_("<b>Time Settings</b>"));
522 panelBox->pack_start(*time_frame, false, false, 0);
524 Gtk::Alignment *timeFramePadding = manage(new Gtk::Alignment(0, 0, 1, 1));
525 timeFramePadding->set_padding(6, 0, 24, 0);
526 time_frame->add(*timeFramePadding);
528 Gtk::Table *timeFrameTable = manage(new Gtk::Table(3, 2, false));
529 timeFrameTable->set_row_spacings(6);
530 timeFrameTable->set_col_spacings(12);
531 timeFramePadding->add(*timeFrameTable);
533 Gtk::Label *timeFPSLabel = manage(new Gtk::Label(_("_Frames per second"), 0, 0.5, true));
534 timeFPSLabel->set_mnemonic_widget(*entry_fps);
535 timeFrameTable->attach(*timeFPSLabel, 0, 1, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
536 timeFrameTable->attach(*entry_fps, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
538 Gtk::Label *timeStartLabel = manage(new Gtk::Label(_("_Start Time"), 0, 0.5, true));
539 timeStartLabel->set_mnemonic_widget(*entry_start_time);
540 timeFrameTable->attach(*timeStartLabel, 0, 1, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
541 timeFrameTable->attach(*entry_start_time, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
543 Gtk::Label *timeEndLabel = manage(new Gtk::Label(_("_End Time"), 0, 0.5, true));
544 timeEndLabel->set_mnemonic_widget(*entry_end_time);
545 timeFrameTable->attach(*timeEndLabel, 0, 1, 2, 3, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
546 timeFrameTable->attach(*entry_end_time, 1, 2, 2, 3, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
548 paddedPanel->show_all();
553 Widget_RendDesc::create_other_tab()
555 Gtk::Alignment *paddedPanel = manage(new Gtk::Alignment(0, 0, 1, 1));
556 paddedPanel->set_padding(12, 12, 12, 12);
558 Gtk::VBox *panelBox = manage(new Gtk::VBox(false, 12));
559 paddedPanel->add(*panelBox);
561 Gtk::Frame *lockFrame = manage(new Gtk::Frame(_("Locks and Links")));
562 lockFrame->set_shadow_type(Gtk::SHADOW_NONE);
563 ((Gtk::Label *) lockFrame->get_label_widget())->set_markup(_("<b>Locks and Links</b>"));
564 panelBox->pack_start(*lockFrame, false, false, 0);
566 Gtk::Alignment *lockPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
567 lockPadding->set_padding(6, 0, 24, 0);
568 lockFrame->add(*lockPadding);
570 Gtk::Table *lockTable = manage(new Gtk::Table(2, 4, false));
571 lockTable->set_row_spacings(6);
572 lockTable->set_col_spacings(12);
573 lockPadding->add(*lockTable);
575 lockTable->attach(*toggle_im_width, 0, 1, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
576 lockTable->attach(*toggle_im_height, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
577 lockTable->attach(*toggle_im_aspect, 2, 3, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
578 lockTable->attach(*toggle_im_span, 3, 4, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
580 lockTable->attach(*toggle_px_width, 0, 1, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
581 lockTable->attach(*toggle_px_height, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
582 lockTable->attach(*toggle_px_aspect, 2, 3, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
584 paddedPanel->show_all();