Author: Yu Chen <jco...@gmail.com>
Date:   Wed Mar 21 20:27:07 2012 +0800

When user finish zoom level customize by hiting enter, the entry text will auto 
formated by adding a %.

---

 synfig-studio/src/gui/preview.cpp |   27 +++++++++++++++++++++++----
 synfig-studio/src/gui/preview.h   |    1 +
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/synfig-studio/src/gui/preview.cpp 
b/synfig-studio/src/gui/preview.cpp
index 150ca65..8c239f5 100644
--- a/synfig-studio/src/gui/preview.cpp
+++ b/synfig-studio/src/gui/preview.cpp
@@ -455,9 +455,13 @@ Widget_Preview::Widget_Preview():
        row = *(factor_refTreeModel->append());
        row[factors.factor_id] = "5";
        row[factors.factor_value] = "Fit";
-       //set 100% as default zoom factor
        zoom_preview.set_text_column(factors.factor_value);
-       zoom_preview.get_entry()->set_text("100%");
+
+       Gtk::Entry* entry = zoom_preview.get_entry();
+       entry->set_text("100%"); //default zoom level
+       entry->set_icon_from_stock(Gtk::StockID("synfig-zoom"));
+       entry->signal_activate().connect(sigc::mem_fun(*this, 
&Widget_Preview::on_zoom_entry_activated));
+
        //set the zoom widget width
        zoom_preview.set_size_request(100, -1);
 
@@ -612,8 +616,6 @@ bool studio::Widget_Preview::redraw(GdkEventExpose */*heh*/)
        int nw, nh;
 
        Gtk::Entry* entry = zoom_preview.get_entry();
-       entry->set_icon_from_stock(Gtk::StockID("synfig-zoom"));
-
        Glib::ustring text = entry->get_text();
        locale_from_utf8 (text);
        const char *c = text.c_str();
@@ -1032,6 +1034,23 @@ void studio::Widget_Preview::eraseall()
 }
 
 
+void Widget_Preview::on_zoom_entry_activated()
+{
+       Gtk::Entry* entry = zoom_preview.get_entry();
+       Glib::ustring text = entry->get_text();
+       locale_from_utf8 (text);
+       const std::string c = text.c_str();
+
+        if (text == "Fit" || text == "fit")
+       {
+               entry->set_text("Fit");
+       }
+
+       else
+       {
+               entry->set_text(c + "%");
+       }
+}
 //shortcut keys TODO: customizable shortcut keys would be awesome.
 
 bool studio::Widget_Preview::on_key_pressed(GdkEventKey *ev)
diff --git a/synfig-studio/src/gui/preview.h b/synfig-studio/src/gui/preview.h
index 5431efb..5db6af7 100644
--- a/synfig-studio/src/gui/preview.h
+++ b/synfig-studio/src/gui/preview.h
@@ -285,6 +285,7 @@ private:
 
        Gtk::Button *play_pausebutton;
        bool on_key_pressed(GdkEventKey*);
+       void on_zoom_entry_activated();
 };
 
 }; // END of namespace studio


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to