my log
[synfig.git] / synfig-studio / trunk / src / gtkmm / canvasoptions.cpp
1 /* === S Y N F I G ========================================================= */
2 /*!     \file canvasoptions.cpp
3 **      \brief Template File
4 **
5 **      $Id: canvasoptions.cpp,v 1.1.1.1 2005/01/07 03:34:35 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 "canvasoptions.h"
32 #include <gtkmm/frame.h>
33 #include <gtkmm/table.h>
34 #include <gtkmm/label.h>
35 #include <gtkmm/notebook.h>
36 #include "canvasview.h"
37 #include "workarea.h"
38
39 #endif
40
41 /* === U S I N G =========================================================== */
42
43 using namespace std;
44 using namespace etl;
45 using namespace synfig;
46 using namespace studio;
47
48 /* === M A C R O S ========================================================= */
49
50 /* === G L O B A L S ======================================================= */
51
52 /* === P R O C E D U R E S ================================================= */
53
54 /* === M E T H O D S ======================================================= */
55
56 CanvasOptions::CanvasOptions(loose_handle<studio::CanvasView> canvas_view):
57         Gtk::Dialog(_("Canvas Options"),*canvas_view,false,true),
58         canvas_view_(canvas_view),
59         toggle_grid_snap(_("Grid Snap")),
60         toggle_grid_show(_("Grid Show")),
61         toggle_time_snap(_("Snap-To-Frame"))
62 {
63         vector_grid_size.set_canvas(canvas_view->get_canvas());
64         
65         Gtk::Notebook *notebook=manage(new class Gtk::Notebook());
66
67         toggle_grid_snap.signal_toggled().connect(sigc::mem_fun(*this, &studio::CanvasOptions::on_grid_snap_toggle));
68         toggle_grid_show.signal_toggled().connect(sigc::mem_fun(*this, &studio::CanvasOptions::on_grid_show_toggle));
69
70         Gtk::Table *grid_page=manage(new class Gtk::Table(2,2,false));
71         notebook->append_page(*grid_page,_("Grids"));
72         grid_page->attach(vector_grid_size, 0, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
73         grid_page->attach(toggle_grid_snap, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
74         grid_page->attach(toggle_grid_show, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
75         
76         Gtk::Table *time_page=manage(new class Gtk::Table(2,2,false));
77         notebook->append_page(*time_page,_("Time"));
78         time_page->attach(toggle_time_snap, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
79         
80         Gtk::Table *unit_page=manage(new class Gtk::Table(2,2,false));
81         notebook->append_page(*unit_page,_("Units"));
82         unit_page->attach(*manage(new Gtk::Label(_("Not yet implemented"))), 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);   
83         
84         
85         Gtk::Button *ok_button(manage(new class Gtk::Button(Gtk::StockID("gtk-ok"))));
86         ok_button->show();
87         add_action_widget(*ok_button,2);
88         ok_button->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasOptions::on_ok_pressed));
89
90         Gtk::Button *apply_button(manage(new class Gtk::Button(Gtk::StockID("gtk-apply"))));
91         apply_button->show();
92         add_action_widget(*apply_button,1);
93         apply_button->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasOptions::on_apply_pressed));
94
95         Gtk::Button *cancel_button(manage(new class Gtk::Button(Gtk::StockID("gtk-close"))));
96         cancel_button->show();
97         add_action_widget(*cancel_button,0);
98         cancel_button->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasOptions::on_cancel_pressed));
99
100         //set_default_response(1);
101         
102         
103         get_vbox()->pack_start(*notebook);
104         notebook->show_all();
105         
106         signal_show().connect(sigc::mem_fun(*this, &studio::CanvasOptions::refresh));
107
108         vector_grid_size.set_digits(5);
109         
110         update_title();
111 }
112
113 CanvasOptions::~CanvasOptions()
114 {
115 }
116
117 void
118 CanvasOptions::update_title()
119 {
120         set_title(_("Options")+String(" - ")+canvas_view_->get_canvas()->get_name());
121 }
122
123 void
124 CanvasOptions::refresh()
125 {
126         if(canvas_view_->work_area->grid_status())
127                 toggle_grid_show.set_active(true);
128         else
129                 toggle_grid_show.set_active(false);
130                 
131         if(canvas_view_->work_area->get_grid_snap())
132                 toggle_grid_snap.set_active(true);
133         else
134                 toggle_grid_snap.set_active(false);
135         
136         vector_grid_size.set_value(canvas_view_->work_area->get_grid_size());
137         
138         tooltips.set_tip(toggle_time_snap,_("Not yet implemented"));
139         toggle_time_snap.set_sensitive(false);
140
141         update_title();
142 }
143
144 void
145 CanvasOptions::on_grid_snap_toggle()
146 {
147 }
148
149 void
150 CanvasOptions::on_grid_show_toggle()
151 {
152 }
153
154 void
155 CanvasOptions::on_apply_pressed()
156 {
157         if(toggle_grid_snap.get_active())
158                 canvas_view_->work_area->enable_grid_snap();
159         else
160                 canvas_view_->work_area->disable_grid_snap();
161                 
162         if(toggle_grid_show.get_active())
163                 canvas_view_->work_area->enable_grid();
164         else
165                 canvas_view_->work_area->disable_grid();
166
167         canvas_view_->work_area->set_grid_size(vector_grid_size.get_value());
168 }
169
170 void
171 CanvasOptions::on_ok_pressed()
172 {
173         on_apply_pressed();
174         hide();
175 }
176
177 void
178 CanvasOptions::on_cancel_pressed()
179 {
180         refresh();
181         hide();
182 }